// Example IDL source module Copex { exception InvalidInput { string message; }; struct temp_properties { long size; string<30> name; }; interface Temp { temp_properties GetProps(); void SetProps(in temp_properties p) raises(Copex::InvalidInput); // Destroy this object void remove(); }; typedef sequence TempList; enum colour { Red, Orange, Yellow, Green, Blue, Indigo, Violet }; struct pers_properties { string<30> shape; colour hue; }; interface Persistent { // make a new "Temp" object with the given properties Temp new_temp(in temp_properties p) raises(Copex::InvalidInput); pers_properties GetProps(); }; typedef sequence PersList; interface OneServant { string GetId(); }; typedef sequence OneList; interface OnDemand { string GetId(); }; typedef sequence DemandList; // an interface that lets us get at the other object references interface Supervisor { // return a sequence of all the temp objects TempList get_temp(); // the persistent objects PersList get_persistent(); // the OneServant objects OneList get_one(); // make another OneServant object with the specified ID OneServant new_one(in string<30> id); // OnDemand // get the list of OnDemand objects that have been instantiated DemandList get_loaded(); // the ones that are uninstantiated DemandList get_unloaded(); }; };