Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

352 lines
17 KiB

  1. // Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
  2. #pragma namespace ("\\\\.\\root\\default")
  3. // ==================================================================
  4. // NamedElement
  5. // ==================================================================
  6. [Assoc ("True") , Description (
  7. "The Meta_NamedElement class represents the root class for the "
  8. "Metaschema. It has one property: Name, which is inherited by all the "
  9. "non-association classes in the Metaschema. Every metaconstruct is "
  10. "expressed as a descendent of the class Meta_Named Element.") ]
  11. class Meta_NamedElement
  12. {
  13. [Description (
  14. "The Name property indicates the name of the current Metaschema element. "
  15. "The following rules apply to the Name property, depending on the "
  16. "creation type of the object:<UL><LI>Fully-qualified class names, such "
  17. "as those prefixed by the schema name, are unique within the schema."
  18. "<LI>Fully-qualified association and indication names are unique within "
  19. "the schema (implied by the fact that association and indication classes "
  20. "are subtypes of Meta_Class).<LI>Implicitly-defined qualifier names are "
  21. "unique within the scope of the characterized object; that is, a named "
  22. "element may not have two characteristics with the same name."
  23. "<LI>Explicitly-defined qualifier names are unique within the defining "
  24. "schema. An implicitly-defined qualifier must agree in type, scope and "
  25. "flavor with any explicitly-defined qualifier of the same name."
  26. "<LI>Trigger names must be unique within the property, class or method "
  27. "to which the trigger applies.<LI>Method and property names must be "
  28. "unique within the domain class. A class can inherit more than one "
  29. "property or method with the same name. Property and method names can be "
  30. "qualified using the name of the declaring class.<LI>Reference names "
  31. "must be unique within the scope of their defining association class. "
  32. "Reference names obey the same rules as property names.</UL><B>Note:</B> "
  33. "Reference names are not required to be unique within the scope of the "
  34. "related class. Within such a scope, the reference provides the name of "
  35. "the class within the context defined by the association.") ]
  36. string Name;
  37. };
  38. // ==================================================================
  39. // Schema
  40. // ==================================================================
  41. [Description (
  42. "The Meta_Schema class represents a group of classes with a single owner."
  43. " Schemas are used for administration and class naming. Class names must "
  44. "be unique within their owning schemas.") ]
  45. class Meta_Schema:Meta_NamedElement
  46. {
  47. };
  48. // ==================================================================
  49. // Trigger
  50. // ==================================================================
  51. [Description (
  52. "The Meta_Trigger class represents a state change of a class instance ("
  53. "such as create, delete, update, or access) or a property (update, or "
  54. "access only).") ]
  55. class Meta_Trigger:Meta_NamedElement
  56. {
  57. };
  58. // ==================================================================
  59. // Qualifier
  60. // ==================================================================
  61. [Description (
  62. "The Meta_Qualifier class represents characteristics of named elements. "
  63. "For example, there are qualifiers that define the characteristics of a "
  64. "property or the key of a class. Qualifiers provide a mechanism that "
  65. "makes the Metaschema extensible in a limited and controlled fashion."
  66. "<P>It is possible to add new types of qualifiers by the introduction of "
  67. "a new qualifier name, thereby providing new types of metadata to "
  68. "processes that manage and manipulate classes, properties, and other "
  69. "elements of the Metaschema.") ]
  70. class Meta_Qualifier:Meta_NamedElement
  71. {
  72. [Description ("The Name property indicates the name of the qualifier.")
  73. ]
  74. string Name;
  75. [Description ("The Value property indicates the value of the qualifier."
  76. ) ]
  77. string Value;
  78. };
  79. // ==================================================================
  80. // Method
  81. // ==================================================================
  82. [Description (
  83. "The Meta_Method class represents a declaration of a signature; that is, "
  84. "the method name, return type and parameters, and (in the case of a "
  85. "concrete class) may imply an implementation.") ]
  86. class Meta_Method:Meta_NamedElement
  87. {
  88. };
  89. // ==================================================================
  90. // Property
  91. // ==================================================================
  92. [Description (
  93. "The Meta_Property class represents a value used to characterize "
  94. "instances of a class. A property can be thought of as a pair of Get and "
  95. "Set functions that, when applied to an object, return state and set "
  96. "state, respectively.") ]
  97. class Meta_Property:Meta_NamedElement
  98. {
  99. };
  100. // ==================================================================
  101. // Reference
  102. // ==================================================================
  103. [Description (
  104. "The Meta_Reference class represents (and defines) the role each object "
  105. "plays in an association. The reference represents the role name of a "
  106. "class in the context of an association, which supports the provision of "
  107. "multiple relationship instances for a given object. For example, a "
  108. "system can be related to many system components.") ]
  109. class Meta_Reference:Meta_Property
  110. {
  111. };
  112. // ==================================================================
  113. // Class
  114. // ==================================================================
  115. [Description (
  116. "The Meta_Class class is a collection of instances that support the same "
  117. "type; that is, the same properties and methods. Classes can be arranged "
  118. "in a generalization hierarchy that represents subtype relationships "
  119. "between classes.<P>The generalization hierarchy is a rooted, directed "
  120. "graph and does not support multiple inheritance. Classes can have "
  121. "methods, which represent the behavior relevant for that class. A Class "
  122. "may participate in associations by being the target of one of the "
  123. "references owned by the association.") ]
  124. class Meta_Class:Meta_NamedElement
  125. {
  126. };
  127. // ==================================================================
  128. // Indication
  129. // ==================================================================
  130. [Description (
  131. "The Meta_Indication class represents an object created as a result of a "
  132. "trigger. Because Indications are subtypes of Meta_Class, they can have "
  133. "properties and methods, and be arranged in a type hierarchy. ") ]
  134. class Meta_Indication:Meta_Class
  135. {
  136. };
  137. // ==================================================================
  138. // Association
  139. // ==================================================================
  140. [Description (
  141. "The Meta_Association class represents a class that contains two or more "
  142. "references and represents a relationship between two or more objects. "
  143. "Because of how associations are defined, it is possible to establish a "
  144. "relationship between classes without affecting any of the related "
  145. "classes.<P>For example, the addition of an association does not affect "
  146. "the interface of the related classes; associations have no other "
  147. "significance. Only associations can have references. Associations can "
  148. "be a subclass of a non-association class . Any subclass of "
  149. "Meta_Association is an association.") ]
  150. class Meta_Association:Meta_Class
  151. {
  152. };
  153. // ==================================================================
  154. // Characteristics
  155. // ==================================================================
  156. [Association, Description (
  157. "The Meta_Characteristics class relates a Meta_NamedElement to a "
  158. "qualifier that characterizes the named element. Meta_NamedElement may "
  159. "have zero or more characteristics.") ]
  160. class Meta_Characteristics
  161. {
  162. [Description (
  163. "The Characteristic reference represents the qualifier that "
  164. "characterizes the named element.") ]
  165. Meta_Qualifier REF Characteristic;
  166. [Description (
  167. "The Characterized reference represents the named element that is being "
  168. "characterized.") ]
  169. Meta_NamedElement REF Characterized;
  170. };
  171. // ==================================================================
  172. // PropertyDomain
  173. // ==================================================================
  174. [Association, Description (
  175. "The Meta_PropertyDomain class represents an association between a class "
  176. "and a property.<P>A property has only one domain: the class that owns "
  177. "the property. A property can have an override relationship with another "
  178. "property from a different class. The domain of the overridden property "
  179. "must be a supertype of the domain of the overriding property. The "
  180. "domain of a reference must be an association.") ]
  181. class Meta_PropertyDomain
  182. {
  183. [Description (
  184. "The Property reference represents the property that is owned by the "
  185. "class referenced by Domain.") ]
  186. Meta_Property REF Property;
  187. [Description (
  188. "The Domain reference represents the class that owns the property "
  189. "referenced by Property.") ]
  190. Meta_Class REF Domain;
  191. };
  192. // ==================================================================
  193. // MethodDomain
  194. // ==================================================================
  195. [Association, Description (
  196. "The Meta_MethodDomain class represents an association between a class "
  197. "and a method.<P>A method has only one domain: the class that owns the "
  198. "method, which can have an override relationship with another method "
  199. "from a different class. The domain of the overridden method must be a "
  200. "supertype of the domain of the overriding method. The signature of the "
  201. "method (that is, the name, parameters and return type) must be "
  202. "identical.") ]
  203. class Meta_MethodDomain
  204. {
  205. [Description (
  206. "The Method reference represents the method that is owned by the class "
  207. "referenced by Domain.") ]
  208. Meta_Method REF Method;
  209. [Description (
  210. "The Domain reference represents the class that owns the method "
  211. "referenced by Method.") ]
  212. Meta_Class REF Domain;
  213. };
  214. // ==================================================================
  215. // ReferenceRange
  216. // ==================================================================
  217. [Association, Description (
  218. "The Meta_ReferenceRange class defines the type of the reference.") ]
  219. class Meta_ReferenceRange
  220. {
  221. [Description (
  222. "The Reference reference represents the reference whose type is defined "
  223. "by Range.") ]
  224. Meta_Reference REF Reference;
  225. [Description (
  226. "The Range reference represents the class that defines the type of "
  227. "reference.") ]
  228. Meta_Class REF Range;
  229. };
  230. // ==================================================================
  231. // SubtypeSupertype
  232. // ==================================================================
  233. [Association, Description (
  234. "The Meta_SubtypeSupertype class represents subtype/supertype "
  235. "relationships between classes arranged in a generalization hierarchy. "
  236. "This generalization hierarchy is a rooted, directed graph and does not "
  237. "support multiple inheritance.") ]
  238. class Meta_SubtypeSupertype
  239. {
  240. [Description (
  241. "The SuperClass reference represents the class that is hierarchically "
  242. "immediately above the class referenced by SubClass.") ]
  243. Meta_Class REF SuperClass;
  244. [Description (
  245. "The SubClass reference represents the class that is the immediate "
  246. "descendent of the class referenced by SuperClass.") ]
  247. Meta_Class REF SubClass;
  248. };
  249. // ==================================================================
  250. // PropertyOverride
  251. // ==================================================================
  252. [Association, Description (
  253. "The Meta_PropertyOverride class represents an association between two "
  254. "properties where one overrides the other.<P>Properties have reflexive "
  255. "associations that represent property overriding. A property can "
  256. "override an inherited property, which implies that any access to the "
  257. "inherited property will result in the invocation of the implementation "
  258. "of the overriding property. A Property can have an override "
  259. "relationship with another property from a different class.<P>The domain "
  260. "of the overridden property must be a supertype of the domain of the "
  261. "overriding property. The class referenced by the Meta_ReferenceRange "
  262. "association of an overriding reference must be the same as, or a "
  263. "subtype of, the class referenced by the Meta_ReferenceRange "
  264. "associations of the reference being overridden.") ]
  265. class Meta_PropertyOverride
  266. {
  267. [Description (
  268. "The OverridingProperty reference represents the property that overrides "
  269. "the property referenced by OverriddenProperty.") ]
  270. Meta_Property REF OverridingProperty;
  271. [Description (
  272. "The OverriddenProperty reference represents the property that is "
  273. "overriden by the property reference by OverridingProperty.") ]
  274. Meta_Property REF OverriddenProperty;
  275. };
  276. // ==================================================================
  277. // MethodOverride
  278. // ==================================================================
  279. [Association, Description (
  280. "The Meta_MethodOverride class represents an association between two "
  281. "methods, where one overrides the other. Methods have reflexive "
  282. "associations that represent method overriding. A method can override an "
  283. "inherited method, which implies that any access to the inherited method "
  284. "will result in the invocation of the implementation of the overriding "
  285. "method.") ]
  286. class Meta_MethodOverride
  287. {
  288. [Description (
  289. "The OverridingMethod reference represents the method that overrides the "
  290. "method referenced by OverriddenMethod.") ]
  291. Meta_Method REF OverridingMethod;
  292. [Description (
  293. "The OverriddenMethod reference represents the method that is overriden "
  294. "by the method reference by OverridingMethod.") ]
  295. Meta_Method REF OverriddenMethod;
  296. };
  297. // ==================================================================
  298. // ElementSchema
  299. // ==================================================================
  300. [Association, Description (
  301. "The Meta_ElementSchema class represents the elements (typically classes "
  302. "and qualifiers) that make up a schema.") ]
  303. class Meta_ElementSchema
  304. {
  305. [Description (
  306. "The Element reference represents the named element that belongs to the "
  307. "schema referenced by Schema.") ]
  308. Meta_NamedElement REF Element;
  309. [Description (
  310. "The Schema reference represents the schema to which the named element "
  311. "referenced by Element belongs.") ]
  312. Meta_Schema REF Schema;
  313. };
  314. // ==================================================================
  315. // ElementTrigger
  316. // ==================================================================
  317. [Association, Description (
  318. "The Meta_ElementTrigger association defines the relationship between an "
  319. "element and the triggers that are possible against that element. For "
  320. "example, all classes can have creation, deletion, and update triggers "
  321. "that are fired when creation, deletion, or update activity is applied "
  322. "to the class.") ]
  323. class Meta_ElementTrigger
  324. {
  325. [Description (
  326. "The Element reference represents the named element against which the "
  327. "trigger (referenced by Trigger) is activated.") ]
  328. Meta_NamedElement REF Element;
  329. [Description (
  330. "The Trigger reference represents a trigger that can be activated "
  331. "against the named element referenced by Element.") ]
  332. Meta_Trigger REF Trigger;
  333. };