// File: CORBA_StandardExceptions.idl
// CORBA 3.0, Chapter 4
    
    const unsigned long OMGVMCID = 0x4f4d0000;

#define ex_body {unsigned long minor; completion_status completed;}

    enum completion_status {COMPLETED_YES, 
                            COMPLETED_NO, 
                            COMPLETED_MAYBE};
    enum exception_type {   NO_EXCEPTION, 
                            USER_EXCEPTION, 
                            SYSTEM_EXCEPTION};

    exception UNKNOWN       ex_body;    // the unknown exception
    exception BAD_PARAM     ex_body;    // an invalid parameter was
                                        // passed
    exception NO_MEMORY     ex_body;    // dynamic memory allocation
                                        // failure  
    exception IMP_LIMIT     ex_body;    // violated implementation
                                        // limit
    exception COMM_FAILURE  ex_body;    // communication failure
    exception INV_OBJREF    ex_body;    // invalid object reference
    exception NO_PERMISSION ex_body;    // no permission for 
                                        // attempted op.
    exception INTERNAL      ex_body;    // ORB internal error
    exception MARSHAL       ex_body;    // error marshaling
                                        // param/result
    exception INITIALIZE    ex_body;    // ORB initialization failure
    exception NO_IMPLEMENT  ex_body;    // operation implementation
                                        // unavailable
    exception BAD_TYPECODE  ex_body;    // bad typecode
    exception BAD_OPERATION ex_body;    // invalid operation
    exception NO_RESOURCES  ex_body;    // insufficient resources 
                                        // for req.
    exception NO_RESPONSE   ex_body;    // response to req. not yet
                                        // available
    exception PERSIST_STORE ex_body;    // persistent storage failure
    exception BAD_INV_ORDER ex_body;    // routine invocations 
                                        // out of order
    exception TRANSIENT     ex_body;    // transient failure - reissue
                                        // request
    exception FREE_MEM      ex_body;    // cannot free memory
    exception INV_IDENT     ex_body;    // invalid identifier syntax
    exception INV_FLAG      ex_body;    // invalid flag was specified
    exception INTF_REPOS    ex_body;    // error accessing interface
                                        // repository
    exception BAD_CONTEXT   ex_body;    // error processing context
                                        // object
    exception OBJ_ADAPTER   ex_body;    // failure detected by object
                                        // adapter
    exception DATA_CONVERSION  ex_body; // data conversion error
    exception OBJECT_NOT_EXIST ex_body; // non-existent object,
                                        // delete reference
    exception TRANSACTION_REQUIRED                      
                            ex_body;    // transaction required
    exception TRANSACTION_ROLLEDBACK    
                            ex_body;    // transaction rolled back
    exception INVALID_TRANSACTION                       
                            ex_body;    // invalid transaction
    exception INV_POLICY    ex_body;    // invalid policy
    exception CODESET_INCOMPATIBLE
                            ex_body;    // incompatible code set
    exception REBIND        ex_body;    // rebind needed
    exception TIMEOUT       ex_body;    // operation timed out
    exception TRANSACTION_UNAVAILABLE ex_body;
                                        // no transaction
    exception TRANSACTION_MODE ex_body; // invalid transaction mode
    exception BAD_QOS       ex_body;    // bad quality of service
