Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

353 lines
16 KiB

// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
#pragma namespace ("\\\\.\\root\\default")
// ==================================================================
// NamedElement
// ==================================================================
[Assoc ("True") , Description (
"The Meta_NamedElement class represents the root class for the "
"Metaschema. It has one property: Name, which is inherited by all the "
"non-association classes in the Metaschema. Every metaconstruct is "
"expressed as a descendent of the class Meta_Named Element.") ]
class Meta_NamedElement
{
[Description (
"The Name property indicates the name of the current Metaschema element. "
"The following rules apply to the Name property, depending on the "
"creation type of the object:<UL><LI>Fully-qualified class names, such "
"as those prefixed by the schema name, are unique within the schema."
"<LI>Fully-qualified association and indication names are unique within "
"the schema (implied by the fact that association and indication classes "
"are subtypes of Meta_Class).<LI>Implicitly-defined qualifier names are "
"unique within the scope of the characterized object; that is, a named "
"element may not have two characteristics with the same name."
"<LI>Explicitly-defined qualifier names are unique within the defining "
"schema. An implicitly-defined qualifier must agree in type, scope and "
"flavor with any explicitly-defined qualifier of the same name."
"<LI>Trigger names must be unique within the property, class or method "
"to which the trigger applies.<LI>Method and property names must be "
"unique within the domain class. A class can inherit more than one "
"property or method with the same name. Property and method names can be "
"qualified using the name of the declaring class.<LI>Reference names "
"must be unique within the scope of their defining association class. "
"Reference names obey the same rules as property names.</UL><B>Note:</B> "
"Reference names are not required to be unique within the scope of the "
"related class. Within such a scope, the reference provides the name of "
"the class within the context defined by the association.") ]
string Name;
};
// ==================================================================
// Schema
// ==================================================================
[Description (
"The Meta_Schema class represents a group of classes with a single owner."
" Schemas are used for administration and class naming. Class names must "
"be unique within their owning schemas.") ]
class Meta_Schema:Meta_NamedElement
{
};
// ==================================================================
// Trigger
// ==================================================================
[Description (
"The Meta_Trigger class represents a state change of a class instance ("
"such as create, delete, update, or access) or a property (update, or "
"access only).") ]
class Meta_Trigger:Meta_NamedElement
{
};
// ==================================================================
// Qualifier
// ==================================================================
[Description (
"The Meta_Qualifier class represents characteristics of named elements. "
"For example, there are qualifiers that define the characteristics of a "
"property or the key of a class. Qualifiers provide a mechanism that "
"makes the Metaschema extensible in a limited and controlled fashion."
"<P>It is possible to add new types of qualifiers by the introduction of "
"a new qualifier name, thereby providing new types of metadata to "
"processes that manage and manipulate classes, properties, and other "
"elements of the Metaschema.") ]
class Meta_Qualifier:Meta_NamedElement
{
[Description ("The Name property indicates the name of the qualifier.")
]
string Name;
[Description ("The Value property indicates the value of the qualifier."
) ]
string Value;
};
// ==================================================================
// Method
// ==================================================================
[Description (
"The Meta_Method class represents a declaration of a signature; that is, "
"the method name, return type and parameters, and (in the case of a "
"concrete class) may imply an implementation.") ]
class Meta_Method:Meta_NamedElement
{
};
// ==================================================================
// Property
// ==================================================================
[Description (
"The Meta_Property class represents a value used to characterize "
"instances of a class. A property can be thought of as a pair of Get and "
"Set functions that, when applied to an object, return state and set "
"state, respectively.") ]
class Meta_Property:Meta_NamedElement
{
};
// ==================================================================
// Reference
// ==================================================================
[Description (
"The Meta_Reference class represents (and defines) the role each object "
"plays in an association. The reference represents the role name of a "
"class in the context of an association, which supports the provision of "
"multiple relationship instances for a given object. For example, a "
"system can be related to many system components.") ]
class Meta_Reference:Meta_Property
{
};
// ==================================================================
// Class
// ==================================================================
[Description (
"The Meta_Class class is a collection of instances that support the same "
"type; that is, the same properties and methods. Classes can be arranged "
"in a generalization hierarchy that represents subtype relationships "
"between classes.<P>The generalization hierarchy is a rooted, directed "
"graph and does not support multiple inheritance. Classes can have "
"methods, which represent the behavior relevant for that class. A Class "
"may participate in associations by being the target of one of the "
"references owned by the association.") ]
class Meta_Class:Meta_NamedElement
{
};
// ==================================================================
// Indication
// ==================================================================
[Description (
"The Meta_Indication class represents an object created as a result of a "
"trigger. Because Indications are subtypes of Meta_Class, they can have "
"properties and methods, and be arranged in a type hierarchy. ") ]
class Meta_Indication:Meta_Class
{
};
// ==================================================================
// Association
// ==================================================================
[Description (
"The Meta_Association class represents a class that contains two or more "
"references and represents a relationship between two or more objects. "
"Because of how associations are defined, it is possible to establish a "
"relationship between classes without affecting any of the related "
"classes.<P>For example, the addition of an association does not affect "
"the interface of the related classes; associations have no other "
"significance. Only associations can have references. Associations can "
"be a subclass of a non-association class . Any subclass of "
"Meta_Association is an association.") ]
class Meta_Association:Meta_Class
{
};
// ==================================================================
// Characteristics
// ==================================================================
[Association, Description (
"The Meta_Characteristics class relates a Meta_NamedElement to a "
"qualifier that characterizes the named element. Meta_NamedElement may "
"have zero or more characteristics.") ]
class Meta_Characteristics
{
[Description (
"The Characteristic reference represents the qualifier that "
"characterizes the named element.") ]
Meta_Qualifier REF Characteristic;
[Description (
"The Characterized reference represents the named element that is being "
"characterized.") ]
Meta_NamedElement REF Characterized;
};
// ==================================================================
// PropertyDomain
// ==================================================================
[Association, Description (
"The Meta_PropertyDomain class represents an association between a class "
"and a property.<P>A property has only one domain: the class that owns "
"the property. A property can have an override relationship with another "
"property from a different class. The domain of the overridden property "
"must be a supertype of the domain of the overriding property. The "
"domain of a reference must be an association.") ]
class Meta_PropertyDomain
{
[Description (
"The Property reference represents the property that is owned by the "
"class referenced by Domain.") ]
Meta_Property REF Property;
[Description (
"The Domain reference represents the class that owns the property "
"referenced by Property.") ]
Meta_Class REF Domain;
};
// ==================================================================
// MethodDomain
// ==================================================================
[Association, Description (
"The Meta_MethodDomain class represents an association between a class "
"and a method.<P>A method has only one domain: the class that owns the "
"method, which can have an override relationship with another method "
"from a different class. The domain of the overridden method must be a "
"supertype of the domain of the overriding method. The signature of the "
"method (that is, the name, parameters and return type) must be "
"identical.") ]
class Meta_MethodDomain
{
[Description (
"The Method reference represents the method that is owned by the class "
"referenced by Domain.") ]
Meta_Method REF Method;
[Description (
"The Domain reference represents the class that owns the method "
"referenced by Method.") ]
Meta_Class REF Domain;
};
// ==================================================================
// ReferenceRange
// ==================================================================
[Association, Description (
"The Meta_ReferenceRange class defines the type of the reference.") ]
class Meta_ReferenceRange
{
[Description (
"The Reference reference represents the reference whose type is defined "
"by Range.") ]
Meta_Reference REF Reference;
[Description (
"The Range reference represents the class that defines the type of "
"reference.") ]
Meta_Class REF Range;
};
// ==================================================================
// SubtypeSupertype
// ==================================================================
[Association, Description (
"The Meta_SubtypeSupertype class represents subtype/supertype "
"relationships between classes arranged in a generalization hierarchy. "
"This generalization hierarchy is a rooted, directed graph and does not "
"support multiple inheritance.") ]
class Meta_SubtypeSupertype
{
[Description (
"The SuperClass reference represents the class that is hierarchically "
"immediately above the class referenced by SubClass.") ]
Meta_Class REF SuperClass;
[Description (
"The SubClass reference represents the class that is the immediate "
"descendent of the class referenced by SuperClass.") ]
Meta_Class REF SubClass;
};
// ==================================================================
// PropertyOverride
// ==================================================================
[Association, Description (
"The Meta_PropertyOverride class represents an association between two "
"properties where one overrides the other.<P>Properties have reflexive "
"associations that represent property overriding. A property can "
"override an inherited property, which implies that any access to the "
"inherited property will result in the invocation of the implementation "
"of the overriding property. A Property can have an override "
"relationship with another property from a different class.<P>The domain "
"of the overridden property must be a supertype of the domain of the "
"overriding property. The class referenced by the Meta_ReferenceRange "
"association of an overriding reference must be the same as, or a "
"subtype of, the class referenced by the Meta_ReferenceRange "
"associations of the reference being overridden.") ]
class Meta_PropertyOverride
{
[Description (
"The OverridingProperty reference represents the property that overrides "
"the property referenced by OverriddenProperty.") ]
Meta_Property REF OverridingProperty;
[Description (
"The OverriddenProperty reference represents the property that is "
"overriden by the property reference by OverridingProperty.") ]
Meta_Property REF OverriddenProperty;
};
// ==================================================================
// MethodOverride
// ==================================================================
[Association, Description (
"The Meta_MethodOverride class represents an association between two "
"methods, where one overrides the other. Methods have reflexive "
"associations that represent method overriding. A method can override an "
"inherited method, which implies that any access to the inherited method "
"will result in the invocation of the implementation of the overriding "
"method.") ]
class Meta_MethodOverride
{
[Description (
"The OverridingMethod reference represents the method that overrides the "
"method referenced by OverriddenMethod.") ]
Meta_Method REF OverridingMethod;
[Description (
"The OverriddenMethod reference represents the method that is overriden "
"by the method reference by OverridingMethod.") ]
Meta_Method REF OverriddenMethod;
};
// ==================================================================
// ElementSchema
// ==================================================================
[Association, Description (
"The Meta_ElementSchema class represents the elements (typically classes "
"and qualifiers) that make up a schema.") ]
class Meta_ElementSchema
{
[Description (
"The Element reference represents the named element that belongs to the "
"schema referenced by Schema.") ]
Meta_NamedElement REF Element;
[Description (
"The Schema reference represents the schema to which the named element "
"referenced by Element belongs.") ]
Meta_Schema REF Schema;
};
// ==================================================================
// ElementTrigger
// ==================================================================
[Association, Description (
"The Meta_ElementTrigger association defines the relationship between an "
"element and the triggers that are possible against that element. For "
"example, all classes can have creation, deletion, and update triggers "
"that are fired when creation, deletion, or update activity is applied "
"to the class.") ]
class Meta_ElementTrigger
{
[Description (
"The Element reference represents the named element against which the "
"trigger (referenced by Trigger) is activated.") ]
Meta_NamedElement REF Element;
[Description (
"The Trigger reference represents a trigger that can be activated "
"against the named element referenced by Element.") ]
Meta_Trigger REF Trigger;
};