CoreFoundationBasics.h [plain text]
#ifndef __CORE_FOUNDATION_BASICS__
#define __CORE_FOUNDATION_BASICS__
#include <CoreFoundation/CFRuntime.h>
#include <string>
#include "LinkedList.h"
void CoreFoundationObjectsRegister();
extern const CFStringRef gInternalCFObjectName;
extern const CFStringRef gInternalProtectedCFObjectName;
struct CoreFoundationHolder;
class CoreFoundationObject
{
private:
CoreFoundationHolder* mHolder;
protected:
CoreFoundationObject(CFStringRef objectType);
protected:
CFStringRef mObjectType;
public:
virtual ~CoreFoundationObject();
virtual Boolean Equal(const CoreFoundationObject* object);
virtual CFHashCode Hash();
virtual std::string FormattingDescription(CFDictionaryRef options);
virtual std::string DebugDescription();
virtual void Finalize();
static void RegisterObject(CFStringRef name, bool protectFromDelete);
static CFTypeID FindObjectType(CFStringRef name);
static LinkedListHeader* GetClassRegistryList();
void SetHolder(CoreFoundationHolder* holder) {mHolder = holder;}
CFTypeRef GetCFObject() {return mHolder;}
CFStringRef GetTypeAsCFString();
};
struct CoreFoundationHolder
{
CFRuntimeBase mRuntimeBase;
CoreFoundationObject* mObject;
static CoreFoundationHolder* MakeHolder(CFStringRef name, CoreFoundationObject* object);
static CoreFoundationObject* ObjectFromCFType(CFTypeRef cfRef);
};
#endif