The following example illustrates the implementation and use of initializers and destructors from the C++ bindings. The first part shows the IDL for three classes with initializers. For variety, some of the classes use callstyle OIDL and others use callstyle IDL.
#include <somobj.idl>
interface A : SOMObject {
readonly attribute long a;
implementation {
releaseorder: _get_a;
functionprefix = A;
somDefaultInit: override, init;
somDestruct: override;
somPrintSelf: override;
};
};
(null)
interface B : SOMObject {
readonly attribute long b;
void BwithInitialValue(inout somInitCtrl ctrl,
in long initialValue);
implementation {
callstyle = oidl;
releaseorder: _get_b, BwithInitialValue;
functionprefix = B;
BwithInitialValue: init;
somDefaultInit: override, init;
somDestruct: override;
somPrintSelf: override;
};
};
(null)
interface C : A, B {
readonly attribute long c;
void CwithInitialValue(inout somInitCtrl ctrl,
in long initialValue);
void CwithInitialString(inout somInitCtrl ctrl,
in string initialString);
implementation {
releaseorder: _get_c, CwithInitialString,
CwithInitialValue;
functionprefix = C;
CwithInitialString: init;
CwithInitialValue: init;
somDefaultInit: override;
somDestruct: override;
somPrintSelf: override;
};
};