// Copyright (c) 2007 DMTF.  All rights reserved.
// <change cr="ARCHCR0015.000" type ="change">Allow narrowing 
// of subclass defined in EmbeddedInstance</change>
// <change cr="ARCHCR0072.014" type ="change">Deprecate units
// and add programmatic units</change>
// <change cr="SysDevCR00720.001" type ="change">Update of
// descriptions based on Tech Edit review.</change>
// <change cr="DMTFCR01167.003" type ="change">Clarify 
// description of Override qualifier and correct its 
// definition to allow repeated usage in subclasses.</change>
// <change cr="DMTFCR01592.004" type ="change">Add a 
// UmlPackagePath qualifier.</change>
// <change cr="DMTFCR01593.001" type ="change">Addition 
// of the Correlatable qualifier.</change>
// <change cr="ARCHCR00057.003" type ="change">Extend the OCL 
// Qualifier.</change>
// <change cr="ARCHCR00075.000" type ="change">Add method scope to
// Required Qualifier.</change>
// <change cr="WIPCR00302.000" type ="change">2.13 qualifier updates
// and changes</change>
// <change cr="ArchCR00066.004" type="add">Add UmlPackagePath
// qualifier to CIM Schema.</change>
// <change cr="ArchCR00099.004" type="add">Clarify EmbeddedInstance 
// and EmbeddedObject qualifiers</change>
// ==================================================================
// Qualifiers
// ==================================================================
//===============
//Meta Qualifiers
//===============

Qualifier Association : boolean = false, 
    Scope(association), 
    Flavor(DisableOverride, ToSubclass);

Qualifier Indication : boolean = false, 
    Scope(class, indication), 
    Flavor(DisableOverride, ToSubclass);

//===================
//Standard Qualifiers
//===================

Qualifier Abstract : boolean = false, 
    Scope(class, association, indication), 
    Flavor(EnableOverride, Restricted);

Qualifier Aggregate : boolean = false, 
    Scope(reference), 
    Flavor(DisableOverride, ToSubclass);

Qualifier Aggregation : boolean = false, 
    Scope(association), 
    Flavor(DisableOverride, ToSubclass);

Qualifier ArrayType : string = "Bag", 
    Scope(property, parameter), 
    Flavor(DisableOverride, ToSubclass);

Qualifier BitMap : string[], 
    Scope(property, method, parameter);

Qualifier BitValues : string[], 
    Scope(property, method, parameter), 
    Flavor(EnableOverride, ToSubclass, Translatable);

Qualifier ClassConstraint : string[], 
    Scope(class, association, indication);

Qualifier Composition : boolean = false, 
    Scope(association), 
    Flavor(DisableOverride, ToSubclass);

Qualifier Correlatable : string[], 
    Scope(property);

Qualifier Counter : boolean = false, 
    Scope(property, method, parameter);

Qualifier Deprecated : string[], 
    Scope(any), 
    Flavor(EnableOverride, Restricted);

Qualifier Description : string = null, 
    Scope(any), 
    Flavor(EnableOverride, ToSubclass, Translatable);

Qualifier DisplayName : string = null, 
    Scope(any), 
    Flavor(EnableOverride, ToSubclass, Translatable);

Qualifier DN : boolean = false, 
    Scope(property, method, parameter), 
    Flavor(DisableOverride, ToSubclass);

Qualifier EmbeddedInstance : string = null, 
    Scope(property, method, parameter);

Qualifier EmbeddedObject : boolean = false, 
    Scope(property, method, parameter), 
    Flavor(DisableOverride, ToSubclass);

Qualifier Exception : boolean = false, 
    Scope(class, indication), 
    Flavor(DisableOverride, ToSubclass);

Qualifier Experimental : boolean = false, 
    Scope(any), 
    Flavor(EnableOverride, Restricted);

Qualifier Gauge : boolean = false, 
    Scope(property, method, parameter);

Qualifier In : boolean = true, 
    Scope(parameter), 
    Flavor(DisableOverride, ToSubclass);

