// File: CORBA_Object.idl
// CORBA 3.0, Chapter 4

    //PIDL
    struct NamedValue { 
        Identifier      name;       // argument name
        any             argument;   // argument
        long            len;        // length/count of argument value
        Flags           arg_modes;  // argument mode flags
    };

    enum SetOverrideType {SET_OVERRIDE, ADD_OVERRIDE};

    interface Object {                  // PIDL

        InterfaceDef get_interface ();

        boolean is_nil();

        Object duplicate ();

        void release ();

        boolean is_a (
            in string               logical_type_id
        );

        boolean non_existent();

        boolean is_equivalent (
            in Object               other_object
        );

        unsigned long hash(
            in unsigned long        maximum
        );

        void create_request (           
            in    Context           ctx,
            in    Identifier        operation,
            in    NVList            arg_list,
            inout NamedValue        result,
            out   Request           request,
            in    Flags             req_flag
        );

        Policy get_policy (
            in PolicyType           policy_type
        );

        DomainManagersList get_domain_managers ();

        Object set_policy_overrides(
            in PolicyList           policies,
            in SetOverrideType      set_add
        ) raises(InvalidPolicies);

        Policy get_client_policy(
            in PolicyType           type
        );

        PolicyList get_policy_overrides(
            in PolicyTypeSeq        types
        );

        boolean validate_connection(
            out PolicyList          inconsistent_policies
        );

        Object get_component ();
    };
