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;
          }
       ...