41 #if !defined(__CACFNumber_h__)
42 #define __CACFNumber_h__
48 #if !defined(__COREAUDIO_USE_FLAT_INCLUDES__)
49 #include <CoreAudio/CoreAudioTypes.h>
50 #include <CoreFoundation/CFNumber.h>
52 #include <CoreAudioTypes.h>
64 CACFBoolean(CFBooleanRef inCFBoolean,
bool inWillRelease =
true) : mCFBoolean(inCFBoolean), mWillRelease(inWillRelease) {}
65 CACFBoolean(
bool inValue) : mCFBoolean(inValue ? kCFBooleanTrue : kCFBooleanFalse), mWillRelease(true) { Retain(); }
66 ~CACFBoolean() { Release(); }
67 CACFBoolean(
const CACFBoolean& inBoolean) : mCFBoolean(inBoolean.mCFBoolean), mWillRelease(inBoolean.mWillRelease) { Retain(); }
68 CACFBoolean& operator=(
const CACFBoolean& inBoolean) { Release(); mCFBoolean = inBoolean.mCFBoolean; mWillRelease = inBoolean.mWillRelease; Retain();
return *
this; }
69 CACFBoolean& operator=(CFBooleanRef inCFBoolean) { Release(); mCFBoolean = inCFBoolean; mWillRelease =
true;
return *
this; }
72 void Retain() {
if(mWillRelease && (mCFBoolean != NULL)) { CFRetain(mCFBoolean); } }
73 void Release() {
if(mWillRelease && (mCFBoolean != NULL)) { CFRelease(mCFBoolean); } }
75 CFBooleanRef mCFBoolean;
80 void AllowRelease() { mWillRelease =
true; }
81 void DontAllowRelease() { mWillRelease =
false; }
82 bool IsValid() {
return mCFBoolean != NULL; }
86 CFBooleanRef GetCFBoolean()
const {
return mCFBoolean; }
87 CFBooleanRef CopyCFBoolean()
const {
if(mCFBoolean != NULL) { CFRetain(mCFBoolean); }
return mCFBoolean; }
89 bool GetBoolean()
const {
bool theAnswer =
false;
if(mCFBoolean != NULL) { theAnswer = CFEqual(mCFBoolean, kCFBooleanTrue); }
return theAnswer; }
101 CACFNumber(CFNumberRef inCFNumber,
bool inWillRelease =
true) : mCFNumber(inCFNumber), mWillRelease(inWillRelease) {}
102 CACFNumber(SInt32 inValue) : mCFNumber(CFNumberCreate(NULL, kCFNumberSInt32Type, &inValue)), mWillRelease(true) {}
103 CACFNumber(UInt32 inValue) : mCFNumber(CFNumberCreate(NULL, kCFNumberSInt32Type, &inValue)), mWillRelease(true) {}
104 CACFNumber(SInt64 inValue) : mCFNumber(CFNumberCreate(NULL, kCFNumberSInt64Type, &inValue)), mWillRelease(true) {}
105 CACFNumber(UInt64 inValue) : mCFNumber(CFNumberCreate(NULL, kCFNumberSInt64Type, &inValue)), mWillRelease(true) {}
106 CACFNumber(Float32 inValue) : mCFNumber(CFNumberCreate(NULL, kCFNumberFloat32Type, &inValue)), mWillRelease(true) {}
107 CACFNumber(Float64 inValue) : mCFNumber(CFNumberCreate(NULL, kCFNumberFloat64Type, &inValue)), mWillRelease(true) {}
108 ~CACFNumber() { Release(); }
109 CACFNumber(
const CACFNumber& inNumber) : mCFNumber(inNumber.mCFNumber), mWillRelease(inNumber.mWillRelease) { Retain(); }
110 CACFNumber& operator=(
const CACFNumber& inNumber) { Release(); mCFNumber = inNumber.mCFNumber; mWillRelease = inNumber.mWillRelease; Retain();
return *
this; }
111 CACFNumber& operator=(CFNumberRef inCFNumber) { Release(); mCFNumber = inCFNumber; mWillRelease =
true;
return *
this; }
114 void Retain() {
if(mWillRelease && (mCFNumber != NULL)) { CFRetain(mCFNumber); } }
115 void Release() {
if(mWillRelease && (mCFNumber != NULL)) { CFRelease(mCFNumber); } }
117 CFNumberRef mCFNumber;
122 void AllowRelease() { mWillRelease =
true; }
123 void DontAllowRelease() { mWillRelease =
false; }
124 bool IsValid() {
return mCFNumber != NULL; }
128 CFNumberRef GetCFNumber()
const {
return mCFNumber; }
129 CFNumberRef CopyCFNumber()
const {
if(mCFNumber != NULL) { CFRetain(mCFNumber); }
return mCFNumber; }
131 SInt8 GetSInt8()
const { SInt8 theAnswer = 0;
if(mCFNumber != NULL) { CFNumberGetValue(mCFNumber, kCFNumberSInt8Type, &theAnswer); }
return theAnswer; }
132 SInt32 GetSInt32()
const { SInt32 theAnswer = 0;
if(mCFNumber != NULL) { CFNumberGetValue(mCFNumber, kCFNumberSInt32Type, &theAnswer); }
return theAnswer; }
133 UInt32 GetUInt32()
const { UInt32 theAnswer = 0;
if(mCFNumber != NULL) { CFNumberGetValue(mCFNumber, kCFNumberSInt32Type, &theAnswer); }
return theAnswer; }
134 Float32 GetFloat32()
const { Float32 theAnswer = 0.0f;
if(mCFNumber != NULL) { CFNumberGetValue(mCFNumber, kCFNumberFloat32Type, &theAnswer); }
return theAnswer; }
135 Float32 GetFixed32()
const;
136 Float64 GetFixed64()
const;
137 SInt64 GetSInt64()
const { SInt64 theAnswer = 0;
if(mCFNumber != NULL) { CFNumberGetValue(mCFNumber, kCFNumberSInt64Type, &theAnswer); }
return theAnswer; }