====== somFree Compiler and Emitter Framework ====== Оглавление I. User's Guide 9 1. Introduction 9 2. Changes 10 II. Programmer's Guide 10 1. Introduction 10 2. Structure of SOM Compiler and Emitter Framwork 10 3. Interaction of SOM Compiler components 13 4. Template faculty 13 5. Generic Emitter 15 6. DEF Emitter 16 7.LNK Emitter 16 8. CSC, PSC, SC Emitters 16 9. IDL, PDL Emitters 16 10. Developing new emitter 16 11. SOM Interface Definition Language 16 12. SOM Object Interface Definition Language 16 13. CORBA C Language mapping 17 14. SOM C Language mapping 17 III. Programmer's reference 17 1. SOM Runtime C library 17 2. SOM Compiler library 17 somtfexists, somtfexistsSL function 17 somtsearchFile, somtsearchFileSL function 18 somttraverseParents, somttraverseParentsSL function 18 somtloadSL function 18 somtfindBaseEp, somtfindBaseEpSL function 18 somtgetType, somtgetTypeSL function 18 somtokfopen, somtokfopenSL function 18 somtokrename, somtokrenameSL function 18 somtopenEmitFile, somtopenEmitFileSL function 18 somtisDbcs, somtisDbcsSL function 18 somtremoveExt, somtremoveExtSL function 19 somtaddExt, somtaddExtSL function 19 somtarrayToPtr, somtarrayToPtrSL function 19 somtattNormalise, somtattNormaliseSL function 19 somtbasename, somtbasenameSL function 19 somtctos, somtctosSL function 19 somtdbcsPostincr, somtdbcsPostincrSL function 19 somtdbcsPreincr, somtdbcsPreincrSL function 19 somtdbcsStrchr, somtdbcsStrchrSL function 19 somtdbcsStrrchr, somtdbcsStrrchrsL function 19 somtdbcsStrstr, somtdbcsStrstrSL function 19 somteptotype, somteptotypeSL function 20 somtgetDesc, somtgetDescSL function 20 somtgetVersion, somtgetVersionSL function 20 somtgetgatt, somtgetgattSL function 20 somtnextword, somtnextwordSL function 20 somtnormaliseDesc, somtnormaliseDescSL function 20 somtsatos, somtsatosSL function 20 somtsearchFile, somtsearchFileSL function 20 somtskipws, somtskipwsSL function 20 somtstringFmt, somtstringFmtSL function 20 somttype, somttypeSL function 20 somtuniqFmt, somtuniqFmtSL function 20 somtargFlag, somtargFlagSL function 21 somtattjoin, somtattjoinSL function 21 somtdbcsLastChar, somtdbcsLastCharSL function 21 somtdbcsScan, somtdbcsScanSL function 21 somtdiskFull, somtdiskFullSL function 21 somtfclose, somtfcloseSL function 21 somtisparent, somtisparentSL function 21 somtmget, somtmgetSL function 21 somtmopen, somtmopenSL function 21 somtmprintf, somtmprintfSL function 21 somtokremove, somtokremoveSL function 21 somtunload, somtunloadSL function 21 somtwriteaccess, somtwriteaccessSL function 22 somtsmalloc, somtsmallocSL function 22 somtaddGAtt, somtaddGAttSL function 22 somtcalcFileName, somtcalcFileNameSL function 22 somtcleanFilesFatal, somtcleanFilesFatalSL function 22 somtemitTypes, somtemitTypesSL function 22 somterror, somterrorSL function 22 somtfatal, somtfatalSL function 22 somtinternal, somtinternalSL function 22 somtmclose, somtmcloseSL function 22 somtmsg, somtmsgSL function 22 somtreadDescFile, somtreadDescFileSL function 22 somtsetDefaultDesc, somtsetDefaultDescSL function 22 somtsetEmitSignals, somtsetEmitSignalsSL function 23 somtsetTypeDefn, somtsetTypeDefnSL function 23 somtshowVersion, somtshowVersionSL function 23 somtsmfree, somtsmfreeSL function 23 somtunsetEmitSignals, somtunsetEmitSignalsSL function 23 somtwarn, somtwarnSL function 23 somtuppercase, somtuppercaseSL function 23 somtlowercase, somtlowercaseSL function 23 somtdbcsuppercase, somtdbcsuppercaseSL function 23 somtdbcslowercase, somtdbcslowercaseSL function 23 somtresetEmitSignals, somtresetEmitSignalsSL function 23 somtsizeofEntry, somtsizeofEntrySL function 23 somtepname, somtepnameSL function 24 somtgenSeqName, somtgenSeqNameSL function 24 somtmrifatal, somtmrifatalSL function 24 somtmriinternal, somtmriinternalSL function 24 somtmrierror, somtmrierrorSL function 24 somtmrimsg, somtmrimsgSL function 24 somtmriwarn, somtmriwarnSL function 24 somtsetInternalMessages, somtsetInternalMessagesSL function 25 somtisvoid, somtisvoidSL function 25 somtreturnsStruct, somtreturnsStructSL function 25 somtreturnsPtr, somtreturnsPtrSL function 25 somtsimpleName, somtsimpleNameSL function 25 somtqualifyNames, somtqualifyNamesSL function 25 somtfindBaseEpNonPtr, somtfindBaseEpNonPtrSL function 25 somtprocessTraps, somtprocessTrapsSL function 25 somtallocMlist, somtallocMlistSL function 25 somtmlistend, somtmlistendSL function 25 somtisMutRef, somtisMutRefSL function 25 somtfreeMlist, somtfreeMlistSL function 25 somtdupMlist, somtdupMlistSL function 25 somtfreeWorld, somtfreeWorldSL function 25 somtinitMalloc, somtinitMallocSL function 25 somtInitialiseEmitlib. somtInitialiseEmitlibSL function 26 somtInitialiseSmmeta, somtInitialiseSmmetaSL function 26 somtInitialiseCreatetc, somtInitialiseCreatetcSL function 26 somtInitialiseSmtypes, somtInitialiseSmtypesSL function 26 somtInitialiseSomc, somtInitialiseSomcSL function 26 somtInitialiseSmsmall, somtInitialiseSmsmallSL function 26 somtattMap, somtattMapSL function 26 somtexit, somtexitSL function 26 somtdymain, somtdymainSL function 26 somtaddHeader, somtaddHeaderSL function 26 somtnthArg, somtnthArgSL function 26 somtemitModule, somtemitModuleSL function 26 somtallocDataList, somtallocDataListSL function 26 somtallocMethodList, somtallocMethodListSL function 26 somtclsfilename, somtclsfilenameSL function 27 somtclsname, somtclsnameSL function 27 somtfindMethodName, somtfindMethodNameSL function 27 somtfullPrototype, somtfullPrototypeSL function 27 somtfullTypedef, somtfullTypedefSL function 27 somtgetNonRepeatedParent, somtgetNonRepeatedParentSL function 27 somtgetatt, somtgetattSL function 27 somtgetdatt, somtgetdattSL function 27 somtgetAbistyle, somtgetAbistyleSL function 27 somtimplicit, somtimplicitSL function 27 somtimplicitArgs, somtimplicitArgsSL function 27 somtincludeOnce, somtincludeOnceSL function 27 somtpclsfilename, somtpclsfilenameSL function 28 somtpclsname, somtpclsnameSL function 28 somtprefixedPrototype, somtprefixedPrototypeSL function 28 somtreplaceDataName, somtreplaceDataNameSL function 28 somtrmSelf, somtrmSelfSL function 28 somtshortArgList, somtshortArgListSL function 28 somtimplicitMeta, somtimplicitMetaSL function 28 somtlistAttribute, somtlistAttributeSL function 28 somtnewMethodsCount, somtnewMethodsCountSL function 28 somtprivateMethodsCount, somtprivateMethodsCountSL function 28 somtaddHeader, somtaddHeaderSL function 28 somtcleanFiles, somtcleanFilesSL function 28 somtdeclareIdlVarargs, somtdeclareIdlVarargsSL function 28 somtdymain. somtdymainSL function 28 somtemitModuleTypes, somtemitModuleTypesSL function 28 somtemitPassthru, somtemitPassthruSL function 29 somtfreeDataList, somtfreeDataListSL function 29 somtfreeMethodList, somtfreeMethodListSL function 29 somtfullComment, somtfullCommentSL function 29 somthandleDiskFull, somthandleDiskFullSL function 29 somtinitialiseMeta, somtinitialiseMetaSL function 29 somtoidlComment, somtoidlCommentSL function 29 somtscmsg, somtscmsgSL function 30 somtshortDefine, somtshortDefineSL function 30 somtuninitialiseMeta, somtuninitialiseMetaSL function 30 somtobseleteHeaderFile, somtobseleteHeaderFileSL function 30 somtwidenType, somtwidenTypeSL function 30 somtgenAttStubs, somtgenAttStubsSL function 30 somtstrictidl, somtstrictidlSL function 30 somtcreateTypeCodes, somtcreateTypeCodesSL function 30 somtemitTcConstant, somtemitTcConstantSL function 30 somtemitPredefinedTcConstants, somtemitPredefinedTcConstantsSL function 30 somtAncestorClass, somtAncestorClassSL function 30 somttcAlignment, somttcAlignmentSL function 30 somttcSize, somttcSizeSL function 30 somttcKind, somttcKindSL function 31 somttcSeqFromListString, somttcSeqFromListStringSL function 31 somtGetReintroducedMethods, somtGetReintroducedMethodsSL function 31 Symbol table support functions 31 somtallocBuf, somtallocBufSL function 31 somtuniqString, somtuniqStringSL function 31 somtkeyword, somtkeywordSL function 31 somtaddEntry, somtaddEntrySL function 31 somtgetEntry, somtgetEntrySL function 31 somtstabFirst, somtstabFirstSL function 32 somtstabNext, somtstabNextSL function 32 somtstabFirstName, somtstabFirstNameSL function 32 somtstabNextName, somtstabNextNameSL function 32 somtcreateMemBuf, somtcreateMemBufSL function 32 somtcreateStab, somtcreateStabSL function 32 somticstrcmp, somticstrcmpSL function 33 somtaddEntryBuf, somtaddEntryBufSL function 33 somtfreeStab, somtfreeStabSL function 33 3. SOM Emitter Framework 33 SOMTAttributeEntryC Class 33 somtGetFirst Methods 33 somtGetNext Methods 33 SOMTBaseClassEntryC Class 33 SOMTClassEntryC Class 33 somtFilterNew Method 33 somtFilterOverridden Method 33 somtGetFirst Methods 33 somtGetNext Methods 34 somtGetReleaseNameList Method 34 SOMTCommonEntryC Class 34 somtGetFirstArrayDimension Method 34 somtGetNextArrayDimension Method 34 somtIsArray Method 34 somtIsPointer Method 34 SOMTConstEntryC Class 34 SOMTDataEntryC Class 34 SOMTEmitC Class 34 somtAll Method 34 somtEmit
Methods 34 somtEmitFullPassthru Method 34 somtFileSymbols Method 34 somtGenerateSections Method 34 somtGetFirstGlobalDefinition Method 34 somtGetGlobalModifierValue Method 34 somtGetNextGlobalDefinition Method 34 somtImplemented Method 35 somtInherited Method 35 somtNew Method 35 somtNewNoProc Method 35 somtNewProc Method 35 somtOpenSymbolsFile Method 35 somtOverridden Method 35 somtScan
Methods 35 somtSetPredefinedSymbols Method 35 somtVA Method 35 SOMTEntryC Class 35 somtFormatModifier Method 35 somtGetFirstModifier Method 35 somtGetModifierList Method 35 somtGetModifierValue Method 35 somtGetNextModifier Method 35 somtSetSymbolsOnEntry Method 35 SOMTEnumEntryC Class 35 somtGetFirstEnumName Method 36 somtGetNextEnumName Method 36 SOMTEnumNameEntryC Class 36 SOMTMetaClassEntryC Class 36 SOMTMethodEntryC Class 36 somtGetFirst Methods 36 somtGetFullCParamList Method 36 somtGetFullParamNameList Method 36 somtGetIDLParamList Method 36 somtGetNext Methods 36 somtGetNthParameter Method 36 somtGetShortCParamList Method 36 somtGetShortParamNameList Method 36 SOMTModuleEntryC Class 36 somtGetFirst Methods 36 somtGetNext Methods 36 SOMTParameterEntryC Class 36 SOMTPassthruEntryC Class 36 somtIsBeforePassthru Method 37 SOMTSequenceEntryC Class 37 SOMTStringEntryC Class 37 SOMTStructEntryC Class 37 somtGetFirstMember Method 37 somtGetNextMember Method 37 SOMTTemplateOutputC Class 37 somtAddSectionDefinitions Method 37 somtCommentStyle attribute 37 somtLineLength attribute 37 somtCommentNewline attribute 37 somtCheckSymbol Method 37 somtExpandSymbol Method 38 somtGetSymbol Method 38 somto Method 38 somtOutputComment Method 39 somtOutputSection Method 39 somtReadSectionDefinitions Method 39 somtSetOutputFile Method 39 somtSetSymbol Method 39 somtSetSymbolCopyBoth Method 39 somtSetSymbolCopyName Method 40 somtSetSymbolCopyValue Method 40 SOMTTypedefEntryC Class 40 somtGetFirstDeclarator Method 40 somtGetNextDeclarator Method 40 SOMTUnionEntryC Class 40 somtGetFirstCaseEntry Method 40 somtGetNextCaseEntry Method 40 SOMTUserDefinedTypeEntryC Class 40 SOMStringTableC Class 40 somstTargetCapacity attribute 40 somstAssociationsCount attribute 40 somstAssociate method 41 somstAssociateCopyKey method 41 somstAssociateCopyValue method 41 somstAssociateCopyBoth method 41 somstGetAssociation method 41 somstClearAssociation method 41 somstGetIthKey method 41 somstGetIthValue method 41 somtStrDup function 42 somtEntryTypeName function 42 somtShowEntry function 42 somtStrCat function 42 somtMakeIncludeStr function 42 somtNewSymbol function 42 somtGetFileStem function 42 somtGetObjectWrapper function 42 IV. Appendixes 44 1. Appendix 1. SOM ABI 44 Список литературы 44 ====== I. User's Guide ====== ===== 1. Introduction ===== somFree Compiler and Emitter Framework is a free open source binary compatible reimplementation of IBM SOM Compiler and Emitter Framework. It is tries to be as compatible as possible on API and ABI level. ===== 2. Changes ===== Most of internal structures now also present as in old IBM SOM 2.1 NT Toolkit. New emitters: * LNK - Open Watcom WLink support. * DUMP - displays structures, available to emitter. * PAS - Pascal client support. * IPAS - Pascal implementation classes support. SOM Compiler library now mostly documented. SOMLINK style functions for most of SOM Compiler library added. Emitters now IBM SOM 2.1 and IBM SOM 3.0 compatible without recompilation. somFree Compiler supports IBM SOM 2.1, IBM SOM 3.0, and somFree 1.0 emitters. somtShowEntry function outputs more info. Undocumented SOMTTypes now documented. SOMIPC now supports IDL 4.2 specification. CORBA C Language Mapping Specification 1.0 now supported by default instead of SOM C Language mapping. ====== II. Programmer's Guide ====== ===== 1. Introduction ===== somFree compiler is a tool to convert various interface definition languages to another one or language bindings. somFree compiler frontend is a sc or somc command which control workflow. Because somFree compiler and Emitter Framework modeled after IBM SOM Compiler from here SOM Compiler term will be used. Most of somFree Compiler and Emitter Framework and SOM Compiler and Emitter Framework are same and binary compatible at the documented level. Internal structures of somFree and IBM versions are different. ===== 2. Structure of SOM Compiler and Emitter Framwork ===== SOM Compiler at file level consist of: * SOM Compiler frontend sc [Linux] sc.exe [OS/2, Windows] somc.exe [Windows] * IDL SOM Pre-processor somcpp [Linux] somcpp.exe [OS/2, Windows] * IDL SOM Compiler somipc [Linux] somipc.exe [OS/2, Windows] * OIDL SOM Pre-processor spp [Linux] spp.exe [OS/2, Windows] * OIDL SOM Compiler somopc [Linux] somopc.exe [OS/2, Windows] * SOM Compiler Library somc.so [Linux] somc.dll [OS/2, Windows] * SOM Emitter Framework some.so [Linux] some.dll [OS/2, Windows] * Emitters emit*.so [Linux] emit*.dll [OS/2, Windows] * Public IDL files generator pdl [Linux] pdl.exe [OS/2, Windows] Currently SOM Compiler provides following emitters: IDL - IDL Emitter CSC - OIDL Emitter SC - OIDL public emitter GEN - Generic Emitter IR - Interface Repository Emitter H - C Binding public header files C - C Binding implementation template file IH - C Binding implementation header files XH - C++ Binding public header files XIH - C++ Binding implementation header files DEF - DEF Module Definition file LNK - LNK Module Linking file HC IMOD - SOM Module initialization emitter MODS - List of class modifiers PDL - Private IDL emitter PH PSC - OIDL private emitter UC UXC XPH XTM PAS - Pascal client library for use of SOM IPAS - Pascal implementation library to write SOM classes. Some of Emitters uses Templates such as: cpp.efw ctm.efw gen_c.efc gen_c.efs gen_c.efw gen_cpp.efw gen_def.efw gen_emit.efc gen_emit.efs gen_emit.efw gen_emit.efx gen_idl.efw gen_make.efc gen_make.efs gen_make.efw gen_make.efx gen_mk32.efc gen_mk32.efs gen_mk32.efw gen_mk32.efx gen_mknt.efs gen_mknt.efw gen_mknt.efx gen_nid.efw gen_temp.efw imod.efw ===== 3. Interaction of SOM Compiler components ===== Drawing here!! SOM Compiler IDL SOM Preprocessor IDL SOM Compiler Emitter Template OIDL SOM Preprocessor OIDL SOM Compiler Разрисовать по аналогии с со структурой, что в патентах и документации по SOM, но с учетом наличия OIDL и SOMC. SOM Compiler sc or somc is a frontend which controls basic workflow. Depending on source file extension it call or IDL or OIDL pre-processor and, after preprocessing, IDL or OIDL compiler. IDL or OIDL compiler builds abstract syntax graph using Entry structure. Entry structure contains information about entry type, pointer to object wrapper and all information about object specific attributes. Note! Entry structure is not documented and differs in somFree and IBM SOM versions. IDL or OIDL calls required emitters with root Entry structure on emitter entry. Emitter requests root object wrapper and, using or not using template faculty, process all graph using Object Syntax Graph. Object Syntax Graph generates required Entry objects on demand. ===== 4. Template faculty ===== Emitters uses template faculty to produce output file. Template file has structure divided by sections. Each section begins from section name ended by colon. Each emitter can use its own section names. Refer to corresponding emitter and Entry classes description for section names information. Here is template file example: :copyrightS This is example template :templateS /* Template output example */ Core of Template faculty is a Key-Value strings collection represented by SOMStringTableC class. All substitutable to template values stored in SOMStringTableC class instance. On template file process, First of all SOMTEmitC method somtSetPredefinedSymbols sets section names symbols. By default it is following sections: Привести к виду таблицы prologSN prologS baseIncludesPrologSN baseIncludesPrologS baseIncludesSN baseIncludesS baseIncludesEpilogSN baseIncludesEpilogS metaIncludeSN metaIncludeS classSN classS metaSN metaS basePrologSN basePrologS baseSN baseS baseEpilogSN baseEpilogS constantPrologSN constantPrologS constantSN constantS constantEpilogSN constantEpilogS typedefPrologSN typedefPrologS typedefSN typedefS typedefEpilogSN typedefEpilogS structPrologSN structPrologS structSN structS structEpilogSN structEpilogS unionPrologSN unionPrologS unionSN unionS unionEpilogSN unionEpilogS enumPrologSN enumPrologS enumSN enumS enumEpilogSN enumEpilogS attributePrologSN attributePrologS attributeSN attributeS attributeEpilogSN attributeEpilogS interfacePrologSN interfacePrologS interfaceSN interfaceS interfaceEpilogSN interfaceEpilogS modulePrologSN modulePrologS moduleSN moduleS moduleEpilogSN moduleEpilogS passthruPrologSN passthruPrologS passthruSN passthruS passthruEpilogSN passthruEpilogS releaseSN releaseS dataPrologSN dataPrologS dataSN dataS dataEpilogSN dataEpilogS methodsPrologSN methodsPrologS methodsSN methodsS overrideMethodsSN overrideMethodsS overriddenMethodsSN overriddenMethodsS inheritedMethodsSN inheritedMethodsS methodsEpilogSN methodsEpilogS epilogSN epilogS ===== 5. Generic Emitter ===== Generic emitter is a generic template based emitter. It uses simplest template with only one section "template". Main goal of Generic Emitter is to produce Generic framework emitter files. It is used by newemit tool to produce full set of files required to build new emitter. Добавить описание символов шаблона и описание, какой шаблон за что отвечает. ===== 6. DEF Emitter ===== DEF emitter used to generate definition file for DLL creation using MS LINK. somFree version of emitter uses template file to generate DEF file. Original IBM SOM DEF Emitter uses hard coded generation. Добавить описание символов шаблона. ===== 7.LNK Emitter ===== LNK emitter used to generate linking file for DLL creation using Watcom WLINK. somFree version of emitter uses template file to generate LNK file. Original IBM SOM DEF Emitter doesn't have such emitter. Добавить описание символов шаблона. ===== 8. CSC, PSC, SC Emitters ===== CSC emitter used to generate OIDL class definition file (CSC) used in IBM SOM 1.0. somFree version of emitter uses template file to generate CSC file. Original IBM SOM CSC Emitter uses hard coded generation. Добавить описание символов шаблона. ===== 9. IDL, PDL Emitters ===== IDL emitter used to generate IDL class definition file used in IBM SOM 2.0 and higher. somFree version of emitter uses template file to generate IDL file. Original IBM SOM IDL Emitter uses hard coded generation. Добавить описание символов шаблона. ===== 10. Developing new emitter ===== somFree Emitter Framework provides templates and libraries for developing emitters compatible with both IBM SOM 2.1 and IBM SOM 3.0 compilers. Because of different ABI (refer Appendix 1 for more information) somFree emitters automatically configures for corresponding API. ===== 11. SOM Interface Definition Language ===== Latest IBM SOM 3.0 supports CORBA IDL mostly at level of CORBA 1.1. somFree supports CORBA IDL 4.2 with all extensions found in SOM IDL. Include Directives (optional) Type and Constant Declarations (optional) Exception Declarations (optional) Interface Declarations (optional) Module declaration (optional) ===== 12. SOM Object Interface Definition Language ===== SOM Object Interface Definition Language is a pre-IDL object definition language used before IBM SOM 2.1. Since IBM SOM 2.1 uses CORBA IDL as defined in OMG CORBA 1.1. SOM Object Interface Definition Language (OIDL) is a simple definition language and not recommended to use. SOM Compiler support is only for compatibility with old source code. OIDL support implementation mostly based on [1] and various OIDL source files found on the Web. OIDL consist of sections set: * Include section (optional) * Class section (required) * Release order section (optional) * Parent class section (required) * Metaclass section (optional) * Data section (optional) * Methods section (optional) ===== 13. CORBA C Language mapping ===== somFree Compiler support CORBA C Language Mapping Specification 1.0 [1]. CORBA C Language mapping slightly differ from SOM C Language mapping, used by original IBM SOM 2.1. CORBA C Language mapping is default for somFree Compiler. This chapter provides short description of mapping. For full description refer to [1]. ===== 14. SOM C Language mapping ===== SOM C Language mapping is a IBM SOM mapping variant. For some reason (most probably because variable arguments support) IBM SOM not exactly implements C Language Mapping Specification. ====== III. Programmer's reference ====== ===== 1. SOM Runtime C library ===== SOM Runtime C library somwm35i is a subset of C runtime library functions found to be used by IBM SOM 3.0 for NT emitters. SOM Runtime C library provided only for support of IBM SOM 3.0 for NT emitters. This is not full featured C library but compatibility layer and must not be used for development. Functions utilize IBM Optlink calling convention. This library required only under Windows NT systems. List of emulated function and variables. _CRT_init, _CRT_term, _abort_in_progress, _exception_dllinit, _matherr, fclose, _fprintfieee, strlen, _sprintfieee, strcmp, strstr, _ctype, feof, fgetc, fgets, fputs, fread, fseek, fwrite, memmove, memset, remove, rename, rewind, strchr, strcpy, strlen, strncmp, strncpy, strrchr, strtok, tolower, memcpy, strcat, getenv, _printfieee, _sscanfieee, exit, stderr, _putenv, _terminate, _PrintErrMsg, _SysFindFirst, _SysFindNext, _SysFindClose, malloc, free, strdup, strpbrk ===== 2. SOM Compiler library ===== SOM Compiler library somc is a set of helper functions for compiler tasks. Used by IBM SOM emitters. Library provided solely to provide support of IBM emitters. Must not be used to write new code. ==== somtfexists, somtfexistsSL function ==== SOMEXTERN BOOL somtfexists(char *file); SOMEXTERN BOOL SOMLINK somtfexistsSL(char *file); Check is file exists in paths. Note: somtfexists version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtsearchFile, somtsearchFileSL function ==== SOMEXTERN char * somtsearchFile(char *file, char *fullpath, char *env); SOMEXTERN char * SOMLINK somtsearchFileSL(char *file, char *fullpath, char *env); Search path using file and env dirs and return full path if exists. Note: somtsearchFile version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somttraverseParents, somttraverseParentsSL function ==== Note: somttraverseParents version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtloadSL function ==== SOMEXTERN EmitFn SOMLINK somtloadSL(char *fileName, char *functionName, void **modHandle); Load emitter and return pointer to emit or emitSL function and return handle of loaded module. This function switches somc to IBM SOM 3.0 ABI if emitSL function found or to IBM SOM 2.1 ABI if emit function found. ==== somtfindBaseEp, somtfindBaseEpSL function ==== Note: somtfindBaseEp version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtgetType, somtgetTypeSL function ==== Note: somtGetType version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtokfopen, somtokfopenSL function ==== SOMEXTERN FILE * somtokfopen(char *path, char *mode); SOMEXTERN FILE * SOMLINK somtokfopenSL(char *path, char *mode); Same as C fopen function. Note: somtokfopen version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtokrename, somtokrenameSL function ==== Note: somtokrename version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtopenEmitFile, somtopenEmitFileSL function ==== Note: somtopenEmitFile version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtisDbcs, somtisDbcsSL function ==== Note: somtisDbcs version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtremoveExt, somtremoveExtSL function ==== SOMEXTERN boolean somtremoveExt(char *name, char *ext, char *buf); SOMEXTERN boolean SOMLINK somtremoveExt(char *name, char *ext, char *buf); Remove extension from and return to Note: somtremoveExt version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtaddExt, somtaddExtSL function ==== SOMEXTERN char * somtaddExt(char *name, char *ext, char *buf); SOMEXTERN char * SOMLINK somtaddExtSL(char *name, char *ext, char *buf); Add extension to filestem and return result in Note: somtaddExt version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtarrayToPtr, somtarrayToPtrSL function ==== Note: somtarrayToPtr version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtattNormalise, somtattNormaliseSL function ==== ==== somtbasename, somtbasenameSL function ==== SOMEXTERN char * somtbasenameSL(char *path); SOMEXTERN char * SOMLINK somtbasenameSL(char *path); Return filename without path. Note: somtbasename version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtctos, somtctosSL function ==== ==== somtdbcsPostincr, somtdbcsPostincrSL function ==== ==== somtdbcsPreincr, somtdbcsPreincrSL function ==== ==== somtdbcsStrchr, somtdbcsStrchrSL function ==== ==== somtdbcsStrrchr, somtdbcsStrrchrsL function ==== ==== somtdbcsStrstr, somtdbcsStrstrSL function ==== ==== somteptotype, somteptotypeSL function ==== ==== somtgetDesc, somtgetDescSL function ==== ==== somtgetVersion, somtgetVersionSL function ==== ==== somtgetgatt, somtgetgattSL function ==== ==== somtnextword, somtnextwordSL function ==== ==== somtnormaliseDesc, somtnormaliseDescSL function ==== ==== somtsatos, somtsatosSL function ==== ==== somtsearchFile, somtsearchFileSL function ==== Note: somtsearchFile version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtskipws, somtskipwsSL function ==== ==== somtstringFmt, somtstringFmtSL function ==== SOMEXTERN char * somtstringFmtSL(char *fmt, ...) SOMEXTERN char * SOMLINK somtstringFmtSL(char *fmt, ...) Allocate buffer for string, format it using and return pointer to buffer. Note: somtstringFmt version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somttype, somttypeSL function ==== SOMEXTERN char * somttype(SOMTType type); SOMEXTERN char * SOMLINK somttypeSL(SOMTType type); Return string representation of type of Entry structure except special case SOMTEmitterBeginE and SOMTEmitterEndE types. Note: somttype version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. Warning: Depricated. Use somtEntryTypeName instead. ==== somtuniqFmt, somtuniqFmtSL function ==== SOMEXTERN char * somtuniqFmt(MemBuf *membuf, char *fmt, ...) SOMEXTERN char * SOMLINKL somtuniqFmtSL(MemBuf *membuf, char *fmt, ...) Return unique formatted string. Note: somtuniqFmt version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtargFlag, somtargFlagSL function ==== ==== somtattjoin, somtattjoinSL function ==== ==== somtdbcsLastChar, somtdbcsLastCharSL function ==== ==== somtdbcsScan, somtdbcsScanSL function ==== ==== somtdiskFull, somtdiskFullSL function ==== ==== somtfclose, somtfcloseSL function ==== SOMEXTERN int somtfclose(FILE *fp); SOMEXTERN int SOMLINK somtfcloseSL(FILE *fp); Same as C fclose function. Note: somtfclose version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtisparent, somtisparentSL function ==== ==== somtmget, somtmgetSL function ==== ==== somtmopen, somtmopenSL function ==== ==== somtmprintf, somtmprintfSL function ==== ==== somtokremove, somtokremoveSL function ==== SOMEXTERN int somtokremove(char *file); SOMEXTERN int SOMLINK somtokremoveSL(char *file); Alias of C remove function. Note: somtokremove version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtunload, somtunloadSL function ==== ==== somtwriteaccess, somtwriteaccessSL function ==== ==== somtsmalloc, somtsmallocSL function ==== SOMEXTERN void * somtsmalloc(size_t nbytes, BYTE clear); SOMEXTERN void * SOMLINK somtsmallocSL(size_t nbytes, BYTE clear); Allocate of memory and fill it by zeroes if flag is set. Note: somtsmalloc version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtaddGAtt, somtaddGAttSL function ==== ==== somtcalcFileName, somtcalcFileNameSL function ==== ==== somtcleanFilesFatal, somtcleanFilesFatalSL function ==== SOMEXTERN void somtcleanFilesFatal(int status); SOMEXTERN void SOMLINK somtcleanFilesFatalSL(int status); Delete temporary files (if emitted file opened) and exit. Note: somtcleanFilesFatal version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtemitTypes, somtemitTypesSL function ==== ==== somterror, somterrorSL function ==== ==== somtfatal, somtfatalSL function ==== ==== somtinternal, somtinternalSL function ==== ==== somtmclose, somtmcloseSL function ==== ==== somtmsg, somtmsgSL function ==== ==== somtreadDescFile, somtreadDescFileSL function ==== ==== somtsetDefaultDesc, somtsetDefaultDescSL function ==== ==== somtsetEmitSignals, somtsetEmitSignalsSL function ==== ==== somtsetTypeDefn, somtsetTypeDefnSL function ==== ==== somtshowVersion, somtshowVersionSL function ==== ==== somtsmfree, somtsmfreeSL function ==== ==== somtunsetEmitSignals, somtunsetEmitSignalsSL function ==== ==== somtwarn, somtwarnSL function ==== ==== somtuppercase, somtuppercaseSL function ==== SOMEXTERN char * somtuppercase(char *s, char *buf); SOMEXTERN char * SOMLINK somtuppercaseSL(char *s, char *buf); Convert to upper case and return to . Note: somtuppercase version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtlowercase, somtlowercaseSL function ==== SOMEXTERN char * somtlowercase(char *s, char *buf); SOMEXTERN char * SOMLINK somtlowercase(char *s, char *buf) Convert to lower case and return to . Note: somtlowercase version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtdbcsuppercase, somtdbcsuppercaseSL function ==== ==== somtdbcslowercase, somtdbcslowercaseSL function ==== ==== somtresetEmitSignals, somtresetEmitSignalsSL function ==== ==== somtsizeofEntry, somtsizeofEntrySL function ==== SOMEXTERN size_t somtsizeofEntry(SOMTTypes type); SOMEXTERN size_t SOMLINK somtsizeofEntrySL(SOMTTypes type); Return size of Entry structure for of entry; Note: somtsizeofEntry version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. Mapping of type to Entry.u type and nameis following: Entry type union struct union name SOMTClassE Class c SOMTMetaE Meta mt SOMTBaseE Parent p SOMTPassthruE Passthru pt SOMTNewMethodE Method_OR_Data m SOMTOverrideMethodE Method_OR_Data m SOMTOverriddenMethodE Method_OR_Data m SOMTDataE Method_OR_Data m SOMTArgumentE Method_OR_Data m SOMTTypedefBE Method_OR_Data m SOMTVoidPtrBE Method_OR_Data m SOMTStructE Struct struc SOMTTyDclE Typedef ty SOMTTypedefE Typedef ty SOMTUnionE Union un SOMTUnionSE Union un SOMTEnumE Enumerator enumerator SOMTConstE Const con SOMTAttE Att att SOMTSequenceE Sequence seq SOMTSequenceTDE Sequence seq SOMTStringE String str SOMTEnumBE EnumName enumN SOMTModuleE Module mod ==== somtepname, somtepnameSL function ==== Note: somtgetenname version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtgenSeqName, somtgenSeqNameSL function ==== ==== somtmrifatal, somtmrifatalSL function ==== ==== somtmriinternal, somtmriinternalSL function ==== ==== somtmrierror, somtmrierrorSL function ==== ==== somtmrimsg, somtmrimsgSL function ==== ==== somtmriwarn, somtmriwarnSL function ==== ==== somtsetInternalMessages, somtsetInternalMessagesSL function ==== ==== somtisvoid, somtisvoidSL function ==== SOMEXTERN boolean somtisvoidSL(Entry *type, char *defn) SOMEXTERN BOOL SOMLINK somtisvoidSL(Entry *type, char *defn) Return TRUE if type->type is SOMTVoidBE it defn equal to "void", "VOID", "PMVOID". Note: somtisvoid version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtreturnsStruct, somtreturnsStructSL function ==== ==== somtreturnsPtr, somtreturnsPtrSL function ==== ==== somtsimpleName, somtsimpleNameSL function ==== ==== somtqualifyNames, somtqualifyNamesSL function ==== ==== somtfindBaseEpNonPtr, somtfindBaseEpNonPtrSL function ==== ==== somtprocessTraps, somtprocessTrapsSL function ==== ==== somtallocMlist, somtallocMlistSL function ==== ==== somtmlistend, somtmlistendSL function ==== ==== somtisMutRef, somtisMutRefSL function ==== ==== somtfreeMlist, somtfreeMlistSL function ==== ==== somtdupMlist, somtdupMlistSL function ==== ==== somtfreeWorld, somtfreeWorldSL function ==== ==== somtinitMalloc, somtinitMallocSL function ==== SOMEXTERN void somtinitMalloc(BOOL dynamic) SOMEXTERN void SOMLINK somtinitMallocSL(BOOL dynamic) Initialize memory allocation/free functions. Note: flag ignored in somFree version. Note: somtinitMalloc version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtInitialiseEmitlib. somtInitialiseEmitlibSL function ==== ==== somtInitialiseSmmeta, somtInitialiseSmmetaSL function ==== ==== somtInitialiseCreatetc, somtInitialiseCreatetcSL function ==== ==== somtInitialiseSmtypes, somtInitialiseSmtypesSL function ==== ==== somtInitialiseSomc, somtInitialiseSomcSL function ==== ==== somtInitialiseSmsmall, somtInitialiseSmsmallSL function ==== ==== somtattMap, somtattMapSL function ==== ==== somtexit, somtexitSL function ==== ==== somtdymain, somtdymainSL function ==== ==== somtaddHeader, somtaddHeaderSL function ==== ==== somtnthArg, somtnthArgSL function ==== ==== somtemitModule, somtemitModuleSL function ==== SOMEXTERN FILE * somtemitModule(char *file, Entry *cls, char *ext); SOMEXTERN FILE * SOMLINK somtemitModuleSL(char *file, Entry *cls, char *ext); Same as somtopenEmitFile. Note: somtemitModule version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtallocDataList, somtallocDataListSL function ==== ==== somtallocMethodList, somtallocMethodListSL function ==== ==== somtclsfilename, somtclsfilenameSL function ==== ==== somtclsname, somtclsnameSL function ==== SOMEXTERN char * somtclsname(Entry * cls); SOMEXTERN char * SOMLINK somtclsnameSL(Entry * cls); Return name of class . Note: somclsname version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtfindMethodName, somtfindMethodNameSL function ==== ==== somtfullPrototype, somtfullPrototypeSL function ==== ==== somtfullTypedef, somtfullTypedefSL function ==== ==== somtgetNonRepeatedParent, somtgetNonRepeatedParentSL function ==== ==== somtgetatt, somtgetattSL function ==== ==== somtgetdatt, somtgetdattSL function ==== ==== somtgetAbistyle, somtgetAbistyleSL function ==== SOMEXTERN enum SOMTABIStyle somtgetAbistyle( Entry * ep ); SOMEXTERN enum SOMTABIStyle SOMLINK somtgetAbistyleSL( Entry * ep ); Return ABI style of Entry. At the current time returns always SOMTABIStyle_2 Note: somtgetABIStyle version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtimplicit, somtimplicitSL function ==== ==== somtimplicitArgs, somtimplicitArgsSL function ==== ==== somtincludeOnce, somtincludeOnceSL function ==== SOMEXTERN char * somtincludeOnceSL(Entry *cls, char *ext, char *buf); SOMEXTERN char * SOMLINK somtincludeOnceSL(Entry *cls, char *ext, char *buf); Return token to for once include checks using name of class and extension in form SOM_classname_ext. Note: somtincludeOnce version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somtpclsfilename, somtpclsfilenameSL function ==== ==== somtpclsname, somtpclsnameSL function ==== ==== somtprefixedPrototype, somtprefixedPrototypeSL function ==== ==== somtreplaceDataName, somtreplaceDataNameSL function ==== ==== somtrmSelf, somtrmSelfSL function ==== ==== somtshortArgList, somtshortArgListSL function ==== ==== somtimplicitMeta, somtimplicitMetaSL function ==== ==== somtlistAttribute, somtlistAttributeSL function ==== ==== somtnewMethodsCount, somtnewMethodsCountSL function ==== ==== somtprivateMethodsCount, somtprivateMethodsCountSL function ==== ==== somtaddHeader, somtaddHeaderSL function ==== ==== somtcleanFiles, somtcleanFilesSL function ==== SOMEXTERN void somtcleanFiles(int status); SOMEXTERN void SOMLINK somtcleanFilesSL(int status); Delete temporary files and exit. Note: somtcleanFiles version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. somtdeclareIdlVarargs, somtdeclareIdlVarargsSL function ==== somtdymain. somtdymainSL function ==== ==== somtemitModuleTypes, somtemitModuleTypesSL function ==== ==== somtemitPassthru, somtemitPassthruSL function ==== ==== somtfreeDataList, somtfreeDataListSL function ==== ==== somtfreeMethodList, somtfreeMethodListSL function ==== ==== somtfullComment, somtfullCommentSL function ==== SOMEXTERN void somtfullCommentSL(FILE * fp, char *fmt,...); SOMEXTERN void SOMLINK somtfullCommentSL(FILE * fp, char *fmt,...); Outout formatted string to emitted file as comment using C-style comment via somtoidlComment function; Note: somtfullComment version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. ==== somthandleDiskFull, somthandleDiskFullSL function ==== ==== somtinitialiseMeta, somtinitialiseMetaSL function ==== ==== somtoidlComment, somtoidlCommentSL function ==== SOMEXTERN void somtoidlComment(FILE * fp, int min, int max, char style, char *comment); SOMEXTERN void SOMLINK somtoidlCommentSL(FILE * fp, int min, int max, char style, char *comment); Output oidl-