X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/80e2389990082500d76eb566d4946be3e786c3ef..d8f41ccd20de16f8ebe2ccc84d47bf1cb2b26bbb:/Security/libsecurity_transform/lib/TransformFactory.h diff --git a/Security/libsecurity_transform/lib/TransformFactory.h b/Security/libsecurity_transform/lib/TransformFactory.h new file mode 100644 index 00000000..2e9ec455 --- /dev/null +++ b/Security/libsecurity_transform/lib/TransformFactory.h @@ -0,0 +1,36 @@ +#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