Qualifier IsPUnit : boolean = false, 
    Scope(property, method, parameter);

Qualifier Key : boolean = false, 
    Scope(property, reference), 
    Flavor(DisableOverride, ToSubclass);

Qualifier MappingStrings : string[], 
    Scope(any);

Qualifier Max : uint32 = null, 
    Scope(reference);

Qualifier MaxLen : uint32 = null, 
    Scope(property, method, parameter);

Qualifier MaxValue : sint64 = null, 
    Scope(property, method, parameter);

Qualifier MethodConstraint : string[], 
    Scope(method);

Qualifier Min : uint32 = 0, 
    Scope(reference);

Qualifier MinLen : uint32 = 0, 
    Scope(property, method, parameter);

Qualifier MinValue : sint64 = null, 
    Scope(property, method, parameter);

Qualifier ModelCorrespondence : string[], 
    Scope(any);

/*
The Nonlocal qualifer has been removed (as an errata) as of CIM 2.3
For more information see CR1461.
*/
Qualifier Nonlocal : string = null, 
    Scope(reference);

/*
The NonlocalType qualifer has been removed (as an errata) as of CIM 2.3
For more information see CR1461.
*/
Qualifier NonlocalType : string = null, 
    Scope(reference);

Qualifier NullValue : string = null, 
    Scope(property), 
    Flavor(DisableOverride, ToSubclass);

Qualifier Octetstring : boolean = false, 
    Scope(property, method, parameter), 
    Flavor(DisableOverride, ToSubclass);

Qualifier Out : boolean = false, 
    Scope(parameter), 
    Flavor(DisableOverride, ToSubclass);

Qualifier Override : string = null, 
    Scope(property, reference, method), 
    Flavor(EnableOverride, Restricted);

Qualifier Propagated : string = null, 
    Scope(property), 
    Flavor(DisableOverride, ToSubclass);

Qualifier PropertyConstraint : string[], 
    Scope(property, reference);

Qualifier PUnit : string = null, 
    Scope(property, method, parameter);

Qualifier Read : boolean = true, 
    Scope(property);

Qualifier Required : boolean = false, 
    Scope(property, reference, method, parameter), 
    Flavor(DisableOverride, ToSubclass);

//  The Revision qualifier has been deprecated. For the replacement,
//  see the usage rule for the version qualifier in the CIM
//  Specification.

Qualifier Revision : string = null, 
    Scope(class, association, indication), 
    Flavor(EnableOverride, ToSubclass, Translatable);

Qualifier Schema : string = null, 
    Scope(property, method), 
    Flavor(DisableOverride, ToSubclass, Translatable);

/*
The Source qualifer has been removed (as an errata) as of CIM 2.3
For more information see CR1461.
*/
Qualifier Source : string = null, 
    Scope(class, association, indication);

/*
The SourceType qualifer has been removed (as an errata) as of CIM 2.3
For more information see CR1461.
*/
Qualifier SourceType : string = null, 
    Scope(class, association, indication, reference);

Qualifier Static : boolean = false, 
    Scope(property, method), 
    Flavor(DisableOverride, ToSubclass);

Qualifier Terminal : boolean = false, 
    Scope(class, association, indication);

Qualifier UMLPackagePath : string = null, 
    Scope(class, association, indication);

Qualifier Units : string = null, 
    Scope(property, method, parameter), 
    Flavor(EnableOverride, ToSubclass, Translatable);

Qualifier ValueMap : string[], 
    Scope(property, method, parameter);

Qualifier Values : string[], 
    Scope(property, method, parameter), 
    Flavor(EnableOverride, ToSubclass, Translatable);

Qualifier Version : string = null, 
    Scope(class, association, indication), 
    Flavor(EnableOverride, Restricted, Translatable);

Qualifier Weak : boolean = false, 
    Scope(reference), 
    Flavor(DisableOverride, ToSubclass);

Qualifier Write : boolean = false, 
    Scope(property);

