Changeset 282


Ignore:
Timestamp:
Mar 31, 2007, 12:23:12 PM (18 years ago)
Author:
cinc
Message:

Some fixes for check funtions handling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/idl-compiler/h-emitter_c/h_file_emitter.c

    r280 r282  
    160160
    161161      fprintf(fh, " NOMLINK nomTP_%s_%s(%s* nomSelf,\n", pif->chrName,  pm->chrName, pif->chrName);
    162 
    163162      /* Do parameters */
    164163      emitMethodParams(pLocalPI, pif, pm->pParamArray);
    165 
    166164      fprintf(fh, "    CORBA_Environment *ev);\n");
    167165      fprintf(fh, "typedef nomTP_%s_%s *nomTD_%s_%s;\n", pif->chrName,  pm->chrName,
     
    176174      fprintf(fh, "#ifdef %s_%s_ParmCheck_h /* Extended parameter check enabled */\n",
    177175              pif->chrName, pm->chrName);
     176      /* Forward declaration of parameter test function */
    178177      fprintf(fh, "NOMEXTERN gboolean NOMLINK parmCheckFunc_%s_%s(%s *nomSelf,\n",
    179178              pif->chrName,  pm->chrName, pif->chrName);
     
    181180      emitMethodParams(pLocalPI, pif, pm->pParamArray);
    182181      fprintf(fh, "    CORBA_Environment *ev);\n");
    183 
     182      /* Macro to be used when several parameters are checked */
    184183      fprintf(fh, "#define %s_%s(nomSelf,", pif->chrName, pm->chrName);
    185184      /* Do parameters */
    186185      emitMethodParamsNoTypes(pLocalPI, pif, pm->pParamArray);
    187186      fprintf(fh, " ev) \\\n");
    188       fprintf(fh, "        (parmCheckFunc_%s_%s(nomSelf,", pif->chrName, pm->chrName);
    189       /* Do parameters */
    190       emitMethodParamsNoTypes(pLocalPI, pif, pm->pParamArray);
    191       fprintf(fh, " ev) ? \\\n");
    192       fprintf(fh, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", pif->chrName, pm->chrName);
    193       fprintf(fh, "        (nomSelf,");
    194       /* Do parameters */
    195       emitMethodParamsNoTypes(pLocalPI, pif, pm->pParamArray);
    196       fprintf(fh, " ev)) : %s_%s_retval)\n", pif->chrName, pm->chrName);
    197       fprintf(fh, "#else /* Extended parameter check */\n");
     187
     188      if(strcmp(pm->chrName, "nomIsObject"))
     189        {
     190          fprintf(fh, "        (parmCheckFunc_%s_%s(nomSelf,", pif->chrName, pm->chrName);
     191          /* Do parameters */
     192          emitMethodParamsNoTypes(pLocalPI, pif, pm->pParamArray);
     193          fprintf(fh, " ev) ? \\\n");
     194          fprintf(fh, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", pif->chrName, pm->chrName);
     195          fprintf(fh, "        (nomSelf,");
     196          /* Do parameters */
     197          emitMethodParamsNoTypes(pLocalPI, pif, pm->pParamArray);
     198          fprintf(fh, " ev)) : %s_%s_retval)\n", pif->chrName, pm->chrName);
     199        }
     200      else
     201        {
     202          /* No check for nomIsObject or otherwise we have a recursion */
     203          fprintf(fh, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", pif->chrName, pm->chrName);
     204          fprintf(fh, "        (nomSelf,");
     205          /* Do parameters */
     206          emitMethodParamsNoTypes(pLocalPI, pif, pm->pParamArray);
     207          fprintf(fh, " ev))\n");
     208        }
     209      fprintf(fh, "#else /* Extended parameter check */\n"); /* else NOM_NO_PARAM_CHECK */
     210      /* Check object only  */
    198211      fprintf(fh, "#define %s_%s(nomSelf,", pif->chrName, pm->chrName);
    199212      /* Do parameters */
    200213      emitMethodParamsNoTypes(pLocalPI, pif, pm->pParamArray);
    201214      fprintf(fh, " ev) \\\n");
    202       if(strcmp(pif->chrName , "NOMObject"))
    203         fprintf(fh, "        (nomCheckObjectPtr((NOMObject*)nomSelf, %sClassData.classObject,",pif->chrName);
     215      if(strcmp(pm->chrName, "nomIsObject"))
     216        {
     217          if(strcmp(pif->chrName , "NOMObject"))
     218            fprintf(fh, "        (nomCheckObjectPtr((NOMObject*)nomSelf, %sClassData.classObject,",pif->chrName);
     219          else
     220            fprintf(fh, "        (nomCheckNOMObjectPtr(nomSelf, %sClassData.classObject,",pif->chrName);
     221          fprintf(fh, "\"%s_%s\", ev) ? \\\n", pif->chrName, pm->chrName);
     222          fprintf(fh, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", pif->chrName, pm->chrName);
     223          fprintf(fh, "        (nomSelf,");
     224          /* Do parameters */
     225          emitMethodParamsNoTypes(pLocalPI, pif, pm->pParamArray);
     226          fprintf(fh, " ev)) : (%s", pm->mpReturn.chrType);
     227          for(b=0;b<pm->mpReturn.uiStar;b++)
     228            fprintf(fh, "*");
     229          fprintf(fh, ") NULL)\n");
     230        }
    204231      else
    205         fprintf(fh, "        (nomCheckNOMObjectPtr(nomSelf, %sClassData.classObject,",pif->chrName);
    206       fprintf(fh, "\"%s_%s\", ev) ? \\\n", pif->chrName, pm->chrName);
    207 
    208       fprintf(fh, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", pif->chrName, pm->chrName);
    209       fprintf(fh, "        (nomSelf,");
    210       /* Do parameters */
    211       emitMethodParamsNoTypes(pLocalPI, pif, pm->pParamArray);
    212       fprintf(fh, " ev)) : (%s", pm->mpReturn.chrType);
    213       for(b=0;b<pm->mpReturn.uiStar;b++)
    214         fprintf(fh, "*");
    215       fprintf(fh, ") NULL)\n");
     232        {
     233          /* No check for nomIsObject or otherwise we have a recursion */
     234          fprintf(fh, "        (NOM_Resolve(nomSelf, %s, %s) \\\n", pif->chrName, pm->chrName);
     235          fprintf(fh, "        (nomSelf,");
     236          /* Do parameters */
     237          emitMethodParamsNoTypes(pLocalPI, pif, pm->pParamArray);
     238          fprintf(fh, " ev))\n");
     239        }
    216240      fprintf(fh, "#endif\n");
    217241      fprintf(fh, "#else /* NOM_NO_PARAM_CHECK */\n");
     
    239263          pif->chrName);
    240264 
    241   fprintf(fh, "#define _%s (%s*)%sClassData.classObject\n\n",
    242           pif->chrName, pif->chrMetaClass, pif->chrName);
    243  
     265#if 0
     266  if(pif->chrMetaClass)
     267    fprintf(fh, "#define _%s (%s*)%sClassData.classObject\n\n",
     268            pif->chrName, pif->chrMetaClass, pif->chrName);
     269  else
     270#endif
     271    fprintf(fh, "#define _%s %sClassData.classObject\n\n",
     272            pif->chrName,  pif->chrName);
     273
    244274  fprintf(fh, "/*\n * New macro for WPObject\n */\n\n");
    245275  fprintf(fh, "#define %sNew() \\\n", pif->chrName);
    246276  fprintf(fh, "        ((%s*)_nomNew((_%s ? _%s : ", pif->chrName, pif->chrName, pif->chrName);
    247   fprintf(fh, "(%s*)%sNewClass(%s_MajorVersion, %s_MinorVersion)), (void*) 0))\n\n",
    248           pif->chrName, pif->chrName, pif->chrName, pif->chrName);
     277  fprintf(fh, "%sNewClass(%s_MajorVersion, %s_MinorVersion)), (void*) 0))\n\n",
     278          pif->chrName, pif->chrName, pif->chrName);
    249279
    250280}
Note: See TracChangeset for help on using the changeset viewer.