use std::os::raw::c_void;
use base::{CFAllocatorRef, CFTypeRef, CFIndex, CFRange, CFTypeID, Boolean};
use string::CFStringRef;
use dictionary::CFDictionaryRef;
use string::CFMutableStringRef;
#[repr(C)]
pub struct __CFAttributedString(c_void);
pub type CFAttributedStringRef = *const __CFAttributedString;
pub type CFMutableAttributedStringRef = *mut __CFAttributedString;
extern {
pub fn CFAttributedStringCreate(allocator: CFAllocatorRef, str: CFStringRef, attributes: CFDictionaryRef) -> CFAttributedStringRef;
pub fn CFAttributedStringCreateCopy(alloc: CFAllocatorRef, aStr: CFAttributedStringRef) -> CFAttributedStringRef;
pub fn CFAttributedStringCreateWithSubstring(alloc: CFAllocatorRef, aStr: CFAttributedStringRef, range: CFRange) -> CFAttributedStringRef;
pub fn CFAttributedStringGetLength(astr: CFAttributedStringRef) -> CFIndex;
pub fn CFAttributedStringGetString(aStr: CFAttributedStringRef) -> CFStringRef;
pub fn CFAttributedStringGetAttribute(aStr: CFAttributedStringRef, loc: CFIndex, attrName: CFStringRef, effectiveRange: *mut CFRange) -> CFTypeRef;
pub fn CFAttributedStringGetAttributes(aStr: CFAttributedStringRef, loc: CFIndex, effectiveRange: *mut CFRange) -> CFDictionaryRef;
pub fn CFAttributedStringGetAttributeAndLongestEffectiveRange(aStr: CFAttributedStringRef, loc: CFIndex, attrName: CFStringRef, inRange: CFRange, longestEffectiveRange: *mut CFRange) -> CFTypeRef;
pub fn CFAttributedStringGetAttributesAndLongestEffectiveRange(aStr: CFAttributedStringRef, loc: CFIndex, inRange: CFRange, longestEffectiveRange: *mut CFRange) -> CFDictionaryRef;
pub fn CFAttributedStringGetTypeID() -> CFTypeID;
pub fn CFAttributedStringCreateMutable(allocator: CFAllocatorRef, max_length: CFIndex) -> CFMutableAttributedStringRef;
pub fn CFAttributedStringCreateMutableCopy(allocator: CFAllocatorRef, max_length: CFIndex, astr: CFAttributedStringRef) -> CFMutableAttributedStringRef;
pub fn CFAttributedStringBeginEditing(aStr: CFMutableAttributedStringRef);
pub fn CFAttributedStringEndEditing(aStr: CFMutableAttributedStringRef);
pub fn CFAttributedStringGetMutableString(aStr: CFMutableAttributedStringRef) -> CFMutableStringRef;
pub fn CFAttributedStringRemoveAttribute(aStr: CFMutableAttributedStringRef, range: CFRange, attrName: CFStringRef);
pub fn CFAttributedStringReplaceString(aStr: CFMutableAttributedStringRef, range: CFRange, replacement: CFStringRef);
pub fn CFAttributedStringReplaceAttributedString(aStr: CFMutableAttributedStringRef, range: CFRange, replacement: CFAttributedStringRef);
pub fn CFAttributedStringSetAttribute(aStr: CFMutableAttributedStringRef, range: CFRange, attrName: CFStringRef, value: CFTypeRef);
pub fn CFAttributedStringSetAttributes(aStr: CFMutableAttributedStringRef, range: CFRange, replacement: CFDictionaryRef, clearOtherAttributes: Boolean);
}