/* @brief callback function called on opening the IDL input file. * * Generate standard file header consisting of: * - mutiple inclusion prevention * - inclusion of Splice type definition files * - inclusion of application specific include files related to other IDL files * * @param scope Current scope (not used) * @param name Name of the IDL input file * @return Next action for this file (idl_explore) */ static idl_action idl_fileOpen( idl_scope scope, const char *name, void *userData) { c_long i; /* Generate multiple inclusion prevention code */ idl_fileOutPrintf(idl_fileCur(), "#ifndef %s\n", idl_macroFromBasename(name, "SPLTYPES_H")); idl_fileOutPrintf(idl_fileCur(), "#define %s\n", idl_macroFromBasename(name, "SPLTYPES_H")); idl_fileOutPrintf(idl_fileCur(), "\n"); if(!test_mode) { idl_fileOutPrintf(idl_fileCur(), "#include \"%s.h\"\n", includeFile); if(idl_dllGetHeader() != NULL) { idl_fileOutPrintf(idl_fileCur(), "%s\n", idl_dllGetHeader()); } } /* Generate inclusion of standard SPLICE-DDS type definition files */ idl_fileOutPrintf(idl_fileCur(), "#include <c_base.h>\n"); idl_fileOutPrintf(idl_fileCur(), "#include <c_misc.h>\n"); idl_fileOutPrintf(idl_fileCur(), "#include <c_sync.h>\n"); idl_fileOutPrintf(idl_fileCur(), "#include <c_collection.h>\n"); idl_fileOutPrintf(idl_fileCur(), "#include <c_field.h>\n"); idl_fileOutPrintf(idl_fileCur(), "\n"); /* Generate code for inclusion of application specific include files */ for (i = 0; i < idl_depLength(idl_depDefGet()); i++) { idl_fileOutPrintf(idl_fileCur(), "#include \"%sSplDcps.h\"\n", idl_depGet (idl_depDefGet(), i)); } if (idl_depLength(idl_depDefGet()) > 0) { idl_fileOutPrintf(idl_fileCur(), "\n"); } /* return idl_explore to indicate that the rest of the file needs to be processed */ return idl_explore; }
static idl_action idl_fileOpen( idl_scope scope, const char *name, void *userData) { idl_tmplExp te; c_char tmplFileName[1024]; c_char *tmplPath; c_char *orbPath; int tmplFile; struct os_stat_s tmplStat; unsigned int nRead; OS_UNUSED_ARG(scope); OS_UNUSED_ARG(userData); tmplPath = os_getenv("OSPL_TMPL_PATH"); orbPath = os_getenv("OSPL_ORB_PATH"); if (tmplPath == NULL) { printf ("OSPL_TMPL_PATH not defined\n"); return (idl_abort); } if (orbPath == NULL) { printf ("OSPL_ORB_PATH not defined\n"); return (idl_abort); } /* Prepare file header template */ snprintf(tmplFileName, sizeof(tmplFileName), "%s%c%s%ccorbaCxxStreamsClassSpecHeader", tmplPath, OS_FILESEPCHAR, orbPath, OS_FILESEPCHAR); /* QAC EXPECT 3416; No side effects here */ if ((os_stat(tmplFileName, &tmplStat) != os_resultSuccess) || (os_access(tmplFileName, OS_ROK) != os_resultSuccess)) { printf ("No template found or protection violation (%s)\n", tmplFileName); return (idl_abort); } /* QAC EXPECT 5007; will not use wrapper */ idlpp_template = os_malloc(tmplStat.stat_size+1); tmplFile = open(tmplFileName, O_RDONLY); nRead = (unsigned int)read(tmplFile, idlpp_template, tmplStat.stat_size); memset(&idlpp_template[nRead], 0, tmplStat.stat_size+1-nRead); close(tmplFile); idlpp_macroAttrib = idl_macroAttribNew(IDL_TOKEN_START, IDL_TOKEN_OPEN, IDL_TOKEN_CLOSE); idlpp_macroSet = idl_macroSetNew(); idlpp_inStream = idl_streamInNew(idlpp_template, idlpp_macroAttrib); /* Expand file header */ idl_macroSetAdd(idlpp_macroSet, idl_macroNew("basename", name)); /* set dll stuff */ idl_macroSetAdd(idlpp_macroSet, idl_macroNew(IDL_DLL_TMPLMACRO_MACRO_NAME, idl_dllGetMacro())); idl_macroSetAdd(idlpp_macroSet, idl_macroNew(IDL_DLL_TMPLMACRO_HEADER_NAME, idl_dllGetHeader())); te = idl_tmplExpNew(idlpp_macroSet); idl_tmplExpProcessTmpl(te, idlpp_inStream, idl_fileCur()); idl_streamInFree(idlpp_inStream); idl_tmplExpFree(te); /* Prepare class definition template */ snprintf(tmplFileName, sizeof(tmplFileName), "%s%c%s%ccorbaCxxStreamsClassSpec", tmplPath, OS_FILESEPCHAR, orbPath, OS_FILESEPCHAR); /* QAC EXPECT 3416; No side effects here */ if ((os_stat(tmplFileName, &tmplStat) != os_resultSuccess) || (os_access(tmplFileName, OS_ROK) != os_resultSuccess)) { printf ("No template found or protection violation (%s)\n", tmplFileName); return (idl_abort); } /* QAC EXPECT 5007; will not use wrapper */ idlpp_template = os_malloc(tmplStat.stat_size+1); tmplFile = open(tmplFileName, O_RDONLY); nRead = (unsigned int)read(tmplFile, idlpp_template, tmplStat.stat_size); memset(&idlpp_template[nRead], 0, tmplStat.stat_size+1-nRead); close(tmplFile); idlpp_indent_level = 0; return idl_explore; /* QAC EXPECT 2006; overview does not get better with one exit */ }