Changeset 255


Ignore:
Timestamp:
Mar 15, 2007, 9:42:22 PM (18 years ago)
Author:
cinc
Message:

Parameter checking for object pointer working.

Location:
trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/ORBit2-2.14.0/src/idl-compiler/orbit-idl-c-headers.c

    r254 r255  
    13211321    doWriteParametersOnly(of, tree);
    13221322    fprintf(of, "ev) \\\n");
    1323     fprintf(of, "        (parmCheckFunc_%s(nomSelf, ", id);
    1324     /* Parameters for call */
    1325     doWriteParametersOnly(of, tree);
    1326 
    1327     fprintf(of, "ev) ? \\\n");
    1328     fprintf(of, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", id2, id3);
    1329     fprintf(of, "        (nomSelf,");
    1330     /* add the parms */
    1331     doWriteParametersOnly(of, tree);
    1332     fprintf(of, "ev)) : %s_retval)\n", id);
    1333 
     1323    if(!strstr(id, "_nomIsObject"))
     1324      {
     1325        /* No check for _nomIsObject or otherwise we have a recursion */
     1326        fprintf(of, "        (parmCheckFunc_%s(nomSelf, ", id);
     1327        /* Parameters for call */
     1328        doWriteParametersOnly(of, tree);       
     1329        fprintf(of, "ev) ? \\\n");
     1330        fprintf(of, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", id2, id3);
     1331        fprintf(of, "        (nomSelf,");
     1332        /* add the parms */
     1333        doWriteParametersOnly(of, tree);
     1334        fprintf(of, "ev)) : %s_retval)\n", id);
     1335      }
     1336    else
     1337      {
     1338        fprintf(of, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", id2, id3);
     1339        fprintf(of, "        (nomSelf,");
     1340        /* add the parms */
     1341        doWriteParametersOnly(of, tree);
     1342        fprintf(of, "ev))\n");
     1343      }
    13341344    /* else NOM_NO_PARAM_CHECK */
    13351345    fprintf(of, "#else /* Extended parameter check */\n");
     
    13401350    doWriteParametersOnly(of, tree);
    13411351    fprintf(of, "ev) \\\n");
    1342     fprintf(of, "        (objectCheckFunc_%s(nomSelf, ", id2);
    1343     fprintf(of, " \"%s\") ? \\\n", id);
    1344     fprintf(of, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", id2, id3);
    1345     fprintf(of, "        (nomSelf,");
    1346     /* add the parms */
    1347     doWriteParametersOnly(of, tree);
    1348     fprintf(of, "ev)) : (");
    1349     orbit_cbe_write_param_typespec(of, tree);
    1350     fprintf(of, ") NULL)\n");
     1352    if(!strstr(id, "_nomIsObject"))
     1353      {
     1354        /* No check for _nomIsObject or otherwise we have a recursion */
     1355        if(!strcmp(id2, "NOMObject"))
     1356          fprintf(of, "        (nomCheckNOMObjectPtr((NOMObject*)nomSelf, %sClassData.classObject,", id2);
     1357        else
     1358          fprintf(of, "        (nomCheckObjectPtr((NOMObject*)nomSelf, %sClassData.classObject,", id2);
     1359        fprintf(of, " \"%s\", ev) ? \\\n", id); /* method name */
     1360        fprintf(of, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", id2, id3);
     1361        fprintf(of, "        (nomSelf,");
     1362        /* add the parms */
     1363        doWriteParametersOnly(of, tree);
     1364        fprintf(of, "ev)) : (");
     1365        orbit_cbe_write_param_typespec(of, tree);
     1366        fprintf(of, ") NULL)\n");
     1367      }
     1368    else
     1369      {
     1370        fprintf(of, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", id2, id3);
     1371        fprintf(of, "        (nomSelf,");
     1372        /* add the parms */
     1373        doWriteParametersOnly(of, tree);
     1374        fprintf(of, "ev))\n");
     1375      }
    13511376    fprintf(of, "#endif\n");
    13521377
     
    14801505      /******* Print generic object check function  *******/
    14811506
    1482       fprintf(ci->fh, "NOMEXTERN gboolean NOMLINK objectCheckFunc_%s(%s *nomSelf, gchar* chrMethodName);\n\n", id, id);
    1483 
     1507      if(!strcmp(id, "NOMObject"))
     1508        fprintf(ci->fh, "NOMEXTERN gboolean NOMLINK nomCheckNOMObjectPtr(NOMObject *nomSelf, NOMClass* nomClass, gchar* chrMethodName, CORBA_Environment *ev);\n\n");
     1509      else
     1510        fprintf(ci->fh, "NOMEXTERN gboolean NOMLINK nomCheckObjectPtr(NOMObject *nomSelf, NOMClass* nomClass, gchar* chrMethodName, CORBA_Environment *ev);\n\n");
    14841511     
    14851512      /******* Print introduced methods *******/
  • trunk/ORBit2-2.14.0/src/idl-compiler/orbit-idl-c-skelimpl.c

    r254 r255  
    460460         check the object pointer. */
    461461      fprintf(ski->of, "\n/* Function to check if an object is valid before calling a method on it */\n");
    462       fprintf(ski->of, "#ifndef NOM_NO_PARAM_CHECK\n");
     462      fprintf(ski->of, "#ifdef NOM_NO_PARAM_CHECK /* Disabled by now because not working */\n");
    463463      fprintf(ski->of, "NOMEXTERN ");               
    464464      fprintf(ski->of, "gboolean NOMLINK objectCheckFunc_%s(%s *nomSelf, gchar* chrMethodName)\n",
     
    466466      fprintf(ski->of, "{\n");
    467467     
    468       fprintf(ski->of, "if(!nomIsObj(nomSelf) || !_nomIsA(nomSelf , %sClassData.classObject, NULLHANDLE))\n", id2);
     468      fprintf(ski->of, "if(!nomIsObj(nomSelf) || !_nomIsANoClsCheck(nomSelf , %sClassData.classObject, NULLHANDLE))\n", id2);
    469469      fprintf(ski->of, "  {\n");
    470470      fprintf(ski->of, "  nomPrintObjectPointerError(nomSelf, \"%s\", chrMethodName);\n", id2);
     
    11341134                fprintf(ski->of, "{\n");
    11351135
    1136                 fprintf(ski->of, "if(!nomIsObj(nomSelf) || !_nomIsA(nomSelf , %sClassData.classObject, NULLHANDLE))\n", id2);
     1136                fprintf(ski->of, "if(!nomIsObj(nomSelf) || !_nomIsANoClsCheck(nomSelf , %sClassData.classObject, NULLHANDLE))\n", id2);
    11371137                fprintf(ski->of, "  {\n");
    11381138                fprintf(ski->of, "  nomPrintObjectPointerError(nomSelf, \"%s\", \"%s\");\n", id2, id);
  • trunk/nom/class_c/nomclassmanager.c

    r251 r255  
    302302  NOMClassMgrData* nomThis=NOMClassMgrGetData(nomSelf);
    303303
     304  g_message("In %s", __FUNCTION__);
    304305  NOMClassMgr_nomInit_parent((NOMObject*)nomSelf,  ev);
    305306
  • trunk/nom/class_c/nomcls.c

    r251 r255  
    7979  gchar* nObj;
    8080
    81   if(!nomSelf)
    82     return NULLHANDLE;
    83 
    8481  if(!_ncpObject)
    8582    return NULLHANDLE;
     
    134131                                                    CORBA_Environment *ev)
    135132{
     133#if 0
     134  CORBA_Environment tempEnv={0};
     135  tempEnv.fFlags=NOMENV_FLG_DONT_CHECK_OBJECT;
     136#endif
    136137  _nomRenewNoInit(nomSelf, nomObj, NULLHANDLE);
    137138
    138139  /* And now give the object the possibility to initialize... */
     140  /* Make sure the object is not checked. */
     141  //_nomInit((NOMObject*)nomObj, &tempEnv);
    139142  _nomInit((NOMObject*)nomObj, NULLHANDLE);
    140  
     143
    141144  return nomObj;
    142145}
     
    210213NOM_Scope void NOMLINK impl_NOMClass_nomClassReady(NOMClass* nomSelf, CORBA_Environment *ev)
    211214{
     215  CORBA_Environment tempEnv={0};
     216  tempEnv.fFlags=NOMENV_FLG_DONT_CHECK_OBJECT;
    212217
    213218  nomPrintf("    Entering %s  with nomSelf: 0x%x. nomSelf is: %s.\n",
     
    231236      //if(!_nomFindClassFromName(NOMClassMgrObject, _nomGetName(nomSelf, NULLHANDLE),
    232237      //                        0, 0, NULLHANDLE))
    233       if(!_nomFindClassFromName(NOMClassMgrObject, _nomGetClassName(nomSelf, NULLHANDLE),
    234                               0, 0, NULLHANDLE))
     238      if(!_nomFindClassFromName(NOMClassMgrObject, _nomGetClassName(nomSelf, &tempEnv),
     239                              0, 0, &tempEnv))
    235240
    236241        {
     
    305310{
    306311/* NOMClassData* nomThis=NOMClassGetData(nomSelf); */
    307 
    308   //nomPrintf("    Entering %s  with nomSelf: 0x%x. nomSelf is: %s.\n",
    309   //           __FUNCTION__, nomSelf, nomSelf->mtab->nomClassName);
    310 
    311   NOMClass_nomInit_parent(nomSelf,  ev);
    312 }
    313 
     312#if 0
     313  CORBA_Environment tempEnv={0};
     314  tempEnv.fFlags=NOMENV_FLG_DONT_CHECK_OBJECT;
     315#endif
     316  //  nomPrintf("    Entering %s  with nomSelf: 0x%x. nomSelf is: %s.\n",
     317  //         __FUNCTION__, nomSelf, nomSelf->mtab->nomClassName);
     318
     319  /* Don't check object pointer. We are just created but not yet registered as a class. */
     320  //  NOMClass_nomInit_parent(nomSelf,  &tempEnv);
     321  NOMClass_nomInit_parent(nomSelf, NULLHANDLE);
     322}
     323
     324
     325
     326
  • trunk/nom/class_c/nomobj.c

    r251 r255  
    164164{
    165165  /* NOMObjectData* nomThis=NOMObjectGetData(nomSelf); */
    166   NOMClassPriv* ncp;
    167   nomMethodTabs mtabs; /* List of mtabs */
    168166
    169167  if(!nomIsObj(nomClass)){
     
    171169    return FALSE;
    172170  }
     171
     172  return _nomIsANoClsCheck(nomSelf, nomClass, ev);
     173}
     174
     175
     176NOM_Scope CORBA_boolean NOMLINK impl_NOMObject_nomIsANoClsCheck(NOMObject* nomSelf, const PNOMClass nomClass,
     177                                                                CORBA_Environment *ev)
     178{
     179  /* NOMObjectData* nomThis=NOMObjectGetData(nomSelf); */
     180  NOMClassPriv* ncp;
     181  nomMethodTabs mtabs; /* List of mtabs */
    173182
    174183  /* Check if we have the class in our list of classes */
     
    185194}
    186195
    187 
    188196NOM_Scope CORBA_boolean NOMLINK impl_NOMObject_nomIsInstanceOf(NOMObject* nomSelf, const PNOMClass nomClass, CORBA_Environment *ev)
    189197{
  • trunk/nom/exports.def

    r219 r255  
    1919        nomRegisterDLLByName
    2020        nomQueryUsingNameIsDLLRegistered
     21;        nomPrintObjectPointerErrorMsg
     22        nomCheckNOMObjectPtr
     23        nomCheckObjectPtr
     24        nomCreateEnvNoObjectCheck
    2125
    2226        nomPrintf               
  • trunk/nom/idl/nomobj.idl

    r251 r255  
    175175     subclasses.
    176176
    177      \sa nomIsInstanceOf()
     177     \sa nomIsInstanceOf(), nomIsANoClsCheck()
    178178   */
    179179  boolean nomIsA(in PNOMClass nomClass);
     
    190190     \returns TRUE if the object is an instance of exactly the given class.
    191191
    192      \sa nomIsA()
     192     \sa nomIsA(), nomIsANoClsCheck()
    193193   */
    194194  boolean nomIsInstanceOf(in PNOMClass nomClass);
     
    206206  string nomGetClassName();
    207207
     208  /**
     209     This method checks if the object is an instance of the given class or some subclass. Using
     210     this method one can make sure some feature is available if the introducing class is known.
     211     Every subclass of a given class also supports the features of the introducing class.
     212
     213     \remarks This method does \e not check the validity of \e nomClass using nomIsObj(). So
     214     make sure to have checked it beforehand. You may want to use nomIsA() instead;
     215
     216     \param nomClass Pointer to a class object.
     217
     218     \returns TRUE if the object is an instance of the given class or one of its
     219     subclasses.
     220
     221     \sa nomIsInstanceOf(), nomIsA()
     222   */
     223  boolean nomIsANoClsCheck(in PNOMClass nomClass);
    208224
    209225};
    210226
    211227#endif /* NOMOBJ_IDL_INCLUDED */
     228
     229
  • trunk/nom/include/nom.h

    r242 r255  
    161161
    162162/* The following is probably not correct... */
    163 typedef NOMAnyObj CORBA_Environment;
     163//typedef NOMAnyObj CORBA_Environment;
    164164
    165165#define nomresolve_(obj,mToken) ((nomMethodProc*)((void)obj, mToken))
  • trunk/nom/include/nomapi.h

    r251 r255  
    181181} nomClassList, *nomClasses;
    182182
     183
     184#define NOMENV_FLG_DONT_CHECK_OBJECT  0x00000001
     185
     186typedef struct
     187{
     188  gulong fFlags;
     189  gpointer pReserved1;
     190  gpointer pReserved2; 
     191}nomEnvironment;
     192
     193typedef nomEnvironment CORBA_Environment;
     194
    183195NOMEXTERN NOMClass * NOMLINK nomBuildClass (gulong ulReserved,
    184196                                            nomStaticClassInfo *sci,
     
    186198                                            gulong ulMinorVersion);
    187199
    188 //#define nomIsObj(a) ((a)!= 0)
    189200#endif /* NOMAPI_H_INCLUDED */
    190201
  • trunk/nom/include/nomtk.h

    r221 r255  
    1616* The Initial Developer of the Original Code is
    1717* netlabs.org: Chris Wohlgemuth <cinc-ml@netlabs.org>.
    18 * Portions created by the Initial Developer are Copyright (C) 2005-2006
     18* Portions created by the Initial Developer are Copyright (C) 2005-2007
    1919* the Initial Developer. All Rights Reserved.
    2020*
     
    7575NOMEXTERN nomId NOMLINK nomIdFromString(gchar* inString);
    7676NOMEXTERN gchar* NOMLINK nomStringFromId(nomId inId);
     77NOMEXTERN void NOMLINK nomPrintObjectPointerError(NOMObject*  nomObject, gchar *chrClsName, gchar* chrMethodName);
     78NOMEXTERN gboolean NOMLINK nomCheckObjectPtr(NOMObject *nomSelf, NOMClass* nomClass, gchar* chrMethodName, CORBA_Environment *ev);
     79NOMEXTERN CORBA_Environment* NOMLINK nomCreateEnvNoObjectCheck(void);
    7780
    7881/* Functions used by nomBuildClass() */
  • trunk/nom/src/nombuildclass.c

    r221 r255  
    1616* The Initial Developer of the Original Code is
    1717* netlabs.org: Chris Wohlgemuth <cinc-ml@netlabs.org>.
    18 * Portions created by the Initial Developer are Copyright (C) 2005-2006
     18* Portions created by the Initial Developer are Copyright (C) 2005-2007
    1919* the Initial Developer. All Rights Reserved.
    2020*
     
    969969                                                  ulMajorVersion, ulMinorVersion);
    970970        if(nomClass){
     971          CORBA_Environment * tempEnv=nomCreateEnvNoObjectCheck();
     972
    971973          DBG_NOMBUILDCLASS(TRUE, "%s: class is 0x%x\n", nomClass->mtab->nomClassName, nomClass);
    972974#if 0
     
    977979          priv_checkForNomUnInitOverride( (NOMClassPriv*)nomClass->mtab->nomClsInfo,  ncpParent);
    978980#endif     
    979           _nomInit((NOMObject*)nomClass, NULLHANDLE);
    980           _nomClassReady(nomClass, NULLHANDLE);
     981          /* Make sure the env is marked that we don't chek the object pointer. This would fail
     982             because the class isn't registered yet. */
     983          _nomInit((NOMObject*)nomClass, tempEnv);
     984          _nomClassReady(nomClass, tempEnv);
    981985        }
    982986
     
    993997
    994998      if(nomClass){
    995         _nomInit((NOMObject*)nomClass, NULLHANDLE);
    996         _nomClassReady(nomClass, NULLHANDLE);
     999        CORBA_Environment * tempEnv=nomCreateEnvNoObjectCheck();
     1000        /* Make sure the env is marked that we don't chek the object pointer. This would fail
     1001           because the class isn't registered yet. */
     1002        _nomInit((NOMObject*)nomClass, tempEnv);
     1003        _nomClassReady(nomClass, tempEnv);
    9971004      }
    9981005      return nomClass;
     
    10881095
    10891096  if(nomClass){
     1097    CORBA_Environment * tempEnv=nomCreateEnvNoObjectCheck();
     1098
    10901099    /* Mark the class as using nomUnInit() if any parent did that. We just have to
    10911100       check the flag and the flag of the parent class. This information is important
     
    10941103    priv_checkForNomUnInitOverride( (NOMClassPriv*)nomClass->mtab->nomClsInfo,  ncpParent);
    10951104   
    1096     _nomInit(nomClass, NULLHANDLE);
    1097     _nomClassReady(nomClass, NULLHANDLE);
     1105    /* Make sure the env is marked that we don't chek the object pointer. This would fail
     1106       because the class isn't registered yet. */
     1107    _nomInit(nomClass, tempEnv);
     1108    _nomClassReady(nomClass, tempEnv);
    10981109  }
    10991110  return nomClass;
  • trunk/nom/src/nombuildnomcls.c

    r221 r255  
    1616* The Initial Developer of the Original Code is
    1717* netlabs.org: Chris Wohlgemuth <cinc-ml@netlabs.org>.
    18 * Portions created by the Initial Developer are Copyright (C) 2005-2006
     18* Portions created by the Initial Developer are Copyright (C) 2005-2007
    1919* the Initial Developer. All Rights Reserved.
    2020*
  • trunk/nom/src/nombuildnomobj.c

    r221 r255  
    1616* The Initial Developer of the Original Code is
    1717* netlabs.org: Chris Wohlgemuth <cinc-ml@netlabs.org>.
    18 * Portions created by the Initial Developer are Copyright (C) 2005-2006
     18* Portions created by the Initial Developer are Copyright (C) 2005-2007
    1919* the Initial Developer. All Rights Reserved.
    2020*
  • trunk/nom/src/nomdebug.c

    r94 r255  
    1616* The Initial Developer of the Original Code is
    1717* netlabs.org: Chris Wohlgemuth <cinc-ml@netlabs.org>.
    18 * Portions created by the Initial Developer are Copyright (C) 2005-2006
     18* Portions created by the Initial Developer are Copyright (C) 2005-2007
    1919* the Initial Developer. All Rights Reserved.
    2020*
     
    5555//#include "cwsomcls.h"
    5656extern NOMClassMgr* NOMClassMgrObject;
    57 
     57extern gboolean fInitialized;
     58
     59NOMEXTERN void NOMLINK nomPrintObjectPointerErrorMsg(NOMObject*  nomObject, gchar *chrClsName, gchar* chrMethodName)
     60{
     61  if(!nomObject)
     62    g_warning("The object used to call the method %s is not valid. A NULL pointer was given.", chrMethodName);
     63  else{
     64    if(!nomIsObj(nomObject))
     65      g_warning("The object used to call the method %s is not a valid NOM object. ", chrMethodName);
     66    else
     67      g_warning("The object used to call the method %s is not valid for this method. The object must be some instance of class %s (or of a subclass) but is a %s.", chrMethodName, chrClsName, NOMObject_nomGetClassName(nomObject, NULLHANDLE));
     68  }
     69}
     70
     71/*
     72  This function prints some more info about the object error. It's used for generic checks which
     73  always return NULL which isn't always correct.
     74 */
     75static void nomPrintAdditionalErrorMsg(void)
     76{
     77  g_message("Note that NULL is returned for the call (if the method returns a value). This may not be correct. Use the NOMPARMCHECK() macro to specify default return values for methods.");
     78}
     79
     80/* Function to check if  NOMObject is valid before calling a method on it. Note that we don't have to check
     81   the instance class here using nomIsA*(). */
     82NOMEXTERN gboolean NOMLINK nomCheckNOMObjectPtr(NOMObject *nomSelf, NOMClass* nomClass, gchar* chrMethodName, CORBA_Environment *ev)
     83{
     84  /* Not initialized yet, so object check won't work. This means the three core NOM classes are not
     85     yet created.*/
     86  if(!fInitialized)
     87    return TRUE;
     88 
     89  if(ev && (ev->fFlags & NOMENV_FLG_DONT_CHECK_OBJECT))
     90    return TRUE;
     91
     92  //  g_message("In %s with %s %px nomClass: %px (%s)", __FUNCTION__, chrMethodName, nomSelf, nomClass, nomClass->mtab->nomClassName);
     93  if(!nomIsObj(nomSelf))
     94    {
     95      nomPrintObjectPointerErrorMsg(nomSelf, nomClass->mtab->nomClassName, chrMethodName);
     96      nomPrintAdditionalErrorMsg();
     97      return FALSE;
     98    }
     99  return TRUE;
     100}
     101
     102#include <string.h>
     103/* Function to check if an object is valid before calling a method on it */
     104NOMEXTERN gboolean NOMLINK nomCheckObjectPtr(NOMObject *nomSelf, NOMClass* nomClass, gchar* chrMethodName, CORBA_Environment *ev)
     105{
     106  /* Not initialized yet, so object check won't work. This means the three core NOM classes are not
     107     yet created.*/
     108  if(!fInitialized)
     109    return TRUE;
     110
     111  //if(strstr( chrMethodName, "nomIsObj"))
     112  //return TRUE;
     113
     114  if(ev && (ev->fFlags & NOMENV_FLG_DONT_CHECK_OBJECT))
     115    return TRUE;
     116
     117  //  g_message("In %s with %s %px nomClass: %px (%s)", __FUNCTION__, chrMethodName, nomSelf, nomClass, nomClass->mtab->nomClassName);
     118  if(!nomIsObj(nomSelf) || !_nomIsANoClsCheck(nomSelf, nomClass, NULLHANDLE))
     119    {
     120      nomPrintObjectPointerErrorMsg(nomSelf, nomClass->mtab->nomClassName, chrMethodName);
     121      nomPrintAdditionalErrorMsg();
     122      return FALSE;
     123    }
     124  return TRUE;
     125}
     126
     127NOMEXTERN CORBA_Environment* NOMLINK nomCreateEnvNoObjectCheck(void)
     128{
     129  CORBA_Environment * tempEnv=(CORBA_Environment*)NOMMalloc(sizeof(CORBA_Environment));
     130  if(tempEnv)
     131    tempEnv->fFlags|=NOMENV_FLG_DONT_CHECK_OBJECT;
     132  return tempEnv;
     133}
     134 
    58135static void dumpClassFunc(GQuark gquark, gpointer data, gpointer user_data)
    59136{
  • trunk/nom/src/nomtkinit.c

    r219 r255  
    6161NOMClassMgr* NOMClassMgrObject=NULLHANDLE; /* Referenced from different files */
    6262
     63gboolean fInitialized=FALSE;
     64
    6365/********************************************************/
    6466/*   Toolkit functions, exported                        */
     
    131133  NOMClassPriv* ncPriv;
    132134  NOMClass* nomCls;
     135  //  NOMClassMgr *NOMClassMgrObject_priv;
    133136#if 0
    134137  NOMObject *nomObj;
     
    162165
    163166#ifdef DEBUG_NOMENVNEW
    164   nomPrintf("%s: NOMClassMgrObject: %x \n", __FUNCTION__, NOMClassMgrObject);
     167  nomPrintf("%s: NOMClassMgrObject: %x (%x)\n", __FUNCTION__, NOMClassMgrObject, pGlobalNomEnv->defaultMetaClass);
    165168#endif
    166169
     
    196199  _nomTestFunc_NOMTest2(nomTst2Obj, NULLHANDLE);
    197200#endif
     201  /* This must be done last! */
     202  //  NOMClassMgrObject=NOMClassMgrObject_priv;
     203
     204  fInitialized=TRUE;
    198205
    199206  return NOMClassMgrObject;
Note: See TracChangeset for help on using the changeset viewer.