Successful initialization verification
Under some circumstances, the library might be loaded into memory but not properly initialized. For example, if the environment variable CLIENT_LOCALE is set to an invalid locale, the GLS library does not properly initialize, and thus the Object Interface for C++ library also does not properly initialize.
To allow Object Interface for C++ application programs to verify that initialization
succeeded, several new members have been added to the ITFactoryList
class (defined in the public header file $INFORMIXDIR/incl/c++/itcppop.h):
class IT_EXPORTCLASS ITFactoryList
{
...
public:
// These are the built-in factory list initialization state values
enum InitState { NOTINIT, INITING, INITED };
// This function can be used to determine if the built-in factory
// list initialized properly. It returns
ITFactoryList::NOTINIT
// if initialization failed.
static InitState GetInitState();
...
};
The user application calls GetInitState() before
using any Object Interface for C++ classes or interfaces to determine if Object Interface for C++ initialized
properly, as follows:
main(int, char *)
{
// check that Object Interface for C++ DLL initialized ok
if (ITFactoryList::GetInitState() == ITFactoryList::NOTINIT)
{
cout << "Error: Object Interface for C++ DLL not
initialized" <<
endl;
cout << "Error: exiting program" << endl;
return -1;
}
...