(file) Return to class.h CVS log (file) (dir) Up to [OMI] / omi / base

  1 krisbash 1.1 /*============================================================================
  2               * Copyright (C) Microsoft Corporation, All rights reserved. 
  3               *============================================================================
  4               */
  5              #ifndef _CLASS_h
  6              #define _CLASS_h
  7              
  8              #if defined(_MSC_VER)
  9              #if defined(GetClassName)
 10              # undef GetClassName
 11              #endif
 12              #endif
 13              
 14              #include <base/batch.h>
 15              #include "MI.h"
 16              
 17              #define MI_CLASS_NULL { NULL, NULL, NULL, NULL, {0, 0, 0, 0} }
 18              
 19              
 20              /*============================================================================
 21               * This table should be used only internally; this provides functions which can be used to get more information
 22 krisbash 1.1  * from schema than the MI_ClassFT functions. 
 23               *============================================================================
 24               */
 25              typedef struct _MI_ClassExtendedFTInternal
 26              {
 27                  // existing functions from MI_ClassFT
 28                  MI_Result (MI_CALL *GetClassName)(
 29                      _In_ const MI_Class* self, 
 30                      _Outptr_result_maybenull_z_ const MI_Char** className);
 31              
 32                  MI_Result (MI_CALL *GetNameSpace)(
 33                      _In_ const MI_Class* self, 
 34                      _Outptr_result_maybenull_z_ const MI_Char** nameSpace);
 35              
 36                  MI_Result (MI_CALL *GetServerName)(
 37                      _In_ const MI_Class* self, 
 38                      _Outptr_result_maybenull_z_ const MI_Char** serverName);
 39              
 40                  MI_Result (MI_CALL *GetElementCount)(
 41                      _In_ const MI_Class* self,
 42                      _Out_ MI_Uint32* count);
 43 krisbash 1.1 
 44                  MI_Result (MI_CALL *GetElement)(
 45                      _In_      const MI_Class* self, 
 46                      _In_z_    const MI_Char* name,
 47                      _Out_opt_ MI_Value* value,
 48                      _Out_opt_ MI_Boolean* valueExists,
 49                      _Out_opt_ MI_Type* type,
 50                      _Outptr_opt_result_maybenull_z_ MI_Char **referenceClass,
 51                      _Out_opt_ MI_QualifierSet *qualifierSet,
 52                      _Out_opt_ MI_Uint32* flags,
 53                      _Out_opt_ MI_Uint32* index);
 54              
 55                  MI_Result (MI_CALL *GetElementAt)(
 56                      _In_ const MI_Class* self, 
 57                      MI_Uint32 index,
 58                      _Outptr_opt_result_maybenull_z_ const MI_Char** name,
 59                      _Out_opt_ MI_Value* value,
 60                      _Out_opt_ MI_Boolean* valueExists,
 61                      _Out_opt_ MI_Type* type,
 62                      _Outptr_opt_result_maybenull_z_ MI_Char **referenceClass,
 63                      _Out_opt_ MI_QualifierSet *qualifierSet,
 64 krisbash 1.1         _Out_opt_ MI_Uint32* flags);
 65              
 66                  MI_Result (MI_CALL *GetClassQualifierSet)(
 67                      _In_ const MI_Class* self, 
 68                      _Out_opt_ MI_QualifierSet *qualifierSet
 69                      );
 70              
 71                  MI_Result (MI_CALL *GetMethodCount)(
 72                      _In_ const MI_Class* self,
 73                      _Out_ MI_Uint32* count);
 74              
 75                  MI_Result (MI_CALL *GetMethodAt)(
 76                      _In_ const MI_Class *self,
 77                      MI_Uint32 index,
 78                      _Outptr_result_z_ const MI_Char **name,
 79                      _Out_opt_ MI_QualifierSet *qualifierSet,
 80                      _Out_opt_ MI_ParameterSet *parameterSet
 81                      );
 82              
 83                  MI_Result (MI_CALL *GetMethod)(
 84                      _In_ const MI_Class *self,
 85 krisbash 1.1         _In_z_ const MI_Char *name,
 86                      _Out_opt_ MI_QualifierSet *qualifierSet,
 87                      _Out_opt_ MI_ParameterSet *parameterSet,
 88                      _Out_opt_ MI_Uint32 *index
 89                      );
 90              
 91                  MI_Result (MI_CALL *GetParentClassName)(
 92                      _In_ const MI_Class *self,
 93                      _Outptr_result_maybenull_z_ const MI_Char **name);
 94              
 95                  MI_Result (MI_CALL *GetParentClass)(
 96                      _In_ const MI_Class *self,
 97                      _Outptr_ MI_Class **parentClass);
 98              
 99                  MI_Result (MI_CALL *Delete)(
100                      _Inout_ MI_Class* self);
101              
102                  MI_Result (MI_CALL *Clone)(
103                      _In_ const MI_Class* self,
104                      _Outptr_ MI_Class** newClass);
105              
106 krisbash 1.1     // new functions extending the existing functionality
107                  MI_Result (MI_CALL *GetClassFlagsExt)(
108                          _In_ const MI_Class* self,
109                          _Out_ MI_Uint32* flags);
110              
111                  // here the caller provides a class object and the function just fills in the class decl
112                  MI_Result (MI_CALL *GetParentClassExt)(
113                          _In_ const MI_Class* self,
114                          _Out_ MI_Class *parentClass);
115              
116                  MI_Result (MI_CALL *GetElementAtExt)(
117                      _In_ const MI_Class* self,
118                      MI_Uint32 index,
119                      _Outptr_opt_result_maybenull_z_ const MI_Char** name,
120                      _Out_opt_ MI_Value* value,
121                      _Out_opt_ MI_Boolean* valueExists,
122                      _Out_opt_ MI_Type* type,
123                      _Out_opt_ MI_Uint32* subscript,
124                      _Out_opt_ MI_Uint32* offset,
125                      _Outptr_opt_result_maybenull_z_ MI_Char **referenceClass,
126                      _Outptr_opt_result_maybenull_z_ MI_Char **originClass,
127 krisbash 1.1         _Outptr_opt_result_maybenull_z_ MI_Char **propagatorClass,        
128                      _Out_opt_ MI_QualifierSet *qualifierSet,
129                      _Out_opt_ MI_Uint32* flags);
130              
131                  MI_Result (MI_CALL *GetMethodAtExt)(
132                      _In_ const MI_Class *self,
133                      MI_Uint32 index,
134                      _Outptr_result_z_ const MI_Char **name,
135                      _Outptr_opt_result_maybenull_z_ MI_Char **originClass,
136                      _Outptr_opt_result_maybenull_z_ MI_Char **propagatorClass,
137                      _Out_opt_ MI_QualifierSet *qualifierSet,
138                      _Out_opt_ MI_ParameterSet *parameterSet,
139                      _Out_opt_ MI_Uint32* flags);    
140              } MI_ClassExtendedFTInternal;
141              
142              typedef struct _MI_ParameterSetExtendedFTInternal
143              {
144                  // existing functions from MI_ClassFT
145              
146                  MI_Result (MI_CALL *GetMethodReturnType)(
147                      _In_  const MI_ParameterSet *self, 
148 krisbash 1.1         _Out_ MI_Type *returnType, 
149                      _Out_ MI_QualifierSet *qualifierSet);
150              
151                  MI_Result (MI_CALL *GetParameterCount)(
152                      _In_ const MI_ParameterSet *self, 
153                      _Out_ MI_Uint32 *count);
154              
155                  MI_Result (MI_CALL *GetParameterAt)(
156                      _In_ const MI_ParameterSet *self,
157                      MI_Uint32 index,
158                      _Outptr_result_z_ const MI_Char **name,
159                      MI_Type *parameterType,
160                      _Outptr_opt_result_maybenull_z_ MI_Char **referenceClass,
161                      _Out_ MI_QualifierSet *qualifierSet);
162              
163                  MI_Result (MI_CALL *GetParameter)(
164                      _In_ const MI_ParameterSet *self,
165                      _In_z_ const MI_Char *name,
166                      _Out_ MI_Type *parameterType,
167                      _Outptr_opt_result_maybenull_z_ MI_Char **referenceClass,
168                      _Out_ MI_QualifierSet *qualifierSet,
169 krisbash 1.1         _Out_ MI_Uint32 *index);
170              
171                  // new functions extending the existing functionality
172              
173                  MI_Result (MI_CALL *GetParameterAtExt)(
174                      _In_ const MI_ParameterSet *self,
175                      MI_Uint32 index,
176                      _Outptr_result_z_ const MI_Char **name,
177                      MI_Type *parameterType,
178                      _Out_opt_ MI_Uint32* subscript,
179                      _Outptr_opt_result_maybenull_z_ MI_Char **referenceClass,
180                      _Out_ MI_QualifierSet *qualifierSet,
181                      _Out_opt_ MI_Uint32* flags);
182              
183              } MI_ParameterSetExtendedFTInternal;
184              
185              
186                  /* Helper functions */
187              MI_EXTERN_C    MI_Result Class_Clone_ArrayValue(
188                      _Inout_ Batch *batch,
189                      MI_Type type, 
190 krisbash 1.1         _In_ void *destinationArrayStart,
191                      MI_Uint32 arrayLocation,
192                      _In_ const void *oldValueLocation);
193              
194              MI_EXTERN_C   MI_ClassDecl* Class_Clone_ClassDecl(
195                      _Inout_ Batch *batch,
196                      _In_ const MI_ClassDecl *classDecl);
197              
198              
199              /*============================================================================
200               * Assumes that the Class extended function table is present in ft field of MI_Class pointer being passed in
201               *============================================================================
202               */
203              
204              MI_INLINE const MI_ClassExtendedFTInternal * MI_CALL GetClassExtendedFt(const MI_Class *miClass)
205              {
206                  return ((const MI_ClassExtendedFTInternal *)(miClass->ft));
207              }
208              
209              /*============================================================================
210               * Assumes that ParameterSet extended function table is present in ft field of ParameterSetFT pointer being passed in
211 krisbash 1.1  *============================================================================
212               */
213              
214              MI_INLINE const MI_ParameterSetExtendedFTInternal * MI_CALL GetParameterSetExtendedFt(const MI_ParameterSet *parameterSet)
215              {
216                  return ((const MI_ParameterSetExtendedFTInternal *)(parameterSet->ft));
217              }
218              
219              /*============================================================================
220               * Get function table from qualifierSet
221               *============================================================================
222               */
223              MI_INLINE const MI_QualifierSetFT * MI_CALL GetQualifierSetFt(const MI_QualifierSet *qualifierSet)
224              {
225                  return qualifierSet->ft;
226              }
227              
228              MI_EXTERN_C MI_Result MI_CALL Class_Construct(MI_Class* self, const MI_ClassDecl* classDecl);
229              
230              MI_EXTERN_C MI_Result MI_CALL Class_New(
231                  _In_ const MI_ClassDecl *classDecl,
232 krisbash 1.1     _In_opt_z_ const MI_Char *namespaceName,
233                  _In_opt_z_ const MI_Char *serverName,
234                  _Out_ MI_Class **newClass);
235              
236              
237              #endif // End _CLASS_h

ViewCVS 0.9.2