# Using the IDL Administrative interfaces

ORBLink ORB administrative interfaces are themselves specified in IDL, or more technically in pseudo-IDL. Pseudo-IDL is like IDL except that:

1. A pseudo-interface, an interface specified in pseudo-IDL, does not generate `-servant` or `-stub` classes, and
2. a pseudo-object may not be passed remotely.

Most of the pseudo-interfaces defined by the IDL for the administration of the ORB are defined in the ORBLink module. The associated symbols are thus interned as external symbols in the `orblink` package.

Except for this all of the mapping is done as specified in the official mapping document.

All of the ORB pseudo-interfaces in excess of what is specified by CORBA itself are defined in IDL itself. Interface definitions in this file are hyperlinked to their semantic definition.

Thus, the Lisp calling sequence for any particular API can be determined directly from the pseudo-IDL.

For example, some of the IDL for message looks like:

    module ORBLink {...
      pseudo interface Message {
         ...
        enum MessageDirection {incoming,outgoing,unknown};
        readonly attribute MessageDirection direction;
      };
    };

This is shorthand for the following:

- There is a Lisp class named by the Lisp symbol `orblink:message`.
- There is a Lisp type named by the Lisp symbol `orblink:message/messagedirection` which denotes the type comprising the three keywords `:incoming`, `:outgoing` and `:unknown`.
- If `m` is a Lisp symbol bound to an instance of `orblink:message`, then the invocation:

      (op:direction m)

  will return a value of type `orblink:message/messagedirection`.

Note that this API gives no way actually to create a new message.

It is important remember that the variable `corba:orb` is always bound to an instance of the ORB pseudo-interface.