/* * CosPropertyService * Copyright (C) OMG */ // kcg: needed for CORBA::TypeCodeSeq definition #include #pragma prefix "omg.org" module PropertyService { /******************************************************************************/ /* Data Types */ /******************************************************************************/ typedef string PropertyName; struct Property { PropertyName property_name; any property_value; }; enum PropertyModeType { normal, read_only, fixed_normal, fixed_readonly, undefined }; struct PropertyDef { PropertyName property_name; any property_value; PropertyModeType property_mode; }; struct PropertyMode { PropertyName property_name; PropertyModeType property_mode; }; typedef sequence PropertyNames; typedef sequence Properties; typedef sequence PropertyDefs; typedef sequence PropertyModes; // kcg: makes problem on Win32/VC++ platform // since it clashes with mico.dll which // declares the same type in mico/typecode_seq.h/idl // The solution is to use CORBA::TypeCodeSeq // typedef sequence PropertyTypes; typedef CORBA::TypeCodeSeq PropertyTypes; interface PropertyNamesIterator; interface PropertiesIterator; interface PropertySetFactory; interface PropertySetDef; interface PropertySet; /******************************************************************************/ /* Exceptions */ /******************************************************************************/ exception ConstraintNotSupported {}; exception InvalidPropertyName {}; exception ConflictingProperty {}; exception PropertyNotFound {}; exception UnsupportedTypeCode {}; exception UnsupportedProperty {}; exception UnsupportedMode {}; exception FixedProperty {}; exception ReadOnlyProperty {}; enum ExceptionReason { invalid_property_name, conflicting_property, property_not_found, unsupported_type_code, unsupported_property, unsupported_mode, fixed_property, read_only_property }; struct PropertyException { ExceptionReason reason; PropertyName failing_property_name; }; typedef sequence PropertyExceptions; exception MultipleExceptions { PropertyExceptions exceptions; }; /******************************************************************************/ /* Interface Definitions */ /******************************************************************************/ interface PropertySetFactory { PropertySet create_propertyset (); PropertySet create_constrained_propertyset (in PropertyTypes allowed_property_types, in Properties allowed_properties) raises (ConstraintNotSupported); PropertySet create_initial_propertyset (in Properties initial_properties) raises (MultipleExceptions); }; /*----------------------------------------------------------------------------*/ interface PropertySetDefFactory { PropertySetDef create_propertysetdef (); PropertySetDef create_constrained_propertysetdef (in PropertyTypes allowed_property_types, in PropertyDefs allowed_property_defs) raises (ConstraintNotSupported); PropertySetDef create_initial_propertysetdef (in PropertyDefs initial_property_defs) raises (MultipleExceptions); }; /*----------------------------------------------------------------------------*/ interface PropertySet { /*************************************************/ /* Support for defining and modifying properties */ /*************************************************/ void define_property (in PropertyName property_name, in any property_value) raises (InvalidPropertyName, ConflictingProperty, UnsupportedTypeCode, UnsupportedProperty, ReadOnlyProperty); void define_properties (in Properties nproperties) raises (MultipleExceptions); /**************************************************/ /* Support for Getting Properties and their Names */ /**************************************************/ unsigned long get_number_of_properties (); void get_all_property_names (in unsigned long how_many, out PropertyNames property_names, out PropertyNamesIterator rest); any get_property_value (in PropertyName property_name) raises (InvalidPropertyName, PropertyNotFound); boolean get_properties (in PropertyNames property_names, out Properties nproperties); void get_all_properties (in unsigned long how_many, out Properties nproperties, out PropertiesIterator rest); /***********************************/ /* Support for Deleting Properties */ /***********************************/ void delete_property (in PropertyName property_name) raises (InvalidPropertyName, PropertyNotFound, FixedProperty); void delete_properties (in PropertyNames property_names) raises (MultipleExceptions); boolean delete_all_properties (); /*******************************/ /* Support for Existence Check */ /*******************************/ boolean is_property_defined (in PropertyName property_name) raises (InvalidPropertyName); }; /*----------------------------------------------------------------------------*/ interface PropertySetDef : PropertySet { /****************************************************/ /* Support for retrieval of PropertySet constraints */ /****************************************************/ void get_allowed_property_types (out PropertyTypes property_types); void get_allowed_properties (out PropertyDefs property_defs); /*************************************************/ /* Support for defining and modifiying poperties */ /*************************************************/ void define_property_with_mode (in PropertyName property_name, in any property_value, in PropertyModeType property_mode) raises (InvalidPropertyName, ConflictingProperty, UnsupportedTypeCode, UnsupportedProperty, UnsupportedMode, ReadOnlyProperty); void define_properties_with_modes (in PropertyDefs property_defs) raises (MultipleExceptions); /**************************************************/ /* Support for Getting and Setting Property Modes */ /**************************************************/ PropertyModeType get_property_mode (in PropertyName property_name) raises (PropertyNotFound, InvalidPropertyName); boolean get_property_modes (in PropertyNames property_names, out PropertyModes property_modes); void set_property_mode (in PropertyName property_name, in PropertyModeType property_mode) raises (InvalidPropertyName, PropertyNotFound, UnsupportedMode); void set_property_modes (in PropertyModes property_modes) raises (MultipleExceptions); }; /*----------------------------------------------------------------------------*/ interface PropertyNamesIterator { void reset (); boolean next_one (out PropertyName propery_name); boolean next_n (in unsigned long how_many, out PropertyNames property_names); void destroy (); }; /*----------------------------------------------------------------------------*/ interface PropertiesIterator { void reset (); boolean next_one (out Property aproperty); boolean next_n (in unsigned long how_many, out Properties nproperties); void destroy (); }; };