TransformFactory.h [plain text]
#ifndef __TRANSFORM_FACTORY__
#define __TRANSFORM_FACTORY__
#include "Transform.h"
#include "LinkedList.h"
class TransformFactory
{
protected:
static void Register(TransformFactory* tf);
static dispatch_once_t gSetup;
static dispatch_queue_t gRegisteredQueue;
static CFMutableDictionaryRef gRegistered;
CFStringRef mCFType;
static TransformFactory* FindTransformFactoryByType(CFStringRef type);
static void RegisterTransforms();
static void RegisterTransform(TransformFactory* tf, CFStringRef cfname = NULL);
static void Setup(void *);
private:
static bool RegisterTransform_prelocked(TransformFactory* tf, CFStringRef name);
public:
static SecTransformRef MakeTransformWithType(CFStringRef type, CFErrorRef* baseError);
TransformFactory(CFStringRef type, bool registerGlobally = false, CFStringRef cftype = NULL);
static void Setup();
virtual CFTypeRef Make() = 0;
CFStringRef GetTypename() { return mCFType; };
};
#endif