#ifndef _COSPROPERTY_IDL
#define _COSPROPERTY_IDL
#pragma prefix "omg.org"
module CosPropertyService {
/*****************************************************/
/* 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<PropertyName> PropertyNames;
typedef sequence<Property> Properties;
typedef sequence<PropertyDef> PropertyDefs;
typedef sequence<PropertyMode> PropertyModes;
typedef sequence<CORBA::TypeCode> 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<PropertyException> 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(PropertyNotFound, InvalidPropertyName);
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(PropertyNotFound, InvalidPropertyName, 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 modifying properties */
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 property_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();
};
};
#endif