Viewing file: factory.h (1.52 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#ifndef NETSNMP_FACTORY_H #define NETSNMP_FACTORY_H
#ifdef __cplusplus extern "C" { #endif
typedef void * (netsnmp_factory_produce_f)(void); typedef int (netsnmp_factory_produce_noalloc_f)(void *);
typedef struct netsnmp_factory_s { /* * a string describing the product the factory creates */ const char *product;
/* * a function to create an object in newly allcoated memory */ netsnmp_factory_produce_f *produce;
/* * a function to create an object in previously allcoated memory */ netsnmp_factory_produce_noalloc_f *produce_noalloc;
} netsnmp_factory;
/* * init factory registry */ void netsnmp_factory_init(void);
/* * register a factory type */ int netsnmp_factory_register(netsnmp_factory *f);
/* * get a factory */ netsnmp_factory* netsnmp_factory_get(const char* product);
/* * ask a factory to produce an object */ void * netsnmp_factory_produce(const char* product);
/* * ask a factory to produce an object in the provided memory */ int netsnmp_factory_produce_noalloc(const char *product, void *memory);
/* * factory return codes */ enum { FACTORY_NOERROR = 0, FACTORY_EXISTS, FACTORY_NOTFOUND, FACTORY_NOMEMORY, FACTORY_GENERR, FACTORY_MAXIMUM_ERROR };
#ifdef __cplusplus } #endif
#endif /* NETSNMP_FACTORY_H */
|