Katana Plug-in APIs 0.1

FnDefaultAttributeProducerPlugin.h

00001 #ifndef FnDefaultAttributeProducerPlugin_H
00002 #define FnDefaultAttributeProducerPlugin_H
00003 
00004 #include <string>
00005 #include <vector>
00006 
00007 #include <FnAttribute/FnAttribute.h>
00008 
00009 #include <FnDefaultAttributeProducer/FnDefaultAttributeProducerAPI.h>
00010 #include <FnDefaultAttributeProducer/plugin/ns.h>
00011 #include <FnDefaultAttributeProducer/suite/FnDefaultAttributeProducerSuite.h>
00012 
00013 #include <FnGeolib/op/FnGeolibCookInterface.h>
00014 #include <FnGeolib/suite/FnGeolibCookInterfaceSuite.h>
00015 
00016 #include <FnPluginSystem/FnPlugin.h>
00017 #include <FnPluginSystem/FnPluginSystem.h>
00018 
00019 
00020 FNDEFAULTATTRIBUTEPRODUCER_NAMESPACE_ENTER
00021 {
00046     class FNDEFAULTATTRIBUTEPRODUCER_API DefaultAttributeProducer
00047     {
00048     public:
00050         static FnPlugStatus setHost(FnPluginHost *host);
00051         static FnPluginHost *getHost();
00052 
00053         static void flush();
00054 
00055         static FnDefaultAttributeProducerSuite_v1 createSuite(
00056                 FnAttributeHandle (*cook)(
00057                          FnGeolibCookInterfaceHandle cookInterfaceHandle,
00058                          FnGeolibCookInterfaceSuite_v1 *cookInterfaceSuite,
00059                          const char *attrRoot, int32_t stringlen1,
00060                          const char *inputLocationPath, int32_t stringlen2,
00061                          int32_t inputIndex,
00062                          uint8_t * didAbort));
00063 
00064         typedef FnAttribute::GroupAttribute (*CookFunc)(
00065                 const FnGeolibOp::GeolibCookInterface & cookInterface,
00066                 const std::string & attrRoot,
00067                 const std::string & inputLocationPath,
00068                 int32_t inputIndex);
00069 
00070         static FnAttribute::GroupAttribute callCook(
00071             CookFunc cookFunc,
00072             FnGeolibCookInterfaceHandle cookInterfaceHandle,
00073             FnGeolibCookInterfaceSuite_v1 *cookInterfaceSuite,
00074             const char *attrRoot, int32_t stringlen1,
00075             const char *inputLocationPath, int32_t stringlen2,
00076             int32_t inputIndex,
00077             uint8_t * didAbort);
00078 
00079         static unsigned int _apiVersion;
00080         static const char* _apiName;
00081 
00082     private:
00083         static FnPluginHost *_host;
00084 
00085         // dap instances are never made (just a derivable placeholder for
00086         // static funcs).
00087         DefaultAttributeProducer();
00088         ~DefaultAttributeProducer();
00090     };
00091 
00093 }
00094 FNDEFAULTATTRIBUTEPRODUCER_NAMESPACE_EXIT
00095 
00096 
00098 
00099 // Plugin Registering Macro.
00100 
00101 #define DEFINE_DEFAULTATTRIBUTEPRODUCER(DAP_CLASS)                      \
00102     FnAttributeHandle DAP_CLASS##_cook(                                 \
00103         FnGeolibCookInterfaceHandle cookInterfaceHandle,                \
00104         FnGeolibCookInterfaceSuite_v1 *cookInterfaceSuite,              \
00105         const char *attrRoot, int32_t stringlen1,                       \
00106         const char *inputLocationPath, int32_t stringlen2,              \
00107         int32_t inputIndex,                                             \
00108         uint8_t * didAbort)                                             \
00109     {                                                                   \
00110         return FNDEFAULTATTRIBUTEPRODUCER_NAMESPACE::DefaultAttributeProducer::callCook(      \
00111             DAP_CLASS::cook,                                            \
00112             cookInterfaceHandle, cookInterfaceSuite,                    \
00113             attrRoot, stringlen1, inputLocationPath, stringlen2,        \
00114             inputIndex, didAbort).getRetainedHandle();                  \
00115     }                                                                   \
00116                                                                         \
00117     FnDefaultAttributeProducerSuite_v1 DAP_CLASS##_suite =              \
00118         FNDEFAULTATTRIBUTEPRODUCER_NAMESPACE::DefaultAttributeProducer::createSuite(   \
00119             DAP_CLASS##_cook);                                          \
00120                                                                         \
00121     const void* DAP_CLASS##_getSuite()                                  \
00122     {                                                                   \
00123         return &DAP_CLASS##_suite;                                      \
00124     }
00125 
00126 #define DEFINE_DEFAULTATTRIBUTEPRODUCER_PLUGIN(DAP_CLASS)               \
00127                                                                         \
00128     FnPlugin DAP_CLASS##_plugin;                                        \
00129                                                                         \
00130     DEFINE_DEFAULTATTRIBUTEPRODUCER(DAP_CLASS)
00131 
00133 
00134 #endif // FnDefaultAttributeProducerPlugin_H
 All Classes Functions Variables Typedefs Enumerations Enumerator