version 1.2, 2015/04/20 18:10:14
|
version 1.3, 2015/04/20 18:19:56
|
|
|
#include <common.h> | #include <common.h> |
#include <base/stringarray.h> | #include <base/stringarray.h> |
#include <base/batch.h> | #include <base/batch.h> |
|
#include <pal/dir.h> |
| |
BEGIN_EXTERNC | BEGIN_EXTERNC |
| |
|
|
} | } |
ProvInterface; | ProvInterface; |
| |
|
typedef enum _ProvRegType |
|
{ |
|
PROVREG_DEFAULT = 0, |
|
PROVREG_INDICATION = 1 |
|
} ProvRegType; |
|
|
typedef enum _ProvHosting | typedef enum _ProvHosting |
{ | { |
PROV_HOSTING_INPROC = 0, | PROV_HOSTING_INPROC = 0, |
|
|
const char* user; | const char* user; |
| |
/* Namespace this provider serves */ | /* Namespace this provider serves */ |
const MI_Char* nameSpace; |
const ZChar* nameSpace; |
|
unsigned int nameSpaceHash; |
| |
/* Class this provider supplies */ | /* Class this provider supplies */ |
const MI_Char* className; |
const ZChar* className; |
|
unsigned int classNameHash; |
| |
/* The name library of the library containing provider */ | /* The name library of the library containing provider */ |
const char* libraryName; | const char* libraryName; |
|
|
|
#if defined(CONFIG_ENABLE_PREEXEC) |
|
|
|
/* Name of program to be executed before invoking this provider */ |
|
const char* preexec; |
|
|
|
#endif /* defined(CONFIG_ENABLE_PREEXEC) */ |
|
|
|
/* The type of the registered class */ |
|
ProvRegType regType; |
|
|
|
/* 1 if lifetime of instance is that of context, |
|
* 0 otherwise |
|
*/ |
|
int instanceLifetimeContext; |
} | } |
ProvRegEntry; | ProvRegEntry; |
| |
|
|
ProvRegEntry* head; | ProvRegEntry* head; |
ProvRegEntry* tail; | ProvRegEntry* tail; |
struct _ProvRegNamespaceNode* namespaces; | struct _ProvRegNamespaceNode* namespaces; |
|
struct _ProvRegNamespaceNode* namespacesForExtraClasses; |
} | } |
ProvReg; | ProvReg; |
| |
|
/* Initialize ProvReg strucutre from given directory */ |
|
MI_Result ProvReg_Init( |
|
_Inout_ ProvReg* self, |
|
_In_z_ const char* directory); |
| |
|
/* Initialize ProvReg strucutre from omiregister directory */ |
MI_Result ProvReg_Init2( | MI_Result ProvReg_Init2( |
ProvReg* self); |
_Inout_ ProvReg* self); |
| |
void ProvReg_Destroy( | void ProvReg_Destroy( |
ProvReg* self); | ProvReg* self); |
| |
const ProvRegEntry* ProvReg_FindProviderForClass( | const ProvRegEntry* ProvReg_FindProviderForClass( |
ProvReg* self, | ProvReg* self, |
const MI_Char* nameSpace, |
const ZChar* nameSpace, |
const MI_Char* className); |
const ZChar* className, |
|
MI_Result *findError); |
| |
/* returns ok or not-found; baseClass will be null if no base class exist */ | /* returns ok or not-found; baseClass will be null if no base class exist */ |
MI_EXPORT MI_Result ProvReg_GetDirectBaseClass( | MI_EXPORT MI_Result ProvReg_GetDirectBaseClass( |
ProvReg* self, | ProvReg* self, |
const MI_Char* nameSpace, |
const ZChar* nameSpace, |
const MI_Char* className, |
const ZChar* className, |
const MI_Char** baseClass); |
const ZChar** baseClass, |
|
MI_Boolean extraClass); |
| |
/* enumerates classes derived classes: | /* enumerates classes derived classes: |
- if deep == false and className == null, returns all root classes | - if deep == false and className == null, returns all root classes |
|
|
*/ | */ |
MI_EXPORT MI_Result ProvReg_BeginClasses( | MI_EXPORT MI_Result ProvReg_BeginClasses( |
ProvReg* self, | ProvReg* self, |
const MI_Char* nameSpace, |
const ZChar* nameSpace, |
const MI_Char* className, |
const ZChar* className, |
MI_Boolean deep, | MI_Boolean deep, |
ProvRegPosition* pos); |
ProvRegPosition* pos, |
|
MI_Boolean extraClass); |
| |
MI_EXPORT MI_Result ProvReg_NextClass( | MI_EXPORT MI_Result ProvReg_NextClass( |
ProvRegPosition* pos, | ProvRegPosition* pos, |
const MI_Char** className, |
const ZChar** className, |
MI_Boolean* done); | MI_Boolean* done); |
| |
MI_EXPORT MI_Result ProvReg_EndClasses( | MI_EXPORT MI_Result ProvReg_EndClasses( |
|
|
*/ | */ |
MI_EXPORT MI_Result ProvReg_BeginAssocClasses( | MI_EXPORT MI_Result ProvReg_BeginAssocClasses( |
ProvReg* self, | ProvReg* self, |
const MI_Char* nameSpace, |
const ZChar* nameSpace, |
const MI_Char* className, |
const ZChar* className, |
const MI_Char* assocClassName, /* can be NULL */ |
const ZChar* assocClassName, /* can be NULL */ |
const MI_Char* resultClassName, /* can be NULL */ |
const ZChar* resultClassName, /* can be NULL */ |
ProvRegAssocPosition* pos); | ProvRegAssocPosition* pos); |
| |
MI_EXPORT MI_Result ProvReg_NextAssocClass( | MI_EXPORT MI_Result ProvReg_NextAssocClass( |
ProvRegAssocPosition* pos, | ProvRegAssocPosition* pos, |
const MI_Char** className, |
const ZChar** className, |
MI_Boolean* done); | MI_Boolean* done); |
| |
MI_EXPORT MI_Result ProvReg_EndAssocClasses( | MI_EXPORT MI_Result ProvReg_EndAssocClasses( |
ProvRegAssocPosition* pos); | ProvRegAssocPosition* pos); |
| |
|
void MapRegPositionValuesToRegEntry( |
|
ProvRegEntry* reg, |
|
ProvRegPosition* pos); |
|
|
void ProvReg_Dump( | void ProvReg_Dump( |
ProvReg* self, | ProvReg* self, |
FILE* os); | FILE* os); |
| |
|
/* Find provider registration object for class */ |
|
const ProvRegEntry* ProvReg_FindProviderForClassByType( |
|
_In_ ProvReg* self, |
|
_In_z_ const ZChar* nameSpace, |
|
_In_opt_z_ const ZChar* className, |
|
_In_ ProvRegType type, |
|
_Out_ MI_Result *findError); |
|
|
END_EXTERNC | END_EXTERNC |
| |
#endif /* _omi_provreg_h */ | #endif /* _omi_provreg_h */ |