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
17 KiB
353 lines
17 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;
|
|
};
|
|
|