The example starts with the assumption that the class implementer has successfully built a SOM class library DLL, called "stack.dll", in the manner described in Section 5.6, "Creating a SOM Class Library," of Chapter 5, "Implementing Classes in SOM." The DLL implements the following IDL interface.
#include <somobj.idl> interface Stack: SOMObject { const long stackSize = 10; exception STACK_OVERFLOW{}; exception STACK_UNDERFLOW{}; boolean full(); boolean empty(); long top() raises(STACK_UNDERFLOW); long pop() raises(STACK_UNDERFLOW); void push(in long element) raises(STACK_OVERFLOW); #ifdef __SOMIDL__ implementation { releaseorder: full, empty, top, pop, push; somDefaultInit: override; long stackTop; // top of stack index long stackValues[stackSize]; // stack elements dllname = "stack.dll"; }; #endif };
This DLL could have been built without the knowledge that it would ever
be accessed remotely (that is, built following the procedures in Chapter
5). Note, however, that some DLLs may require changes in the way their classes
pass arguments and manage memory, in order to be used by remote clients
(see the topic "Implementation Constraints" in section 6.5, "Implementing
Classes").