Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
en:docs:tk:som [2024/09/18 14:43] – prokushev | en:docs:tk:som [2024/11/12 07:23] (current) – prokushev | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | * [[en: |
+ | * [[en: | ||
+ | * [[en: | ||
- | ====== User's Guide ====== | + | Quick history: |
- | ===== Introduction ===== | + | * SOM 1.0 - came out with OS/2 2.0 and used to build WorkPlaceShell. It includes only SOMObject, SOMClass and SOMClsMgr classes. |
+ | * SOM 2.0 - aligned with CORBA 1.1, used CORBA IDL and added DSOM. SOM Compiler was reworked and Emitter Framework was added. | ||
- | somFree Compiler | + | C++ bindings that allow you to implement and invoke your classes in C++. |
+ | The Distributed, | ||
+ | CORBA compliance, SOM classes are now described in CORBA' | ||
+ | Support for multiple inheritance. | ||
+ | Interface Repository for run-time typing information. | ||
+ | |||
+ | * SOM 2.1 | ||
+ | * SOM adopted by Apple to move OpenDoc from C++ to a language neutral framework. | ||
+ | * SOM 3.0 - added IIOP support, referencing counting for SOMObject | ||
+ | |||
+ | SOM was available on OS/2 2.0 upwards, Windows NT, AIX 4, OS/390 and OS/400. | ||
+ | |||
+ | Why somFree? | ||
+ | |||
+ | This project provides a clean-room implementation of the major SOM components and is built to be very portable. The name comes from the method used to delete a SOMObject. | ||
+ | |||
+ | Main differences from IBM SOM | ||
+ | |||
+ | - IDL compiler is a C++ program rather than a SOM based framework. This solves a chicken-and-egg problem. | ||
+ | - Assembler is not used for thunking, somResolve() uses macros and apply/ | ||
+ | - Some components are just hollow stubs, such as SOMP. | ||
+ | - Some components are not fully functional, eg somossvr. | ||
+ | - You can have both C and C++ header files generated. The choice of ' | ||
+ | - No security functions implemented. | ||
===== Changes ===== | ===== Changes ===== | ||
Line 11: | Line 37: | ||
Changes from original somFree compiler: | Changes from original somFree compiler: | ||
- | * Most of internal structures now also present as in old IBM SOM 2.1 NT Toolkit. | + | * Added and mostly documented SOM Compiler library SOMC. Most of internal structures now also present as in old IBM SOM 2.1 Toolkit. SOMLINK style functions for most of SOM Compiler library added (NT version used optlink for some functions). somtShowEntry function outputs more info. Undocumented SOMTTypes now documented. |
+ | * SOM Compiler now supports emitters too. | ||
* New emitters: | * New emitters: | ||
* LNK - Open Watcom WLink support. | * LNK - Open Watcom WLink support. | ||
Line 17: | Line 44: | ||
* PAS - Pascal client support. | * PAS - Pascal client support. | ||
* IPAS - Pascal implementation classes 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. | * 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. | * 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. | * SOMIPC now supports IDL 4.2 specification. | ||
- | * CORBA C Language Mapping Specification 1.0 now supported by default instead of SOM C Language mapping. | + | * CORBA C Language Mapping Specification 1.0 now supported by default instead of CORBA 1.1 C Language mapping. |
* Added support of OIDL files | * Added support of OIDL files | ||
- | |||
- | ===== somFree Compiler ===== | ||
- | |||
- | The somFree Compiler is a tool to produce various file formats from Interface Definition Language (IDL) files or Object Interface Definition Language (OIDL) files. somFree Compiler reads IDL or OIDL file and produces an abstract graph tree. Using abstract tree, somFree Compiler generates an object graph tree. After the object graph is ready, somFree Compiler produces an output using template. | ||
- | |||
- | The somFree Compiler uses DLL-name based loading of classes libraries (other programs can user another approach, like WPS does. WPS uses an Interface Repository to find corresponding class). Most of the somFree Compiler classes libraries it is implementation of corresponding emitter. Emitters can be created with help of Emitter Framework. | ||
- | |||
- | somFree Compiler actually is a client program which uses Emitter Framework classes. somFree Compiler is open source program with an open architecture. The only things that couldn' | ||
- | |||
- | Let's look at somFree Compiler command line syntax to understand how to produce corresponding skeleton code from somFree Compiler template (below is somFree Compiler help screen): | ||
- | |||
- | sc [-C: | ||
- | Where: | ||
- | -C < | ||
- | -D < | ||
- | -E < | ||
- | -I < | ||
- | -S < | ||
- | -U < | ||
- | -V - show version number of compiler. | ||
- | -c - ignore all comments. | ||
- | -d < | ||
- | -h - this message. | ||
- | -i < | ||
- | -m < | ||
- | -p - shorthand for -D__PRIVATE__. | ||
- | -r - check releaseorder entries exist (default: FALSE). | ||
- | -s < | ||
- | -u - update interface repository. | ||
- | -v - verbose debugging mode (default: FALSE). | ||
- | -w - don't display warnings (default: FALSE). | ||
- | | ||
- | Modifiers: | ||
- | addprefixes : adds `functionprefix' | ||
- | [no]addstar : [no]add `*' to C bindings for interface references. | ||
- | corba : check the source for CORBA compliance. | ||
- | csc : force running of OIDL compiler. | ||
- | | ||
- | | ||
- | noint : don't warn about " | ||
- | | ||
- | nopp : don't run the source through the pre-processor. | ||
- | notc : don't use typecodes for emit information. | ||
- | | ||
- | pp=< | ||
- | | ||
- | | ||
- | Note: All command-line modifiers can be set in the environment | ||
- | by changing them to UPPERCASE and preappending " | ||
- | | ||
- | Environment Variables: | ||
- | SMEMIT=[h; | ||
- | : emitters to run (default : h;ih). | ||
- | SMINCLUDE=< | ||
- | : where to search for .idl and .efw files. | ||
- | SMKNOWNEXTS=ext[; | ||
- | : add headers to user written emitters. | ||
- | SMTMP=< | ||
- | : directory to hold intermediate files. | ||
- | SOMIR=< | ||
- | : list of IRs to search. | ||
- | | ||
- | Pragmas: | ||
- | #pragma somemittypes on : turn on emission of global types. | ||
- | #pragma somemittypes off : turn off emission of global types. | ||
- | #pragma modifier < | ||
- | |||
- | Now let's explain some command line switches deeper. | ||
- | |||
- | First of the most interesting switch is -s. By default somFree Compiler uses SMEMIT environment variable to determine which emitter to use. Look at emit*.dll files for corresponding emitter. Using switch -s you can change default logic and select one-time emitter instead of global emitters. In easy situation you need only one emitter (say, C emitter). In complex situations you need use more emitters (say, C, H, DEF and IH emitters). You can create your own emitter to produces, for example, some sort of documentation and other stuff. | ||
- | |||
- | Another interesting switch is -m. Using -m you can set and/or unset so named modifiers. Modifiers allow you to change default behaviour of emitter and compiler. As example, by default compiler adds new methods or modifies existent. You can tell compiler just add new text to end of file. Modifiers can control emitters. addstart and noaddstar controls C emitter to add or not add pointer sign (%%*%%) to references of objects. | ||
- | |||
- | Switch -u adds or updates Interface Repository with new information about class interface. Interface repository filename controlled by SOMIR environment variable. This thing useful to add info for Object REXX access and other things which uses Interface Repository. | ||
- | |||
- | Other switches are like for standard C/C++ preprocessor and not described here. | ||
- | |||
- | Now let's play with somFree Compiler. Most often, you need to create interface files for C/C++ client programs. Usually you need to call the SOM Compiler as following: | ||
- | |||
- | sc -sdef somobj.idl | ||
- | sc -sh somobj.idl | ||
- | | ||
- | In case of C++ you need to call: | ||
- | |||
- | sc -sdef somobj.idl | ||
- | sc -sxh somobj.idl | ||
- | | ||
- | Of course, not very nice to call somFree Compiler so often. And somFree Compiler provides such functionality: | ||
- | |||
- | sc -sdef;h;xh somobj.idl | ||
- | | ||
- | The above command will do exactly as all recent commands. | ||
- | |||
- | The above emitters were designed for IBM toolset. Nowadays, developers also use GCC or Open Watcom Compilers. The problem here is that Watcom Linker doesn' | ||
- | |||
- | Now let's talk about internals of somFree Compiler. somFree Compiler designed in the way as most of C compilers implemented. It is exists of following parts: | ||
- | |||
- | * IDL Preprocessor | ||
- | * IDL Parser | ||
- | * OIDL Preprocessor | ||
- | * OIDL Parser | ||
- | * Emitter Framework | ||
- | |||
- | somFree Compiler first calls IDL or OIDL Preprocessor. Output of IDL/OIDL Preprocessor goes to IDL/OIDL Parser. IDL/OIDL Parser creates Object tree from IDL/OIDL source. Object tree, using templates and emitters, stored to file. | ||
- | |||
- | As you see, most of the parts can be extended or replaced by its own implementation. For example, we can reuse CPP instead of SPP. Why not? Just support required command-line switches for compatibility. Also, default emitters can be rewritten. For C and C++ emitter it is not so hard. For other, more structured languages, like Pascal, Modula, etc. emitter creation is more hard work, but it is also possible. | ||
- | |||
- | Actually, we can extend and rewrite somFree Compiler as we want. | ||
- | |||
- | Usage of somFree Compiler will not be problem for most of you. But understanding some details about compiler internals makes life easer. | ||
- | |||
- | ===== 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) | ||
- | |||
- | Let's try to define our class interface. | ||
- | |||
- | Interface Definition Language (IDL) is the core of System Object Model. All classes have definition of its interface via IDL. With help of somFree Compiler IDL file can be translated to various formats, including various language bindings. For example, to produce C header you can run | ||
- | |||
- | sc -s" | ||
- | |||
- | to produce DEF file you can run | ||
- | |||
- | sc -s" | ||
- | | ||
- | somFree Compiler uses emitter to produce corresponding language binding. You can create new bindings emitter using Emitter Framework. | ||
- | |||
- | First of all, think about your class. What it must do? Define them in terms of object. Propose attributes and methods of class. | ||
- | |||
- | Ok. Imagine, we need class to have access to Java objects. Let's write a class interface in terms of Interface Definition Language. | ||
- | |||
- | < | ||
- | # | ||
- | |||
- | | ||
- | { | ||
- | | ||
- | { | ||
- | | ||
- | // Init Java Virtual Machine (if no current) and create Java object | ||
- | | ||
- | // Destruct Java object and close Java Virtual Machine (if needed) | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | As you can see, no many problems. Syntax of IDL too closest to C-like languages. First thing you need is to include definitions of parent classes. In our case it is ''' | ||
- | |||
- | On object destruction checks is Java Virtual Machine still required will be done and it will be destroyed if not required. Also same constructor and destructor will call corresponding constructor and destructor of Java object. | ||
- | |||
- | Classic IDL file contains definitions like | ||
- | |||
- | < | ||
- | | ||
- | { | ||
- | | ||
- | |||
- | < | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | [http:// | ||
- | |||
- | < | ||
- | # | ||
- | |||
- | | ||
- | { | ||
- | |||
- | # | ||
- | | ||
- | { | ||
- | | ||
- | // Init Java Virtual Machine (if no current) and create Java object | ||
- | | ||
- | // Destruct Java object and close Java Virtual Machine (if needed) | ||
- | } | ||
- | # | ||
- | } | ||
- | </ | ||
- | |||
- | Such approach well known in C-world, but also have some problems. For example, IDL of Document Object Model (DOM) (Yes, [http:// | ||
- | |||
- | As a first step we'll create SOM class interface for java.lang.Object. It can be done with help of javah tool. | ||
- | |||
- | javah -jni java.lang.Object | ||
- | |||
- | As result you'll have such file: | ||
- | |||
- | <code c> | ||
- | |||
- | /* DO NOT EDIT THIS FILE - it is machine generated */ | ||
- | # | ||
- | /* Header for class java_lang_Object */ | ||
- | |||
- | # | ||
- | # | ||
- | # | ||
- | | ||
- | # | ||
- | /* | ||
- | * Class: | ||
- | * Method: | ||
- | * Signature: ()I | ||
- | */ | ||
- | | ||
- | | ||
- | |||
- | /* | ||
- | * Class: | ||
- | * Method: | ||
- | * Signature: ()V | ||
- | */ | ||
- | | ||
- | | ||
- | |||
- | /* | ||
- | * Class: | ||
- | * Method: | ||
- | * Signature: ()V | ||
- | */ | ||
- | | ||
- | | ||
- | |||
- | /* | ||
- | * Class: | ||
- | * Method: | ||
- | * Signature: ()V | ||
- | */ | ||
- | | ||
- | | ||
- | |||
- | /* | ||
- | * Class: | ||
- | * Method: | ||
- | * Signature: (J)V | ||
- | */ | ||
- | | ||
- | | ||
- | |||
- | /* | ||
- | * Class: | ||
- | * Method: | ||
- | * Signature: ()Ljava/ | ||
- | */ | ||
- | | ||
- | | ||
- | |||
- | /* | ||
- | * Class: | ||
- | * Method: | ||
- | * Signature: ()Ljava/ | ||
- | */ | ||
- | | ||
- | | ||
- | |||
- | # | ||
- | } | ||
- | # | ||
- | # | ||
- | </ | ||
- | |||
- | So, this header can be used to generate actual class interface | ||
- | using this script: | ||
- | |||
- | < | ||
- | /* REXX - our best dog */ | ||
- | |||
- | do while lines(' | ||
- | | ||
- | parse value s with x ' | ||
- | if name\='' | ||
- | do | ||
- | | ||
- | say '# | ||
- | say '' | ||
- | say ' | ||
- | say ' | ||
- | end | ||
- | parse value s with x ' | ||
- | if name\='' | ||
- | do | ||
- | /* skip 3 lines */ | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | parse value s2 with start ' | ||
- | | ||
- | parse value s2 with x ', ' y | ||
- | if x=' | ||
- | say ' | ||
- | end | ||
- | end | ||
- | say ' | ||
- | </ | ||
- | |||
- | As result, you'll have following: | ||
- | |||
- | < | ||
- | # | ||
- | |||
- | | ||
- | { | ||
- | jint hashCode (); | ||
- | void notify (); | ||
- | void notifyAll (); | ||
- | void registerNatives (JNIEnv *, jclass); | ||
- | void wait (jlong); | ||
- | jclass getClass (); | ||
- | jobject clone (); | ||
- | | ||
- | </ | ||
- | |||
- | Using such approach you can easily make SOM wrappers for all Java classes. Using Java_JNI_API you can create Java classes and using SOM wrappers you integrate Java code to SOM-based applications. Because SOM API more generic then Java API you can use any available language bindings for development. Also, you can start to extend Java classes by native code with help of SOM engine. | ||
- | |||
- | ===== 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) | ||
- | * Passthru section (optionsl) | ||
- | * Metaclass section (optional) | ||
- | * Data section (optional) | ||
- | * Methods section (optional) | ||
- | |||
- | ==== Include section ==== | ||
- | |||
- | Include section is optional and contains names of OIDL files with definition of parent class, metaclasses and private interfaces of ancestor classes. | ||
- | |||
- | < | ||
- | [#include ( < | ||
- | #include ( < | ||
- | [#include ( < | ||
- | </ | ||
- | |||
- | ancestor is the name of the OIDL file containing the private part of an ancestor class' interface needed in the definition of this class. If ancestor is enclosed in angle brackets (%%<> | ||
- | |||
- | ==== Class section ==== | ||
- | |||
- | < | ||
- | class: name | ||
- | [, file stem = stem] | ||
- | [, external stem = stem] | ||
- | [, function prefix = prefix | | ||
- | , external prefix = prefix | | ||
- | , classprefix = prefix] | ||
- | [, major version = number] | ||
- | [, minor version = number] | ||
- | [, global | local]; | ||
- | [, classInit = function]; | ||
- | [description] | ||
- | </ | ||
- | ==== Release order section ==== | ||
- | |||
- | < | ||
- | release order: name [, name ]* ; | ||
- | </ | ||
- | ==== Parent class section ==== | ||
- | |||
- | < | ||
- | parent [class]: name; | ||
- | description | ||
- | </ | ||
- | |||
- | ==== Passthru section ==== | ||
- | |||
- | < | ||
- | [passthru: language.suffix, | ||
- | line 1 | ||
- | line 2 | ||
- | endpassthru; | ||
- | </ | ||
- | |||
- | ==== Metaclass section ==== | ||
- | |||
- | < | ||
- | metaclass: name; | ||
- | [description] | ||
- | </ | ||
- | ==== Data section ==== | ||
- | |||
- | < | ||
- | data: | ||
- | [description1 ] | ||
- | [declaration [ , private | , public | , internal] [, class]; | ||
- | [ description2]]* | ||
- | </ | ||
- | |||
- | ==== Methods section ==== | ||
- | |||
- | < | ||
- | methods: | ||
- | [description1 ] | ||
- | [[group: name; | ||
- | [ description2]] | ||
- | [method prototype | ||
- | [, public | , private] | ||
- | [, method | , procedure] | ||
- | [, class] | ||
- | [, offset | , name lookup] | ||
- | [, local | , external] | ||
- | [, use = name]; | ||
- | [descriptionS]]* | ||
- | [override: method name | ||
- | [, public | , private] | ||
- | [, class] | ||
- | [, local | , external] | ||
- | [, use = name]; | ||
- | [description4]] * | ||
- | </ | ||
- | |||
- | ====== Programmer' | ||
- | |||
- | ===== 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. | ||
- | |||
- | ===== 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 | ||
- | |||
- | ===== Interaction of SOM Compiler components ===== | ||
- | |||
- | Emitter Framework is a set of classes and SOM Compiler tool. Emitter Framework is used to produce various file formats from the SOM Interface Definition Language files. Emitter Framework classes consist of Emitter classes and Entry classes. Classes can be shadowed. This means a programmer can replace original classes with his own classes. So the SOM Compiler can be highly customized. The only things hard-coded (and closed source) are the IDL file reader and abstract graph builder. | ||
- | |||
- | Before starting description of Emitter Framework let's talk about SOM Compiler. We already talked briefly about SOM Compiler. But for emitters we need to know internals of SOM Compiler much better. | ||
- | |||
- | Let's start from visible parts of SOM Compiler that requires for its work the following files: | ||
- | |||
- | * sc.exe, somc.dll and somc.msg - Main part of compiler. | ||
- | * somcpp.exe - SOM Preprocessor | ||
- | * somipc.exe - Goals not known. Seems just execute different emitters | ||
- | * emit*.dll - Emitters | ||
- | * *.efw - Emitter templates | ||
- | |||
- | '' | ||
- | |||
- | Running shell command: | ||
- | somcpp -D__OS2__ | ||
- | -D__SOMIDL_VERSION_1__ -D__SOMIDL__ -C somobj.idl > C: | ||
- | somipc -mppfile=C: | ||
- | -o somobj somobj.idl | ||
- | Loading | ||
- | " | ||
- | Unloading | ||
- | Loading | ||
- | " | ||
- | Unloading | ||
- | Loading | ||
- | " | ||
- | Unloading | ||
- | Loading | ||
- | " | ||
- | Unloading | ||
- | Removed " | ||
- | |||
- | Not so many info, but some information here. If we look at SMINCLUDE environment variable: | ||
- | |||
- | SMINCLUDE=.; | ||
- | |||
- | then we will see all paths in -I option. | ||
- | |||
- | Considering -D is same as for CPP we can see three symbols defined: | ||
- | * __OS2__ | ||
- | * __SOMIDL_VERSION_1__ | ||
- | * __SOMIDL__ | ||
- | somobj.idl it is file we emitted and CTN file is output from preprocessor. The only unknown switch is -C. After small playing we can see it means "leave comments" | ||
- | |||
- | So, we can try to replace somcpp with some preprocessor. In [http:// | ||
- | |||
- | sc.exe reads SMINCLUDE variable and puts its content to -I options of somcpp.exe and redirect output to temporary file. | ||
- | |||
- | Ok. Now we can try to detect what is somipc.exe. If we try to execute it with command line pointed above, then we will see: | ||
- | | ||
- | " | ||
- | | ||
- | | ||
- | " | ||
- | | ||
- | | ||
- | " | ||
- | | ||
- | | ||
- | " | ||
- | | ||
- | |||
- | Heh. Actually, somipc.exe is a real SOM Compiler. Not sc.exe. sc.exe only prepares the input file for the compiler and handles command line and environment variables. | ||
- | |||
- | After some playing we can see, somipc returns 0 if all ok and -1 if error. | ||
- | |||
- | So, somipc.exe parses preprocessed IDL file and builds Abstract graph. From Abstract graph Object Graph are build. After this somipc.exe calls one by one all emit*.dll files according to -e switches. emit*.dll are set of DLLs with SOM classes. | ||
- | |||
- | Drawing here!! | ||
- | |||
- | SOM Compiler IDL SOM Preprocessor IDL SOM Compiler Emitter Template | ||
- | OIDL SOM Preprocessor OIDL SOM Compiler | ||
- | |||
- | Разрисовать по аналогии с со структурой, | ||
- | |||
- | 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, | ||
- | |||
- | 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. | ||
- | |||
- | Emitter is a subclass of ''' | ||
- | |||
- | < | ||
- | SOMEXTERN FILE * SOMLINK emit(char *file, Entry * cls, Stab * stab); | ||
- | </ | ||
- | |||
- | ''' | ||
- | |||
- | Usually an emitter file can be generated using ''' | ||
- | |||
- | < | ||
- | newemit -C < | ||
- | </ | ||
- | |||
- | To emitter passed Entry object which is root of Object Graph. The root object can be an interface or module class. Processing of such classes slightly different. | ||
- | |||
- | Last part of Emitter Framework is template files. Template files allow you to make some control of emitting process. Templates are usual text files with extension *.efw. Here you can modify output for your wish. Not all emitters support templates. | ||
- | |||
- | So, now you have some imagination about that Emitter Framework is and how it works. | ||
- | |||
- | ===== 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 | | ||
- | |||
- | ===== Generic Emitter ===== | ||
- | |||
- | Generic emitter is a generic template based emitter. It uses simplest template with only one section " | ||
- | Добавить описание символов шаблона и описание, | ||
- | |||
- | ===== 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. | ||
- | Добавить описание символов шаблона. | ||
- | |||
- | ===== 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' | ||
- | Добавить описание символов шаблона. | ||
- | |||
- | ===== 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. | ||
- | Добавить описание символов шаблона. | ||
- | |||
- | ===== 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. | ||
- | Добавить описание символов шаблона. | ||
- | |||
- | ===== 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. | ||
- | |||
- | ===== 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]. | ||
- | |||
- | ===== 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. | ||
- | |||
- | ====== Programmer' | ||
- | |||
- | ===== 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 | ||
- | |||
- | ===== somFree Compiler library ===== | ||
- | |||
- | somFree 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, | ||
- | |||
- | < | ||
- | 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, | ||
- | |||
- | < | ||
- | 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, | ||
- | |||
- | < | ||
- | SOMEXTERN int somttraverseParents(FILE *fp, Entry * cls, Entry *arg, int (*fn)(FILE*, | ||
- | SOMEXTERN int SOMLINK somttraverseParentsSL(FILE *fp, Entry * cls, Entry *arg, int (*fn)(FILE*, | ||
- | </ | ||
- | |||
- | Note: somttraverseParents version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtloadSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN EmitFn | ||
- | </ | ||
- | |||
- | Load emitter < | ||
- | 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, | ||
- | |||
- | < | ||
- | SOMEXTERN Entry * somtfindBaseEp(Entry *ep); | ||
- | SOMEXTERN Entry * SOMLINK somtfindBaseEpSL(Entry *ep); | ||
- | </ | ||
- | |||
- | Note: somtfindBaseEp version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtgetType, | ||
- | |||
- | < | ||
- | SOMEXTERN Entry * somtgetType(char *name, SOMTTypes type); | ||
- | SOMEXTERN Entry * SOMLINK somtgetTypeSL(char *name, SOMTTypes type); | ||
- | </ | ||
- | |||
- | Note: somtGetType version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtokfopen, | ||
- | |||
- | < | ||
- | 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, | ||
- | |||
- | < | ||
- | SOMEXTERN int somtokrename(const char*, const char *); | ||
- | SOMEXTERN int SOMLINK somtokrenameSL(const char*, const char *); | ||
- | </ | ||
- | |||
- | Note: somtokrename version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtopenEmitFile, | ||
- | |||
- | < | ||
- | SOMEXTERN FILE * somtopenEmitFile(char *file, char *ext); | ||
- | SOMEXTERN FILE * SOMLINK somtopenEmitFileSL(char *file, char *ext); | ||
- | </ | ||
- | |||
- | Note: somtopenEmitFile version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtisDbcs, somtisDbcsSL function ==== | ||
- | |||
- | < | ||
- | SOMEXTERN BOOL somtisDbcs(int c); | ||
- | SOMEXTERN BOOL SOMLINK somtisDbcsSL(int c); | ||
- | </ | ||
- | |||
- | Note: somtisDbcs version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtremoveExt, | ||
- | |||
- | < | ||
- | SOMEXTERN boolean somtremoveExt(char *name, char *ext, char *buf); | ||
- | SOMEXTERN boolean SOMLINK somtremoveExt(char *name, char *ext, char *buf); | ||
- | </ | ||
- | |||
- | Remove extension from< | ||
- | |||
- | 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 <ext> extension to < | ||
- | |||
- | Note: somtaddExt version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtarrayToPtr, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtarrayToPtr(Entry *ep, char *stars, char *buf); | ||
- | SOMEXTERN char * SOMLINK somtarrayToPtrSL(Entry *ep, char *stars, char *buf); | ||
- | </ | ||
- | |||
- | Note: somtarrayToPtr version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtattNormalise, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtattNormalise(char *name, char *buf); | ||
- | SOMEXTERN char * SOMLINK somtattNormaliseSL(char *name, char *buf); | ||
- | </ | ||
- | |||
- | Note: somtattNormalise version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtbasename, | ||
- | |||
- | < | ||
- | 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 ==== | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtctos(Const *con, char *buf); | ||
- | SOMEXTERN char * SOMLINK somtctosSL(Const *con, char *buf); | ||
- | </ | ||
- | |||
- | Note: somtctos version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtdbcsPostincr, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtdbcsPostincr(char **p); | ||
- | SOMEXTERN char * SOMLINK somtdbcsPostincrSL(char **p); | ||
- | </ | ||
- | |||
- | Note: somtdbcsPostincr version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtdbcsPreincr, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtdbcsPreincr(char **p); | ||
- | SOMEXTERN char * SOMLINK somtdbcsPreincrSL(char **p); | ||
- | </ | ||
- | |||
- | Note: somtdbcsPreincr version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtdbcsStrchr, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtdbcsStrchr(char *s, int c); | ||
- | SOMEXTERN char * SOMLINK somtdbcsStrchrSL(char *s, int c); | ||
- | </ | ||
- | |||
- | Note: somtdbcsStrchr version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtdbcsStrrchr, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtdbcsStrrchr(char *s, int c); | ||
- | SOMEXTERN char * SOMLINK somtdbcsStrrchrSL(char *s, int c); | ||
- | </ | ||
- | |||
- | Note: somtdbcsStrrchr version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtdbcsStrstr, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtdbcsStrstr(char *s1, char *s2); | ||
- | SOMEXTERN char * SOMLINK somtdbcsStrstrSL(char *s1, char *s2); | ||
- | </ | ||
- | |||
- | |||
- | |||
- | Note: somtdbcsStrstr version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somteptotype, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somteptotype(Entry *ep, char *ptrs, char *buf); | ||
- | SOMEXTERN char * SOMLINK somteptotypeSL(Entry *ep, char *ptrs, char *buf); | ||
- | </ | ||
- | |||
- | Note: somteptotype version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtgetDesc, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtgetDesc(Stab *stab, Entry *cls, Entry *method, char *desc, BOOL addQuotes, BOOL use, BOOL versflg); | ||
- | SOMEXTERN char * SOMLINK somtgetDescSL(Stab *stab, Entry *cls, Entry *method, char *desc, BOOL addQuotes, BOOL use, BOOL versflg); | ||
- | </ | ||
- | |||
- | Note: somtgetDesc version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtgetVersion, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtgetVersion(char *sccsid, char *version); | ||
- | SOMEXTERN char * SOMLINK somtgetVersionSL(char *sccsid, char *version); | ||
- | </ | ||
- | |||
- | Note: somtgetVersion version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtgetgatt, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtgetgatt(char *s); | ||
- | SOMEXTERN char * SOMLINK somtgetgattSL(char *s); | ||
- | </ | ||
- | |||
- | Note: somtgetgatt version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtnextword, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtnextword(const char *s, char *buf); | ||
- | SOMEXTERN char * SOMLINK somtnextwordSL(const char *s, char *buf); | ||
- | </ | ||
- | |||
- | Note: somtnextword version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtnormaliseDesc, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtnormaliseDesc(char *desc, char *normal); | ||
- | SOMEXTERN char * SOMLINK somtnormaliseDescSL(char *desc, char *normal); | ||
- | </ | ||
- | |||
- | Note: somtnormaliseDesc version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtsatos, somtsatosSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtsatos(char **sa, char *sep, char *buf); | ||
- | SOMEXTERN char * SOMLINK somtsatosSL(char **sa, char *sep, char *buf); | ||
- | </ | ||
- | |||
- | Note: somtsatos version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtsearchFile, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtsearchFile(char *file, char *path, char *envvar); | ||
- | SOMEXTERN char * SOMLINK somtsearchFileSL(char *file, char *path, char *envvar); | ||
- | </ | ||
- | |||
- | Note: somtsearchFile version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtskipws, somtskipwsSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtskipws(const char *s); | ||
- | SOMEXTERN char * SOMLINK somtskipwsSL(const char *s); | ||
- | </ | ||
- | |||
- | Note: somtskipws version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtstringFmt, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtstringFmtSL(char *fmt, ...) | ||
- | SOMEXTERN char * SOMLINK somtstringFmtSL(char *fmt, ...) | ||
- | </ | ||
- | |||
- | Allocate buffer for string, format it using <fmt> 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, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtuniqFmt(MemBuf *membuf, char *fmt, ...) | ||
- | SOMEXTERN char * SOMLINK 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, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtargFlag(int *argc, char ***argv); | ||
- | SOMEXTERN int SOMLINK somtargFlagSL(int *argc, char ***argv); | ||
- | </ | ||
- | |||
- | Note: somtargFlag version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtattjoin, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtattjoin(register AttList *ap1, AttList *ap2); | ||
- | SOMEXTERN int SOMLINK somtattjoinSL(register AttList *ap1, AttList *ap2); | ||
- | </ | ||
- | |||
- | Note: somtattjoin version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtdbcsLastChar, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtdbcsLastChar(char *buf); | ||
- | SOMEXTERN int SOMLINK somtdbcsLastCharSL(char *buf); | ||
- | </ | ||
- | |||
- | Note: somtdbcsLastChar version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtdbcsScan, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtdbcsScan(char **buf); | ||
- | SOMEXTERN int SOMLINK somtdbcsScanSL(char **buf); | ||
- | </ | ||
- | |||
- | Note: somtdbcsScan version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtdiskFull, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtdiskFull(FILE *fp); | ||
- | SOMEXTERN int SOMLINK somtdiskFullSL(FILE *fp); | ||
- | </ | ||
- | |||
- | Note: somtdiskFull version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== 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, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtisparent(Entry *cls, Entry *parent); | ||
- | SOMEXTERN int SOMLINK somtisparentSL(Entry *cls, Entry *parent); | ||
- | </ | ||
- | |||
- | Note: somtisparent version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtmget, somtmgetSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtmget(int setnum, int msgnum, char *msgbuf); | ||
- | SOMEXTERN int SOMLINK somtmgetSL(int setnum, int msgnum, char *msgbuf); | ||
- | </ | ||
- | |||
- | Note: somtmget version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtmopen, somtmopenSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtmopen(char *filename); | ||
- | SOMEXTERN int SOMLINK somtmopenSL(char *filename); | ||
- | </ | ||
- | |||
- | Note: somtmopen version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtmprintf, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtmprintf(int setnum, int msgnum, ...); | ||
- | SOMEXTERN int SOMLINK somtmprintfSL(int setnum, int msgnum, ...); | ||
- | </ | ||
- | |||
- | Note: somtmprintf version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtokremove, | ||
- | |||
- | < | ||
- | 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 ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtunload(void *modHandle); | ||
- | SOMEXTERN int SOMLINK somtunloadSL(void *modHandle); | ||
- | </ | ||
- | |||
- | Note: somtunload version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtwriteaccess, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtwriteaccess(char *file); | ||
- | SOMEXTERN int SOMLINK somtwriteaccessSL(char *file); | ||
- | </ | ||
- | |||
- | Note: somtwriteaccess version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtsmalloc, | ||
- | |||
- | < | ||
- | SOMEXTERN void * somtsmalloc(size_t nbytes, BYTE clear); | ||
- | SOMEXTERN void * SOMLINK somtsmallocSL(size_t nbytes, BYTE clear); | ||
- | </ | ||
- | |||
- | Allocate < | ||
- | |||
- | Note: somtsmalloc version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtaddGAtt, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtaddGAtt(MemBuf **membuf, AttList **ap, char *buf); | ||
- | SOMEXTERN void SOMLINK somtaddGAttSL(MemBuf **membuf, AttList **ap, char *buf); | ||
- | </ | ||
- | |||
- | Note: somtaddGAtt version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtcalcFileName, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtcalcFileName(char *def, char *over, char *ext); | ||
- | SOMEXTERN void SOMLINK somtcalcFileNameSL(char *def, char *over, char *ext); | ||
- | </ | ||
- | |||
- | Note: somtcalcFileName version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtcleanFilesFatal, | ||
- | |||
- | < | ||
- | SOMEXTERN void somtcleanFilesFatal(int status); | ||
- | SOMEXTERN void SOMLINK somtcleanFilesFatalSL(int status); | ||
- | </ | ||
- | |||
- | Delete temporary files (if emitted file opened) | ||
- | |||
- | Note: somtcleanFilesFatal version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtemitTypes, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtemitTypes(FILE *fp, Mlist *mp, Stab *stab); | ||
- | SOMEXTERN void SOMLINK somtemitTypesSL(FILE *fp, Mlist *mp, Stab *stab); | ||
- | </ | ||
- | |||
- | Note: somtemitTypes version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somterror, somterrorSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somterror(char *file, long lineno, char *fmt, ...); | ||
- | SOMEXTERN void SOMLINK somterrorSL(char *file, long lineno, char *fmt, ...); | ||
- | </ | ||
- | |||
- | Note: somterror version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtfatal, somtfatalSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtfatal(char *file, long lineno, char *fmt, ...); | ||
- | SOMEXTERN void SOMLINK somtfatalSL(char *file, long lineno, char *fmt, ...); | ||
- | </ | ||
- | |||
- | Note: somtfatal version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtinternal, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtinternal(char *file, long lineno, char *fmt, ...); | ||
- | SOMEXTERN void SOMLINK somtinternalSL(char *file, long lineno, char *fmt, ...); | ||
- | </ | ||
- | |||
- | Note: somtinternal version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtmclose, somtmcloseSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtmclose(void); | ||
- | SOMEXTERN void SOMLINK somtmcloseSL(void); | ||
- | </ | ||
- | |||
- | Note: somtmclose version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtmsg, somtmsgSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtmsg(char *file, long lineno, char *fmt, ...); | ||
- | SOMEXTERN void SOMLINK somtmsgSL(char *file, long lineno, char *fmt, ...); | ||
- | </ | ||
- | |||
- | Note: somtmsg version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtreadDescFile, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtreadDescFile(Stab *stab, char *file); | ||
- | SOMEXTERN void SOMLINK somtreadDescFileSL(Stab *stab, char *file); | ||
- | </ | ||
- | |||
- | Note: somtreadDescFile version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtsetDefaultDesc, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtsetDefaultDesc(Stab *stab); | ||
- | SOMEXTERN void SOMLINK somtsetDefaultDescSL(Stab *stab); | ||
- | </ | ||
- | |||
- | Note: somtsetDefaultDesc version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtsetEmitSignals, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtsetEmitSignals(void(*cleanup) (int), void (*internal) (int)); | ||
- | SOMEXTERN void SOMLINK somtsetEmitSignalsSL(void(*cleanup) (int), void (*internal) (int)); | ||
- | </ | ||
- | |||
- | Note: somtsetEmitSignals version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtsetTypeDefn, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtsetTypeDefn(Entry *type, Entry *ep, char *ptrs, Entry *ret, BOOL array); | ||
- | SOMEXTERN void SOMLINK somtsetTypeDefnSL(Entry *type, Entry *ep, char *ptrs, Entry *ret, BOOL array); | ||
- | </ | ||
- | |||
- | Note: somtsetTypeDefn version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtshowVersion, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtshowVersion(char *s, char *progname, char *sccsid); | ||
- | SOMEXTERN void SOMLINK somtshowVersionSL(char *s, char *progname, char *sccsid); | ||
- | </ | ||
- | |||
- | Note: somtshowVersion version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtsmfree, somtsmfreeSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtsmfree(void *first, ...); | ||
- | SOMEXTERN void SOMLINK somtsmfreeSL(void *first, ...); | ||
- | </ | ||
- | |||
- | Note: somtsmfree version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtunsetEmitSignals, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtunsetEmitSignals(void); | ||
- | SOMEXTERN void SOMLINK somtunsetEmitSignalsSL(void); | ||
- | </ | ||
- | |||
- | Note: somtunsetEmitSignals version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtwarn, somtwarnSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtwarn(char *file, long lineno, char *fmt, ...); | ||
- | SOMEXTERN void SOMLINK somtwarnSL(char *file, long lineno, char *fmt, ...); | ||
- | </ | ||
- | |||
- | Note: somtwarn version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtuppercase, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtuppercase(char *s, char *buf); | ||
- | SOMEXTERN char * SOMLINK somtuppercaseSL(char *s, char *buf); | ||
- | </ | ||
- | |||
- | Convert <s> 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, | ||
- | |||
- | < | ||
- | SOMEXTERN char * somtlowercase(char *s, char *buf); | ||
- | SOMEXTERN char * SOMLINK somtlowercase(char *s, char *buf) | ||
- | </ | ||
- | |||
- | Convert <s> 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, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtdbcsuppercase(char *s, char *buf); | ||
- | SOMEXTERN char * SOMLINK somtdbcsuppercaseSL(char *s, char *buf); | ||
- | </ | ||
- | |||
- | Note: somtdbcsuppercase version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtdbcslowercase, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtdbcslowercase(char *s, char *buf); | ||
- | SOMEXTERN char * SOMLINK somtdbcslowercaseSL(char *s, char *buf); | ||
- | </ | ||
- | |||
- | Note: somtdbcslowercase version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtresetEmitSignals, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtresetEmitSignals(void); | ||
- | SOMEXTERN void SOMLINK somtresetEmitSignalsSL(void); | ||
- | </ | ||
- | |||
- | Note: somtresetEmitSignals version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtsizeofEntry, | ||
- | |||
- | < | ||
- | SOMEXTERN size_t somtsizeofEntry(SOMTTypes type); | ||
- | SOMEXTERN size_t SOMLINK somtsizeofEntrySL(SOMTTypes type); | ||
- | </ | ||
- | |||
- | Return size of Entry structure for < | ||
- | |||
- | 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 ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtepname(Entry *ep, char *buf, BOOL suppressImpctxCheck); | ||
- | SOMEXTERN char * SOMLINK somtepnameSL(Entry *ep, char *buf, BOOL suppressImpctxCheck); | ||
- | </ | ||
- | Note: somtepname version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtgenSeqName, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtgenSeqName(long n, Entry *base, char *buf, BOOL fullname); | ||
- | SOMEXTERN char * SOMLINK somtgenSeqNameSL(long n, Entry *base, char *buf, BOOL fullname); | ||
- | </ | ||
- | |||
- | Note: somtgenSeqName version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtmrifatal, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtmrifatal(char *file, long lineno, int msgnum, | ||
- | SOMEXTERN void SOMLINK somtmrifatalSL(char *file, long lineno, int msgnum, | ||
- | </ | ||
- | |||
- | Note: somtmrifatal version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtmriinternal, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtmriinternal(char *file, long lineno, int msgnum, | ||
- | SOMEXTERN void SOMLINK somtmriinternalSL(char *file, long lineno, int msgnum, | ||
- | </ | ||
- | |||
- | Note: somtmriinternal version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtmrierror, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtmrierror(char *file, long lineno, int msgnum, | ||
- | SOMEXTERN void SOMLINK somtmrierrorSL(char *file, long lineno, int msgnum, | ||
- | </ | ||
- | |||
- | Note: somtmrierror version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtmrimsg, somtmrimsgSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtmrimsg(char *file, long lineno, int msgnum, | ||
- | SOMEXTERN void SOMLINK somtmrimsgSL(char *file, long lineno, int msgnum, | ||
- | </ | ||
- | |||
- | Note: somtmrimsg version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtmriwarn, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtmriwarn(char *file, long lineno, int msgnum, | ||
- | SOMEXTERN void SOMLINK somtmriwarnSL(char *file, long lineno, int msgnum, | ||
- | </ | ||
- | |||
- | Note: somtmriwarn version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtsetInternalMessages, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtsetInternalMessages(char *too_long, char *cant_continue, | ||
- | SOMEXTERN void SOMLINK somtsetInternalMessagesSL(char *too_long, char *cant_continue, | ||
- | </ | ||
- | |||
- | Note: somtsetInternalMessages version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtisvoid, somtisvoidSL function ==== | ||
- | |||
- | < | ||
- | SOMEXTERN boolean somtisvoidSL(Entry *type, char *defn) | ||
- | SOMEXTERN BOOL SOMLINK somtisvoidSL(Entry *type, char *defn) | ||
- | </ | ||
- | |||
- | Return TRUE if type%%-> | ||
- | |||
- | Note: somtisvoid version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtreturnsStruct, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN BOOL somtreturnsStruct(Entry *ep); | ||
- | SOMEXTERN BOOL SOMLINK somtreturnsStructSL(Entry *ep); | ||
- | </ | ||
- | |||
- | Note: somtreturnsStruct version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtreturnsPtr, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN BOOL somtreturnsPtr(Entry *ep); | ||
- | SOMEXTERN BOOL SOMLINK somtreturnsPtrSL(Entry *ep); | ||
- | </ | ||
- | |||
- | Note: somtreturnsPtr version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtsimpleName, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtsimpleName(Entry *ep); | ||
- | SOMEXTERN char * SOMLINK somtsimpleNameSL(Entry *ep); | ||
- | </ | ||
- | |||
- | Note: somtsimpleName version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtqualifyNames, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtqualifyNames(Stab * stab, BOOL fully); | ||
- | SOMEXTERN void SOMLINK somtqualifyNamesSL(Stab * stab, BOOL fully); | ||
- | </ | ||
- | |||
- | Note: somtqualifyNames version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtfindBaseEpNonPtr, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN Entry * somtfindBaseEpNonPtr(Entry *ep); | ||
- | SOMEXTERN Entry * SOMLINK somtfindBaseEpNonPtrSL(Entry *ep); | ||
- | </ | ||
- | |||
- | Note: somtfindBaseEpNonPtr version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtprocessTraps, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN BOOL somtprocessTraps(void); | ||
- | SOMEXTERN BOOL SOMLINK somtprocessTrapsSL(void); | ||
- | </ | ||
- | |||
- | Note: somtprocessTraps version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtallocMlist, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN Mlist * somtallocMlist(Entry * ep); | ||
- | SOMEXTERN Mlist * SOMLINK somtallocMlistSL(Entry * ep); | ||
- | </ | ||
- | |||
- | Note: somtallocMlist version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtmlistend, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN Mlist * somtmlistend(Mlist * mp, char *name); | ||
- | SOMEXTERN Mlist * SOMLINK somtmlistendSL(Mlist * mp, char *name); | ||
- | </ | ||
- | |||
- | Note: somtmlistend version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtisMutRef, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN BOOL somtisMutRef(Entry *ep, Mlist *seen, BOOL isself, long level); | ||
- | SOMEXTERN BOOL SOMLINK somtisMutRefSL(Entry *ep, Mlist *seen, BOOL isself, long level); | ||
- | </ | ||
- | |||
- | Note: somtisMutRef version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtfreeMlist, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN Mlist * somtfreeMlist(Mlist *mp); | ||
- | SOMEXTERN Mlist * SOMLINK somtfreeMlistSL(Mlist *mp); | ||
- | </ | ||
- | |||
- | Note: somtfreeMlist version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtdupMlist, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN Mlist * somtdupMlist(Mlist *mp, Entry *ep); | ||
- | SOMEXTERN Mlist * SOMLINK somtdupMlistSL(Mlist *mp, Entry *ep); | ||
- | </ | ||
- | |||
- | Note: somtdupMlist version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtfreeWorld, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtfreeWorld(); | ||
- | SOMEXTERN void SOMLINK somtfreeWorldSL(); | ||
- | </ | ||
- | ==== somtinitMalloc, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtinitMalloc(BOOL dynamic) | ||
- | SOMEXTERN void SOMLINK somtinitMallocSL(BOOL dynamic) | ||
- | </ | ||
- | |||
- | Initialize memory allocation/ | ||
- | |||
- | Note: < | ||
- | |||
- | Note: somtinitMalloc version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtInitialiseEmitlib. somtInitialiseEmitlibSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtInitialiseEmitlib(void); | ||
- | SOMEXTERN void SOMLINK somtInitialiseEmitlibSL(void); | ||
- | </ | ||
- | |||
- | Note: somtInitialiseEmitlib version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtInitialiseSmmeta, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtInitialiseSmmeta(void); | ||
- | SOMEXTERN void SOMLINK somtInitialiseSmmetaSL(void); | ||
- | </ | ||
- | |||
- | Note: somtInitialiseSmmeta version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtInitialiseCreatetc, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtInitialiseCreatetc(void); | ||
- | SOMEXTERN void SOMLINK somtInitialiseCreatetcSL(void); | ||
- | </ | ||
- | |||
- | Note: somtInitialiseCreatetc version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtInitialiseSmtypes, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtInitialiseSmtypes(void); | ||
- | SOMEXTERN void SOMLINK somtInitialiseSmtypesSL(void); | ||
- | </ | ||
- | |||
- | Note: somtInitialiseSmtypes version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtInitialiseSomc, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtInitialiseSomc(void); | ||
- | SOMEXTERN void SOMLINK somtInitialiseSomcSL(void); | ||
- | </ | ||
- | |||
- | Note: somtInitialiseSomc version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtInitialiseSmsmall, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtInitialiseSmsmall(void); | ||
- | SOMEXTERN void SOMLINK somtInitialiseSmsmallSL(void); | ||
- | </ | ||
- | |||
- | Note: somtInitialiseSmsmall version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtattMap, somtattMapSL function ==== | ||
- | |||
- | |||
- | ==== somtexit, somtexitSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtexit(SOMTExitBuf *ebuf, int status); | ||
- | SOMEXTERN void SOMLINK somtexitSL(SOMTExitBuf *ebuf, int status); | ||
- | </ | ||
- | |||
- | Note: somtexit version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtdymain, somtdymainSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtdymain(char *file, Entry *cls, EmitFn emitfn, char *emitter, int first, char *version, Stab *stab); | ||
- | SOMEXTERN void SOMLINK somtdymainSL(char *file, Entry *cls, EmitFn emitfn, char *emitter, int first, char *version, Stab *stab); | ||
- | </ | ||
- | |||
- | Note: somtdymain version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtaddHeader, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtaddHeader(char *file, FILE *fp, char *ext); | ||
- | SOMEXTERN void SOMLINK somtaddHeaderSL(char *file, FILE *fp, char *ext); | ||
- | </ | ||
- | |||
- | Note: somtaddHeader version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtnthArg, somtnthArgSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN Entry * somtnthArg(Entry * method, int n); | ||
- | SOMEXTERN Entry * SOMLINK somtnthArgSL(Entry * method, int n); | ||
- | </ | ||
- | |||
- | Note: somtnthArg version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtemitModule, | ||
- | |||
- | < | ||
- | 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, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN Mlist * somtallocDataList(Entry *cls); | ||
- | SOMEXTERN Mlist * SOMLINK somtallocDataListSL(Entry *cls); | ||
- | </ | ||
- | |||
- | Note: somtallocDataList version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtallocMethodList, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN Mlist * somtallocMethodList(Entry *cls, boolean all); | ||
- | SOMEXTERN Mlist * SOMLINK somtallocMethodListSL(Entry *cls, boolean all); | ||
- | </ | ||
- | |||
- | Note: somtallocMethodList version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtclsfilename, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtclsfilename(Entry * cls); | ||
- | SOMEXTERN char * SOMLINK somtclsfilenameSL(Entry * cls); | ||
- | </ | ||
- | |||
- | Note: somtclsfilename version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtclsname, | ||
- | |||
- | <code c> | ||
- | 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, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtfindMethodName(const char *bp, char *name); | ||
- | SOMEXTERN char * SOMLINK somtfindMethodNameSL(const char *bp, char *name); | ||
- | </ | ||
- | |||
- | Note: somtfindMethodName version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtfullPrototype, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtfullPrototype(char *buf, Entry * method, char *sep, int varargs); | ||
- | SOMEXTERN char * SOMLINK somtfullPrototypeSL(char *buf, Entry * method, char *sep, int varargs); | ||
- | </ | ||
- | |||
- | Note: somtfullPrototype version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtfullTypedef, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtfullTypedef(char *buf, Entry * cls, Entry * method); | ||
- | SOMEXTERN char * SOMLINK somtfullTypedefSL(char *buf, Entry * cls, Entry * method); | ||
- | </ | ||
- | |||
- | Note: somtfullTypedef version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtgetNonRepeatedParent, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtgetNonRepeatedParent(Entry *cls, int i); | ||
- | SOMEXTERN char * SOMLINK somtgetNonRepeatedParentSL(Entry *cls, int i); | ||
- | </ | ||
- | |||
- | Note: somtgetNonRepeatedParent version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtgetatt, somtgetattSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtgetatt(Entry * ep, char *s); | ||
- | SOMEXTERN char * SOMLINK somtgetattSL(Entry * ep, char *s); | ||
- | </ | ||
- | ==== somtgetdatt, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtgetdatt(Entry * ep, char *s); | ||
- | SOMEXTERN char * SOMLINK somtgetdattSL(Entry * ep, char *s); | ||
- | </ | ||
- | ==== somtgetAbistyle, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN enum SOMTABIStyle | ||
- | SOMEXTERN enum SOMTABIStyle | ||
- | </ | ||
- | |||
- | 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, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtimplicit(Entry *ep, boolean shortform, char *buf); | ||
- | SOMEXTERN char * SOMLINK somtimplicitSL(Entry *ep, boolean shortform, char *buf); | ||
- | </ | ||
- | |||
- | Note: somtimplicit version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtimplicitArgs, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtimplicitArgs(Entry *ep); | ||
- | SOMEXTERN char * SOMLINK somtimplicitArgsSL(Entry *ep); | ||
- | </ | ||
- | |||
- | Note: somtimplicitArgs version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtincludeOnce, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtincludeOnceSL(Entry *cls, char *ext, char *buf); | ||
- | SOMEXTERN char * SOMLINK somtincludeOnceSL(Entry *cls, char *ext, char *buf); | ||
- | </ | ||
- | |||
- | Return token to <buf> for once include checks using name of class <cls> and extension <ext> in form SOM_classname_ext. | ||
- | |||
- | Note: somtincludeOnce version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtpclsfilename, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtpclsfilename(Entry *parent); | ||
- | SOMEXTERN char * SOMLINK somtpclsfilenameSL(Entry *parent); | ||
- | </ | ||
- | |||
- | Note: somtpclsfilename version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtpclsname, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtpclsname(Entry *parent); | ||
- | SOMEXTERN char * SOMLINK somtpclsnameSL(Entry *parent); | ||
- | </ | ||
- | |||
- | Note: somtpclsname version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtprefixedPrototype, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtprefixedPrototype(char *buf, Entry * method, char *sep, int varargs, char *prefix); | ||
- | SOMEXTERN char * SOMLINK somtprefixedPrototypeSL(char *buf, Entry * method, char *sep, int varargs, char *prefix); | ||
- | </ | ||
- | |||
- | Note: somtprefixedPrototype version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtreplaceDataName, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtreplaceDataName(char *buf, Entry * data, char *replace); | ||
- | SOMEXTERN char * SOMLINK somtreplaceDataNameSL(char *buf, Entry * data, char *replace); | ||
- | </ | ||
- | |||
- | Note: somtreplaceDataName version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtrmSelf, somtrmSelfSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtrmSelf(char *str); | ||
- | SOMEXTERN char * SOMLINK somtrmSelfSL(char *str); | ||
- | </ | ||
- | |||
- | Note: somtrmSelf version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtshortArgList, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtshortArgList(char *buf, Entry * method, char *sep, boolean varargs, boolean addself); | ||
- | SOMEXTERN char * SOMLINK somtshortArgListSL(char *buf, Entry * method, char *sep, boolean varargs, boolean addself); | ||
- | </ | ||
- | |||
- | Note: somtshortArgList version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtimplicitMeta, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtimplicitMeta(Entry *cls); | ||
- | SOMEXTERN int SOMLINK somtimplicitMetaSL(Entry *cls); | ||
- | </ | ||
- | |||
- | Note: somtimplicitMeta version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtlistAttribute, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtlistAttribute(FILE * fp, int n, AttList * ap, char *s, boolean value, boolean breakLine, boolean firstComma); | ||
- | SOMEXTERN int SOMLINK somtlistAttributeSL(FILE * fp, int n, AttList * ap, char *s, boolean value, boolean breakLine, boolean firstComma); | ||
- | </ | ||
- | |||
- | Note: somtlistAttribute version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtnewMethodsCount, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtnewMethodsCount(Entry * cls, int meta, boolean procflg); | ||
- | SOMEXTERN int SOMLINK somtnewMethodsCountSL(Entry * cls, int meta, boolean procflg); | ||
- | </ | ||
- | |||
- | Note: somtnewMethodsCount version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtprivateMethodsCount, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN int somtprivateMethodsCount(Entry * cls, int meta); | ||
- | SOMEXTERN int SOMLINK somtprivateMethodsCountSL(Entry * cls, int meta); | ||
- | </ | ||
- | |||
- | Note: somtprivateMethodsCount version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtaddHeader, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtaddHeader(char *file, FILE *fp, char *ext); | ||
- | SOMEXTERN void SOMLINK somtaddHeaderSL(char *file, FILE *fp, char *ext); | ||
- | </ | ||
- | |||
- | Note: somtaddHeader version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtcleanFiles, | ||
- | |||
- | <code c> | ||
- | 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, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtdeclareIdlVarargs(FILE *fp, Entry *ep); | ||
- | SOMEXTERN void SOMLINK somtdeclareIdlVarargsSL(FILE *fp, Entry *ep); | ||
- | </ | ||
- | |||
- | Note: somtdeclareIdlVarargs version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtdymain. somtdymainSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtdymain(char *file, Entry *cls, EmitFn emitfn, char *emitter, int first, char *version, Stab *stab); | ||
- | SOMEXTERN void SOMLINK somtdymainSL(char *file, Entry *cls, EmitFn emitfn, char *emitter, int first, char *version, Stab *stab); | ||
- | </ | ||
- | |||
- | Note: somtdymain version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtemitModuleTypes, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtemitModuleTypes(FILE *fp, Entry *ep, Stab *stab); | ||
- | SOMEXTERN void SOMLINK somtemitModuleTypesSL(FILE *fp, Entry *ep, Stab *stab); | ||
- | </ | ||
- | |||
- | Note: somtemitModuleTypes version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtemitPassthru, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN long somtemitPassthru(FILE * fp, Entry * cls, char *name, int mode, char *att); | ||
- | SOMEXTERN long SOMLINK somtemitPassthruSL(FILE * fp, Entry * cls, char *name, int mode, char *att); | ||
- | </ | ||
- | |||
- | Note: somtemitPassthru version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtfreeDataList, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtfreeDataList(Mlist *mlist); | ||
- | SOMEXTERN void SOMLINK somtfreeDataListSL(Mlist *mlist); | ||
- | </ | ||
- | |||
- | Note: somtfreeDataList version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtfreeMethodList, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtfreeMethodList(Mlist *mlist); | ||
- | SOMEXTERN void SOMLINK somtfreeMethodListSL(Mlist *mlist); | ||
- | </ | ||
- | |||
- | Note: somtfreeMethodList version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtfullComment, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtfullCommentSL(FILE * fp, char *fmt,...); | ||
- | SOMEXTERN void SOMLINK somtfullCommentSL(FILE * fp, char *fmt,...); | ||
- | </ | ||
- | |||
- | Outout formatted string <fmt> 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, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somthandleDiskFull(FILE *fp); | ||
- | SOMEXTERN void SOMLINK somthandleDiskFullSL(FILE *fp); | ||
- | </ | ||
- | |||
- | Note: somthandleDiskFull version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtinitialiseMeta, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtinitialiseMeta(Entry * cls, Stab * stab, boolean meta, int imp); | ||
- | SOMEXTERN void SOMLINK somtinitialiseMetaSL(Entry * cls, Stab * stab, boolean meta, int imp); | ||
- | </ | ||
- | |||
- | Note: somtinitialiseMeta version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtoidlComment, | ||
- | |||
- | <code c> | ||
- | 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-< | ||
- | |||
- | Note: Seems IBM SOM ignores <max> value. | ||
- | |||
- | Style is one of following: | ||
- | |||
- | * %%'/' | ||
- | * '#' | ||
- | * ' | ||
- | * ' | ||
- | * ' | ||
- | * ' | ||
- | |||
- | Other values forced to ' | ||
- | |||
- | < | ||
- | |||
- | Note: somtoidlComment version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtscmsg, somtscmsgSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtscmsg(Entry *cls, Entry *ep, char *fmt, ...); | ||
- | SOMEXTERN void SOMLINK somtscmsgSL(Entry *cls, Entry *ep, char *fmt, ...); | ||
- | </ | ||
- | |||
- | Note: somtscmsg version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtshortDefine, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtshortDefine(FILE *fp, Entry *ep, char *fmt, ...); | ||
- | SOMEXTERN void SOMLINK somtshortDefineSL(FILE *fp, Entry *ep, char *fmt, ...); | ||
- | </ | ||
- | |||
- | Note: somtshortDefine version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtuninitialiseMeta, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtuninitialiseMeta(Entry * cls); | ||
- | SOMEXTERN void SOMLINK somtuninitialiseMetaSL(Entry * cls); | ||
- | </ | ||
- | |||
- | Note: somtuninitialiseMeta version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtobseleteHeaderFile, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN FILE * somtobseleteHeaderFile(char *file, Entry *cls, char *ext, char *newext); | ||
- | SOMEXTERN FILE * SOMLINK somtobseleteHeaderFileSL(char *file, Entry *cls, char *ext, char *newext); | ||
- | </ | ||
- | |||
- | Open emit file and write info about obsolete header. Return file pointer. | ||
- | |||
- | Note: somtoboleteHeaderFile version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtwidenType, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtwidenType(Entry *ep, char *args, char *type); | ||
- | SOMEXTERN char * SOMLINK somtwidenTypeSL(Entry *ep, char *args, char *type); | ||
- | </ | ||
- | |||
- | Note: somtwidenType version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtgenAttStubs, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtgenAttStubs(FILE *fp, Entry *cls, char *prefix, char *classprefix); | ||
- | SOMEXTERN void SOMLINK somtgenAttStubsSL(FILE *fp, Entry *cls, char *prefix, char *classprefix); | ||
- | </ | ||
- | |||
- | Note: somtgenAttStubs version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somtstrictidl, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtstrictidl(FILE *fp); | ||
- | SOMEXTERN void SOMLINK somtstrictidlSL(FILE *fp); | ||
- | </ | ||
- | |||
- | Output definition of SOM_STRICT_IDL macro if somadd variable is TRUE; | ||
- | |||
- | Note: somtstrictidl version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtcreateTypeCodes, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtcreateTypeCodes (Stab *stab); | ||
- | SOMEXTERN void SOMLINK somtcreateTypeCodesSL(Stab *stab); | ||
- | </ | ||
- | |||
- | Note: somtcreateTypeCodes | ||
- | |||
- | ==== somtemitTcConstant, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN TypeCode * somtemitTcConstant(TypeCode t, FILE *f, char *name, TypeCode *alreadyDone); | ||
- | SOMEXTERN TypeCode * SOMLINK somtemitTcConstantSL(TypeCode t, FILE *f, char *name, TypeCode *alreadyDone); | ||
- | </ | ||
- | |||
- | |||
- | Note: somtemitTcConstant version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtemitPredefinedTcConstants, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtemitPredefinedTcConstants (FILE *f); | ||
- | SOMEXTERN void SOMLINK somtemitPredefinedTcConstantsSL(FILE *f); | ||
- | </ | ||
- | |||
- | Note: somtemitPredefinedTcConstants | ||
- | |||
- | ==== somtAncestorClass, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN Entry * somtAncestorClass(Entry *cls, char *name); | ||
- | SOMEXTERN Entry * SOMLINK somtAncestorClassSL(Entry *cls, char *name); | ||
- | </ | ||
- | |||
- | Note: somtAncestorClass version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somttcAlignment, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN short somttcAlignment (TypeCode t, Environment *ev); | ||
- | SOMEXTERN short SOMLINK somttcAlignmentSL(TypeCode t, Environment *ev); | ||
- | </ | ||
- | |||
- | Note: somttcAlignment | ||
- | |||
- | ==== somttcSize, somttcSizeSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN long somttcSize (TypeCode t, Environment *ev); | ||
- | SOMEXTERN long SOMLINK somttcSizeSL(TypeCode t, Environment *ev); | ||
- | </ | ||
- | |||
- | Note: somttcSize version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ==== somttcKind, somttcKindSL function ==== | ||
- | |||
- | <code c> | ||
- | SOMEXTERN TCKind somttcKind (TypeCode t, Environment *ev); | ||
- | SOMEXTERN TCKind SOMLINK somttcKindSL(TypeCode t, Environment *ev); | ||
- | </ | ||
- | |||
- | Note: somttcKind version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somttcSeqFromListString, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN sequence(string) somttcSeqFromListString (string s); | ||
- | SOMEXTERN sequence(string) SOMLINK somttcSeqFromListStringSL(string s); | ||
- | </ | ||
- | |||
- | Note: somttcSeqFromListString version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ==== somtGetReintroducedMethods, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN _IDL_SEQUENCE_EntryPtr somtGetReintroducedMethods(Entry *cls); | ||
- | SOMEXTERN _IDL_SEQUENCE_EntryPtr SOMLINK somtGetReintroducedMethodsSL(Entry *cls); | ||
- | </ | ||
- | |||
- | Note: somtGetReintroducedMethods version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | ===== Symbol table support functions ===== | ||
- | |||
- | ===== somtallocBuf, | ||
- | |||
- | Note: somtallocBuf version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtuniqString, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN char * somtuniqString(MemBuf *membuf, char *s); | ||
- | SOMEXTERN char * SOMLINK somtuniqStringSL(MemBuf *membuf, char *s); | ||
- | </ | ||
- | |||
- | Check is string unique and return NULL if not, or string itself if unique; | ||
- | |||
- | Note: somtuniqString version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtkeyword, | ||
- | |||
- | < | ||
- | SOMEXTERN long somtkeyword(KeytabEntry *keytab, char *kword, long keytabsize); | ||
- | SOMEXTERN long SOMLINK somtkeywordSL(KeytabEntry *keytab, char *kword, long keytabsize); | ||
- | </ | ||
- | |||
- | Return token for keyword < | ||
- | |||
- | Note: somtkeyword version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtaddEntry, | ||
- | |||
- | < | ||
- | SOMEXTERN void * somtaddEntry(Stab *stab, char *name, void *ep); | ||
- | SOMEXTERN void * SOMLINK somtaddEntrySL(Stab *stab, char *name, void *ep); | ||
- | </ | ||
- | |||
- | Add entry <ep> with name < | ||
- | |||
- | Note: somtaddEntry version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtgetEntry, | ||
- | |||
- | < | ||
- | SOMEXTERN void * somtgetEntry(Stab *stab, char *name); | ||
- | SOMEXTERN void * SOMLINK somtgetEntrySL(Stab *stab, char *name); | ||
- | </ | ||
- | |||
- | Return pointer to entry structure with name equal to < | ||
- | |||
- | Note: somtgetEntry version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtstabFirst, | ||
- | |||
- | < | ||
- | SOMEXTERN void * somtstabFirst(Stab *stab, Sep **sepp); | ||
- | SOMEXTERN void * SOMLINK somtstabFirstSL(Stab *stab, Sep **sepp); | ||
- | </ | ||
- | |||
- | Return first entry from symbol table < | ||
- | |||
- | Note: somtstabFirst version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtstabNext, | ||
- | |||
- | < | ||
- | SOMEXTERN void * somtstabNext(Stab *stab, Sep **sepp); | ||
- | SOMEXTERN void * SOMLINK somtstabNextSL(Stab *stab, Sep **sepp); | ||
- | </ | ||
- | |||
- | Return next after last search entry from symbol table < | ||
- | |||
- | Note: somtstabNext version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtstabFirstName, | ||
- | |||
- | < | ||
- | SOMEXTERN void * somtstabFirstName(Stab *stab, char *name, Sep **sepp); | ||
- | SOMEXTERN void * SOMLINK somtstabFirstNameSL(Stab *stab, char *name, Sep **sepp); | ||
- | </ | ||
- | |||
- | Return first entry with < | ||
- | |||
- | Note: somtstabFirstName version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtstabNextName, | ||
- | |||
- | < | ||
- | SOMEXTERN void * somtstabNextName(Stab *stab, Sep **sepp); | ||
- | SOMEXTERN void * SOMLINK somtstabNextNameSL(Stab *stab, Sep **sepp); | ||
- | </ | ||
- | |||
- | Return next after last search entry from symbol table < | ||
- | |||
- | Note: somtstabNextName version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtcreateMemBuf, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtcreateMemBuf(MemBuf **membufp, size_t bufsize, long stabsize); | ||
- | SOMEXTERN void SOMLINK somtcreateMemBufSL(MemBuf **membufp, size_t bufsize, long stabsize); | ||
- | </ | ||
- | |||
- | Note: somtcreateMemBuf version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtcreateStab, | ||
- | |||
- | < | ||
- | SOMEXTERN void somtcreateStab(Stab *stab, long stabsize, long entrysize); | ||
- | SOMEXTERN void SOMLINK somtcreateStabSL(Stab *stab, long stabsize, long entrysize); | ||
- | </ | ||
- | |||
- | Initialize symbol table structure < | ||
- | |||
- | Note: somtcreateStab version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somticstrcmp, | ||
- | |||
- | < | ||
- | SOMEXTERN int somticstrcmp(char *s, char *t) | ||
- | SOMEXTERN int SOMLINK somticstrcmpSL(char *s, char *t); | ||
- | </ | ||
- | |||
- | Alias of C stricmp. | ||
- | |||
- | Note: somticstrcmp version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtaddEntryBuf, | ||
- | |||
- | < | ||
- | SOMEXTERN void * somtaddEntryBuf(Stab *stab, char *name, void *ep, void *buf, size_t len); | ||
- | SOMEXTERN void * SOMLINK somtaddEntryBufSL(Stab *stab, char *name, void *ep, void *buf, size_t len); | ||
- | </ | ||
- | |||
- | Add entry <ep> with name < | ||
- | |||
- | Note: somtaddEntryBuf version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== somtfreeStab, | ||
- | |||
- | <code c> | ||
- | SOMEXTERN void somtfreeStab(Stab *stab, BOOL freeEp); | ||
- | SOMEXTERN void SOMLINK somtfreeStabSL(Stab *stab, BOOL freeEp); | ||
- | </ | ||
- | |||
- | Note: somtfreeStab version uses default compiler calling convention. For IBM SOM 3.0 for NT it is Optlink. | ||
- | |||
- | ===== 3. somFree Emitter Framework ===== | ||
- | |||
- | ==== SOMTAttributeEntryC Class ==== | ||
- | |||
- | === somtIsReadonly attribute === | ||
- | |||
- | < | ||
- | readonly attribute boolean somtIsReadonly; | ||
- | </ | ||
- | |||
- | Whether the attribute is readonly. | ||
- | |||
- | === somtAttribType attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTEntryC somtAttribType; | ||
- | </ | ||
- | |||
- | The type of the attribute. | ||
- | |||
- | === somtGetFirstAttributeDeclarator method === | ||
- | |||
- | < | ||
- | SOMTDataEntryC somtGetFirstAttributeDeclarator(); | ||
- | </ | ||
- | |||
- | The first attribute declarator for this attribute declaration. | ||
- | |||
- | === somtGetNextAttributeDeclarator method === | ||
- | |||
- | < | ||
- | SOMTDataEntryC somtGetNextAttributeDeclarator(); | ||
- | </ | ||
- | |||
- | The next attribute declarator for this attribute declaration, | ||
- | |||
- | === somtGetFirstGetMethod method === | ||
- | |||
- | < | ||
- | SOMTMethodEntryC somtGetFirstGetMethod(); | ||
- | </ | ||
- | |||
- | The first get method for this attribute declaration. | ||
- | |||
- | === somtGetNextGetMethod method === | ||
- | |||
- | < | ||
- | SOMTMethodEntryC somtGetNextGetMethod(); | ||
- | </ | ||
- | |||
- | The next get method for this attribute declaration, | ||
- | |||
- | === somtGetFirstSetMethod method === | ||
- | |||
- | < | ||
- | SOMTMethodEntryC somtGetFirstSetMethod(); | ||
- | </ | ||
- | |||
- | The first set method for this attribute declaration. | ||
- | |||
- | === somtGetNextSetMethod method === | ||
- | |||
- | < | ||
- | SOMTMethodEntryC somtGetNextSetMethod(); | ||
- | </ | ||
- | |||
- | The next set method for this attribute declaration, | ||
- | |||
- | |||
- | ==== SOMTBaseClassEntryC Class ==== | ||
- | |||
- | === somtBaseClassDef attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTClassEntryC somtBaseClassDef; | ||
- | </ | ||
- | |||
- | Returns the class definition entry for the Base class named in this entry. | ||
- | |||
- | ==== SOMTClassEntryC Class ==== | ||
- | |||
- | === somtSourceFileName attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtSourceFileName; | ||
- | </ | ||
- | | ||
- | Returns the name of file containing the definition of this class. | ||
- | |||
- | === somtMetaClassEntry attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTMetaClassEntryC somtMetaClassEntry; | ||
- | </ | ||
- | | ||
- | Returns the entry for the meta class statement in class definition or NULL if there is no meta class statement. | ||
- | |||
- | Note: the SOM architecture requires that all classes have a meta class, however < | ||
- | |||
- | === somtClassModule attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTModuleEntryC somtClassModule; | ||
- | </ | ||
- | |||
- | The module that contains this class, or NULL if there is not one. | ||
- | |||
- | |||
- | === somtNewMethodCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtNewMethodCount; | ||
- | </ | ||
- | | ||
- | Returns the number of new methods introduced in this class definition. | ||
- | |||
- | === somtLocalInclude attribute === | ||
- | |||
- | < | ||
- | readonly attribute boolean somtLocalInclude; | ||
- | </ | ||
- | | ||
- | Returns true if the header files associated with this class definition should be included using local search, eg, " | ||
- | |||
- | === somtPrivateMethodCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtPrivateMethodCount; | ||
- | </ | ||
- | | ||
- | Returns number of new private methods in class. | ||
- | |||
- | === somtStaticMethodCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtStaticMethodCount; | ||
- | </ | ||
- | | ||
- | Returns number of new static methods in class. | ||
- | |||
- | === somtOverrideMethodCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtOverrideMethodCount; | ||
- | </ | ||
- | | ||
- | Returns number of new override methods in class. | ||
- | |||
- | |||
- | === somtProcMethodCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtProcMethodCount; | ||
- | </ | ||
- | |||
- | Returns number of procedure methods for class. | ||
- | |||
- | === somtVAMethodCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtVAMethodCount; | ||
- | </ | ||
- | | ||
- | Returns number of VarArg methods for class. | ||
- | |||
- | === somtBaseCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtBaseCount; | ||
- | </ | ||
- | |||
- | Returns number of base classes for class. | ||
- | |||
- | === somtExternalDataCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtExternalDataCount; | ||
- | </ | ||
- | |||
- | Returns number of external (public or private) data members for class. | ||
- | |||
- | |||
- | === somtPublicDataCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtPublicDataCount; | ||
- | </ | ||
- | | ||
- | Returns number of public data members for class. | ||
- | |||
- | === somtPrivateDataCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtPrivateDataCount; | ||
- | </ | ||
- | |||
- | Returns number of private data members for class. | ||
- | |||
- | === somtMetaclassFor attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTClassEntryC somtMetaclassFor; | ||
- | </ | ||
- | |||
- | If this is a metaclass, the class for which it is a metaclass, else NULL. | ||
- | |||
- | |||
- | === somtForwardRef attribute === | ||
- | |||
- | < | ||
- | readonly attribute boolean somtForwardRef; | ||
- | </ | ||
- | |||
- | Whether this is a forward reference or not. | ||
- | |||
- | === somtGetFirstBaseClass method === | ||
- | |||
- | < | ||
- | SOMTBaseClassEntryC somtGetFirstBaseClass(); | ||
- | </ | ||
- | | ||
- | Returns the entry for the "left most" direct base class form for this class, if it has one and NULL otherwise. | ||
- | |||
- | Note: < | ||
- | |||
- | |||
- | === somtGetNextBaseClass method === | ||
- | |||
- | < | ||
- | SOMTBaseClassEntryC somtGetNextBaseClass(); | ||
- | </ | ||
- | | ||
- | Returns the entry for the next direct base class form of this class, if it has one and NULL otherwise. | ||
- | |||
- | === somtGetFirstReleaseName method === | ||
- | |||
- | < | ||
- | string somtGetFirstReleaseName(); | ||
- | </ | ||
- | |||
- | Returns the first name in the release order statement for this entry if it has one and NULL otherwise. | ||
- | |||
- | === somtGetNextReleaseName method === | ||
- | |||
- | < | ||
- | string somtGetNextReleaseName(); | ||
- | </ | ||
- | | ||
- | Returns the next name in the release order statement for this entry if it has one and NULL otherwise. | ||
- | |||
- | === somtGetReleaseNameList method === | ||
- | |||
- | < | ||
- | long somtGetReleaseNameList(in string buffer); | ||
- | </ | ||
- | | ||
- | Puts all the release names in < | ||
- | |||
- | === somtGetFirstPassthru method === | ||
- | |||
- | < | ||
- | SOMTPassthruEntryC somtGetFirstPassthru(); | ||
- | </ | ||
- | |||
- | Returns the first passthru entry for this class definition if it has one and NULL otherwise. | ||
- | |||
- | === somtGetNextPassthru method === | ||
- | |||
- | < | ||
- | SOMTPassthruEntryC somtGetNextPassthru(); | ||
- | </ | ||
- | |||
- | Returns the next passthru entry for this class definition if it has one and NULL otherwise. | ||
- | |||
- | === somtGetFirstData method === | ||
- | |||
- | < | ||
- | SOMTDataEntryC somtGetFirstData(); | ||
- | </ | ||
- | |||
- | Returns the first data entry for this class definition if it has one and NULL otherwise. | ||
- | |||
- | === somtGetNextData method === | ||
- | |||
- | < | ||
- | SOMTDataEntryC somtGetNextData(); | ||
- | </ | ||
- | | ||
- | Returns the next data entry for this class definition if it has one and NULL otherwise. | ||
- | |||
- | === somtGetFirstStaticData method === | ||
- | |||
- | < | ||
- | SOMTDataEntryC somtGetFirstStaticData(); | ||
- | </ | ||
- | |||
- | Returns the first static data entry for this class definition if it has one and NULL otherwise. Static data is handled specialy in SOM so a different accessor method is provided. | ||
- | |||
- | === somtGetNextStaticData method === | ||
- | |||
- | < | ||
- | SOMTDataEntryC somtGetNextStaticData(); | ||
- | </ | ||
- | |||
- | Returns the next static data entry for this class definition if it has one and NULL otherwise. | ||
- | |||
- | === somtGetFirstMethod method === | ||
- | |||
- | < | ||
- | SOMTMethodEntryC somtGetFirstMethod(); | ||
- | </ | ||
- | |||
- | Returns the first method entry for this class definition if it has one and NULL otherwise. | ||
- | |||
- | === somtGetNextMethod method === | ||
- | |||
- | < | ||
- | SOMTMethodEntryC somtGetNextMethod(); | ||
- | </ | ||
- | |||
- | Returns the next method entry for this class definition if it has one and NULL otherwise. | ||
- | |||
- | === somtGetFirstInheritedMethod method === | ||
- | |||
- | < | ||
- | SOMTMethodEntryC somtGetFirstInheritedMethod(); | ||
- | </ | ||
- | |||
- | Returns the first inherited and not overridden method entry for this class definition if it has one and NULL otherwise. | ||
- | |||
- | === somtGetNextInheritedMethod method === | ||
- | |||
- | < | ||
- | SOMTMethodEntryC somtGetNextInheritedMethod(); | ||
- | </ | ||
- | |||
- | Returns the next inherited and not overridden method entry for this class definition if it has one and NULL otherwise. | ||
- | |||
- | === somtGetFirstAttribute method === | ||
- | |||
- | < | ||
- | SOMTAttributeEntryC somtGetFirstAttribute(); | ||
- | </ | ||
- | |||
- | === somtGetNextAttribute method === | ||
- | |||
- | < | ||
- | SOMTAttributeEntryC somtGetNextAttribute(); | ||
- | </ | ||
- | |||
- | === somtGetFirstStruct method === | ||
- | |||
- | < | ||
- | SOMTStructEntryC somtGetFirstStruct(); | ||
- | </ | ||
- | |||
- | === somtGetNextStruct method === | ||
- | |||
- | < | ||
- | SOMTStructEntryC somtGetNextStruct(); | ||
- | </ | ||
- | |||
- | === somtGetFirstTypedef method === | ||
- | |||
- | < | ||
- | SOMTTypedefEntryC somtGetFirstTypedef(); | ||
- | </ | ||
- | |||
- | === somtGetNextTypedef method === | ||
- | |||
- | < | ||
- | SOMTTypedefEntryC somtGetNextTypedef(); | ||
- | </ | ||
- | |||
- | === somtGetFirstUnion method === | ||
- | |||
- | < | ||
- | SOMTUnionEntryC somtGetFirstUnion(); | ||
- | </ | ||
- | |||
- | === somtGetNextUnion method === | ||
- | |||
- | < | ||
- | SOMTUnionEntryC somtGetNextUnion(); | ||
- | </ | ||
- | |||
- | === somtGetFirstEnum method === | ||
- | |||
- | < | ||
- | SOMTEnumEntryC somtGetFirstEnum(); | ||
- | </ | ||
- | |||
- | === somtGetNextEnum method === | ||
- | |||
- | < | ||
- | SOMTEnumEntryC somtGetNextEnum(); | ||
- | </ | ||
- | |||
- | === somtGetFirstConstant method === | ||
- | |||
- | < | ||
- | SOMTConstEntryC somtGetFirstConstant(); | ||
- | </ | ||
- | |||
- | === somtGetNextConstant method === | ||
- | |||
- | < | ||
- | SOMTConstEntryC somtGetNextConstant(); | ||
- | </ | ||
- | |||
- | === somtGetFirstSequence method === | ||
- | |||
- | < | ||
- | SOMTSequenceEntryC somtGetFirstSequence(); | ||
- | </ | ||
- | |||
- | === somtGetNextSequence method === | ||
- | |||
- | < | ||
- | SOMTSequenceEntryC somtGetNextSequence(); | ||
- | </ | ||
- | |||
- | === somtGetFirstPubdef method === | ||
- | |||
- | < | ||
- | SOMTEntryC somtGetFirstPubdef(); | ||
- | </ | ||
- | |||
- | === somtGetNextPubdef method === | ||
- | |||
- | < | ||
- | SOMTEntryC somtGetNextPubdef(); | ||
- | </ | ||
- | |||
- | === somtFilterNew method === | ||
- | |||
- | < | ||
- | boolean somtFilterNew(in SOMTMethodEntryC entry); | ||
- | </ | ||
- | | ||
- | Returns 1 if entry is new in the class. | ||
- | |||
- | === somtFilterOverridden method === | ||
- | |||
- | < | ||
- | boolean somtFilterOverridden(in SOMTMethodEntryC entry); | ||
- | </ | ||
- | | ||
- | Returns 1 if entry is an overriding method of the class. | ||
- | |||
- | === somtFilterPrivOrPub method === | ||
- | |||
- | < | ||
- | boolean somtFilterPrivOrPub(in SOMTCommonEntryC entry); | ||
- | </ | ||
- | | ||
- | Returns TRUE if entry is Private or Public. | ||
- | |||
- | ==== SOMTCommonEntryC Class ==== | ||
- | |||
- | === somtTypeObj attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTEntryC somtTypeObj; | ||
- | </ | ||
- | |||
- | The object representing the base type of the entry. This does not include pointer stars or array declarators. | ||
- | |||
- | === somtPtrs attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtPtrs; | ||
- | </ | ||
- | |||
- | The string of stars associated with the entry' | ||
- | |||
- | === somtArrayDimsString attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtArrayDimsString; | ||
- | </ | ||
- | |||
- | Array dimensions in string form. | ||
- | |||
- | === somtGetFirstArrayDimension method === | ||
- | |||
- | < | ||
- | unsigned long somtGetFirstArrayDimension(); | ||
- | </ | ||
- | |||
- | The first array dimension, for items of type array. Zero indicates that the item is not an array. | ||
- | |||
- | === somtGetNextArrayDimension method === | ||
- | |||
- | < | ||
- | unsigned long somtGetNextArrayDimension(); | ||
- | </ | ||
- | |||
- | The next array dimension, for items of type array, relative to the previous call to this method or to somtGetFirstArrayDimension. | ||
- | |||
- | === somtSourceText attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtSourceText; | ||
- | </ | ||
- | | ||
- | The un-parsed source text for this entry, with leading and trailing white space removed. | ||
- | |||
- | === somtType attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtType; | ||
- | </ | ||
- | | ||
- | The IDL type for this entry in string form. For methods this is the return type. For data or parameters this is the type of the data item or parameter. For user-defined types, this is the type specification. It is of the form: < | ||
- | |||
- | === somtVisibility attribute === | ||
- | |||
- | < | ||
- | readonly attribute somtVisibilityT somtVisibility; | ||
- | </ | ||
- | | ||
- | The visibility of this entry. | ||
- | |||
- | |||
- | === somtIsArray method === | ||
- | |||
- | < | ||
- | boolean somtIsArray(out long size); | ||
- | </ | ||
- | | ||
- | Returns 1 (true) if the type involves an array. | ||
- | |||
- | === somtIsPointer method === | ||
- | |||
- | < | ||
- | boolean somtIsPointer(); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if the type involves a pointer, and 0 (false) otherwise | ||
- | |||
- | ==== SOMTConstEntryC Class ==== | ||
- | |||
- | === somtConstTypeObj attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTEntryC somtConstTypeObj; | ||
- | </ | ||
- | |||
- | A pointer to an object representing the type of the const. | ||
- | |||
- | === somtConstType attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtConstType; | ||
- | </ | ||
- | |||
- | The type of the constant' | ||
- | |||
- | |||
- | === somtConstStringVal attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtConstStringVal; | ||
- | </ | ||
- | |||
- | The string value of the constant (unevaluated). | ||
- | |||
- | === somtConstNumVal attribute === | ||
- | |||
- | < | ||
- | readonly attribute unsigned long somtConstNumVal; | ||
- | </ | ||
- | |||
- | The number value of the constant. This attribute is not valid if the value cannot be stored in an unsigned long (string, float, double, negative). The somtConstIsNegative attribute can be used to determine if the value is negative. | ||
- | |||
- | |||
- | === somtConstNumNegVal attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtConstNumNegVal; | ||
- | </ | ||
- | |||
- | The number value of the constant, if negative. | ||
- | |||
- | === somtConstIsNegative attribute === | ||
- | |||
- | < | ||
- | readonly attribute boolean somtConstIsNegative; | ||
- | </ | ||
- | |||
- | Whether the constant' | ||
- | |||
- | |||
- | === somtConstVal attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtConstVal; | ||
- | </ | ||
- | |||
- | The string value of the constant (evaluated). The " | ||
- | |||
- | ==== SOMTDataEntryC Class ==== | ||
- | |||
- | === somtIsSelfRef attribute === | ||
- | |||
- | < | ||
- | readonly attribute boolean somtIsSelfRef; | ||
- | </ | ||
- | |||
- | Whether a declarator of a struct is self-referential. | ||
- | |||
- | ==== SOMTEmitC Class ==== | ||
- | |||
- | === somtTemplate attribute === | ||
- | |||
- | < | ||
- | attribute SOMTTemplateOutputC somtTemplate; | ||
- | </ | ||
- | |||
- | The template is to provide template output and maintains a symbol table that provides a sort of global context for the emitter. | ||
- | |||
- | === somtTargetFile attribute === | ||
- | |||
- | < | ||
- | attribute FILE *somtTargetFile; | ||
- | </ | ||
- | |||
- | The target file is the one to which all emitter output is to be directed. | ||
- | |||
- | === somtTargetClass attribute === | ||
- | |||
- | < | ||
- | attribute SOMTClassEntryC somtTargetClass; | ||
- | </ | ||
- | |||
- | The target class is the class definition for which code is to be emitted. | ||
- | |||
- | === somtTargetModule attribute === | ||
- | |||
- | < | ||
- | attribute SOMTModuleEntryC somtTargetModule; | ||
- | </ | ||
- | |||
- | The target module is the module definition for which code is to be emitted. | ||
- | |||
- | |||
- | === somtTargetType attribute === | ||
- | |||
- | < | ||
- | attribute SOMTTargetTypeT somtTargetType; | ||
- | </ | ||
- | |||
- | The target type indicates what type of output file is being produced, public, private, or implementation. | ||
- | |||
- | |||
- | === somtEmitterName attribute === | ||
- | |||
- | < | ||
- | attribute string somtEmitterName; | ||
- | </ | ||
- | |||
- | The short name of the emitter (the name used to invoke it via the SOM Compiler. | ||
- | |||
- | === somtGenerateSections method === | ||
- | |||
- | < | ||
- | boolean somtGenerateSections(); | ||
- | </ | ||
- | |||
- | Calls each of the section methods in order. | ||
- | |||
- | | ||
- | when emitting a class: | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | when emitting a class: | ||
- | somtEmitAttribute | ||
- | somtEmitMethod | ||
- | somtEmitRelease | ||
- | somtEmitPassthru | ||
- | somtEmitData | ||
- | when emitting a module: | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | This method will need to be overridden by many emitters in order to rearange the order of the sections and to add or delete sections. | ||
- | |||
- | Note: repeating sections such as methods, data, and passthru, have a prolog and epilog method as well. The prolog method is called before the first sections is processed and the epilog method is called after the last section is processed. | ||
- | |||
- | === somtOpenSymbolsFile method === | ||
- | |||
- | < | ||
- | FILE* somtOpenSymbolsFile(in string file, in string mode); | ||
- | </ | ||
- | | ||
- | This method attempts to open the symbols file. If file doesn' | ||
- | |||
- | === somtSetPredefinedSymbols method === | ||
- | |||
- | < | ||
- | void somtSetPredefinedSymbols(); | ||
- | </ | ||
- | | ||
- | Set predefined symbols that are used for such things as section names etc. | ||
- | |||
- | === somtFileSymbols method === | ||
- | |||
- | < | ||
- | void somtFileSymbols(); | ||
- | </ | ||
- | | ||
- | Symbols that are common to the file. This includes the target class symbols, and the metaclass symbols, and special symbols like < | ||
- | |||
- | |||
- | === somtEmitProlog method === | ||
- | |||
- | < | ||
- | void somtEmitProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitBaseIncludesProlog method === | ||
- | |||
- | < | ||
- | void somtEmitBaseIncludesProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitBaseIncludes method === | ||
- | |||
- | < | ||
- | void somtEmitBaseIncludes(in SOMTBaseClassEntryC base); | ||
- | </ | ||
- | |||
- | === somtEmitBaseIncludesEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitBaseIncludesEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitMetaInclude method === | ||
- | |||
- | < | ||
- | void somtEmitMetaInclude(); | ||
- | </ | ||
- | |||
- | === somtEmitClass method === | ||
- | |||
- | < | ||
- | void somtEmitClass(); | ||
- | </ | ||
- | |||
- | === somtEmitMeta method === | ||
- | |||
- | < | ||
- | void somtEmitMeta(); | ||
- | </ | ||
- | |||
- | === somtEmitBaseProlog method === | ||
- | |||
- | < | ||
- | void somtEmitBaseProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitBase method === | ||
- | |||
- | < | ||
- | void somtEmitBase(in SOMTBaseClassEntryC base); | ||
- | </ | ||
- | |||
- | === somtEmitBaseEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitBaseEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitPassthruProlog method === | ||
- | |||
- | < | ||
- | void somtEmitPassthruProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitPassthru method === | ||
- | |||
- | < | ||
- | void somtEmitPassthru(in SOMTPassthruEntryC entry); | ||
- | </ | ||
- | |||
- | === somtEmitPassthruEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitPassthruEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitRelease method === | ||
- | |||
- | < | ||
- | void somtEmitRelease(); | ||
- | </ | ||
- | |||
- | === somtEmitDataProlog method === | ||
- | |||
- | < | ||
- | void somtEmitDataProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitData method === | ||
- | |||
- | < | ||
- | void somtEmitData(in SOMTDataEntryC entry); | ||
- | </ | ||
- | |||
- | === somtEmitDataEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitDataEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitAttributeProlog method === | ||
- | |||
- | < | ||
- | void somtEmitAttributeProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitAttribute method === | ||
- | |||
- | < | ||
- | void somtEmitAttribute(in SOMTAttributeEntryC att); | ||
- | </ | ||
- | |||
- | === somtEmitAttributeEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitAttributeEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitConstantProlog method === | ||
- | |||
- | < | ||
- | void somtEmitConstantProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitConstant method === | ||
- | |||
- | < | ||
- | void somtEmitConstant(in SOMTConstEntryC con); | ||
- | </ | ||
- | |||
- | |||
- | === somtEmitConstantEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitConstantEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitTypedefProlog method === | ||
- | |||
- | < | ||
- | void somtEmitTypedefProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitTypedef method === | ||
- | |||
- | < | ||
- | void somtEmitTypedef(in SOMTTypedefEntryC td); | ||
- | </ | ||
- | |||
- | === somtEmitTypedefEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitTypedefEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitStructProlog method === | ||
- | |||
- | < | ||
- | void somtEmitStructProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitStruct method === | ||
- | |||
- | < | ||
- | void somtEmitStruct(in SOMTStructEntryC struc); | ||
- | </ | ||
- | |||
- | === somtEmitStructEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitStructEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitUnionProlog method === | ||
- | |||
- | < | ||
- | void somtEmitUnionProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitUnion method === | ||
- | |||
- | < | ||
- | void somtEmitUnion(in SOMTUnionEntryC un); | ||
- | </ | ||
- | |||
- | === somtEmitUnionEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitUnionEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitEnumProlog method === | ||
- | |||
- | < | ||
- | void somtEmitEnumProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitEnum method === | ||
- | |||
- | < | ||
- | void somtEmitEnum(in SOMTEnumEntryC en); | ||
- | </ | ||
- | |||
- | === somtEmitEnumEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitEnumEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitInterfaceProlog method === | ||
- | |||
- | < | ||
- | void somtEmitInterfaceProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitInterface method === | ||
- | |||
- | < | ||
- | void somtEmitInterface(in SOMTClassEntryC intfc); | ||
- | </ | ||
- | |||
- | === somtEmitInterfaceEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitInterfaceEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitModuleProlog method === | ||
- | |||
- | < | ||
- | void somtEmitModuleProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitModule method === | ||
- | |||
- | < | ||
- | void somtEmitModule(in SOMTModuleEntryC mod); | ||
- | </ | ||
- | |||
- | === somtEmitModuleEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitModuleEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitMethodsProlog method === | ||
- | |||
- | < | ||
- | void somtEmitMethodsProlog(); | ||
- | </ | ||
- | |||
- | === somtEmitMethods method === | ||
- | |||
- | < | ||
- | void somtEmitMethods(in SOMTMethodEntryC method); | ||
- | </ | ||
- | |||
- | === somtEmitMethodsEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitMethodsEpilog(); | ||
- | </ | ||
- | |||
- | === somtEmitMethod method === | ||
- | |||
- | < | ||
- | void somtEmitMethod(in SOMTMethodEntryC entry); | ||
- | </ | ||
- | |||
- | === somtEmitEpilog method === | ||
- | |||
- | < | ||
- | void somtEmitEpilog(); | ||
- | </ | ||
- | |||
- | === somtScanBases method === | ||
- | |||
- | < | ||
- | boolean somtScanBases(in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtScanBaseIncludes method === | ||
- | |||
- | < | ||
- | boolean somtScanBaseIncludes(in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtCheckVisibility method === | ||
- | |||
- | < | ||
- | boolean somtCheckVisibility(in SOMTMethodEntryC entry); | ||
- | </ | ||
- | |||
- | Return 1 (true) if < | ||
- | |||
- | The default rule for visibility is: | ||
- | * only private methods are visible in private target files, | ||
- | * only public methods are visibile in public target files, | ||
- | * all methods are visibile in implementation or < | ||
- | |||
- | === somtNew method === | ||
- | |||
- | < | ||
- | boolean somtNew(in SOMTMethodEntryC entry); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if < | ||
- | |||
- | === somtImplemented method === | ||
- | |||
- | < | ||
- | boolean somtImplemented(in SOMTMethodEntryC entry); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if < | ||
- | |||
- | === somtOverridden method === | ||
- | |||
- | < | ||
- | boolean somtOverridden(in SOMTMethodEntryC entry); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if < | ||
- | |||
- | === somtInherited method === | ||
- | |||
- | < | ||
- | boolean somtInherited(in SOMTMethodEntryC entry); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if < | ||
- | |||
- | === somtAllVisible method === | ||
- | |||
- | < | ||
- | boolean somtAllVisible(in SOMTMethodEntryC entry); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if < | ||
- | |||
- | === somtAll method === | ||
- | |||
- | < | ||
- | boolean somtAll(in SOMTMethodEntryC entry); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if < | ||
- | |||
- | === somtNewNoProc method === | ||
- | |||
- | < | ||
- | boolean somtNewNoProc(in SOMTEntryC entry); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if somtNew does and the method IS NOT a direct call Procedure. | ||
- | |||
- | === somtPrivOrPub method === | ||
- | |||
- | < | ||
- | boolean somtPrivOrPub(in SOMTEntryC entry); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if entry is Private or Public. | ||
- | |||
- | === somtNewProc method === | ||
- | |||
- | < | ||
- | boolean somtNewProc(in SOMTEntryC entry); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if somtNew does and the method IS a direct call Procedure. | ||
- | |||
- | === somtLink method === | ||
- | |||
- | < | ||
- | boolean somtLink(in SOMTEntryC entry); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if " | ||
- | |||
- | === somtVA method === | ||
- | |||
- | < | ||
- | boolean somtVA(in SOMTEntryC entry); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if entry is a VarArgs method. | ||
- | |||
- | === somtScanMethods method === | ||
- | |||
- | < | ||
- | boolean somtScanMethods(in string filter, in string prolog, in string each, in string epilog, in boolean forceProlog); | ||
- | </ | ||
- | | ||
- | Will only call < | ||
- | |||
- | === somtScanConstants method === | ||
- | |||
- | < | ||
- | boolean somtScanConstants(in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtScanTypedefs method === | ||
- | |||
- | < | ||
- | boolean somtScanTypedefs(in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtScanStructs method == | ||
- | |||
- | < | ||
- | boolean somtScanStructs(in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtScanUnions method === | ||
- | |||
- | < | ||
- | boolean somtScanUnions(in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtScanEnums method === | ||
- | |||
- | < | ||
- | boolean somtScanEnums(in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtScanData method === | ||
- | |||
- | < | ||
- | boolean somtScanData(in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtScanAttributes method === | ||
- | |||
- | < | ||
- | boolean somtScanAttributes(in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtScanInterfaces method === | ||
- | |||
- | < | ||
- | boolean somtScanInterfaces(in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtScanModules method === | ||
- | |||
- | < | ||
- | boolean somtScanModules(in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtScanPassthru method === | ||
- | |||
- | < | ||
- | boolean somtScanPassthru(in boolean before, in string prolog, in string each, in string epilog); | ||
- | </ | ||
- | |||
- | === somtEmitFullPassthru method === | ||
- | |||
- | < | ||
- | void somtEmitFullPassthru(in boolean before, in string language); | ||
- | </ | ||
- | |||
- | Emits each passthru section defined for the language and targetType, and the result of the somtIsBeforePassthru method is equal to the before parameter. | ||
- | |||
- | === somtScanDataF method === | ||
- | |||
- | < | ||
- | boolean somtScanDataF(in string filter, in string prolog, in string each, in string epilog, in boolean forceProlog); | ||
- | </ | ||
- | | ||
- | This method is like somtScanData but it also provides a paramater for a filter method. | ||
- | |||
- | === somtScanBasesF method === | ||
- | |||
- | < | ||
- | boolean somtScanBasesF(in string filter, in string prolog, in string each, in string epilog, in boolean forceProlog); | ||
- | </ | ||
- | | ||
- | This method is like somtScanBases but it also provides a paramater for a filter method. | ||
- | |||
- | === somtGetGlobalModifierValue method === | ||
- | |||
- | < | ||
- | string somtGetGlobalModifierValue(in string modifierName); | ||
- | </ | ||
- | |||
- | Returns the value of the specified global modifier. | ||
- | |||
- | Global modifiers are specified when the SOM Compiler is invoked, via the " | ||
- | |||
- | sc -m" | ||
- | |||
- | specifies to the SOM Compiler and the emitters being run that the global modifier " | ||
- | |||
- | Values of global modifiers are transient; they last only for the duration of the compile for which they were specified. | ||
- | |||
- | If a modifier is specified in the " | ||
- | |||
- | sc -mfoo file.idl | ||
- | | ||
- | then the result of this method will be non-NULL. | ||
- | |||
- | If no such modifier is specified, then the result is NULL. | ||
- | |||
- | Older SOM compiler version uses " | ||
- | |||
- | === somtGetFirstGlobalDefinition method === | ||
- | |||
- | < | ||
- | SOMTEntryC somtGetFirstGlobalDefinition(); | ||
- | </ | ||
- | |||
- | Returns the first type or constant definition that is not associated with any interface or module. | ||
- | |||
- | These global definitions must be surrounded by the somemittypes pragmas for them to be visible via this method. | ||
- | E.g., | ||
- | |||
- | <code c> | ||
- | #pragma somemittypes on | ||
- | .... | ||
- | #pragma someemittypes off | ||
- | </ | ||
- | |||
- | The list of global definitions returned by this method and the somtGetNextGlobalDefinition method may include entries for forward declarations as well as typedefs and constants. | ||
- | |||
- | Global structs and unions are also included in the list. | ||
- | |||
- | === somtGetNextGlobalDefinition method === | ||
- | |||
- | < | ||
- | SOMTEntryC somtGetNextGlobalDefinition(); | ||
- | </ | ||
- | |||
- | Returns the next type or constant definition that is not associated with any interface or module, relative to a previous call to somtGetFirstGlobalDefinition or somtGetNextGlobalDefinition. | ||
- | |||
- | |||
- | ==== SOMTEntryC Class ==== | ||
- | |||
- | === somtEntryName attribute === | ||
- | |||
- | < | ||
- | attribute string somtEntryName; | ||
- | </ | ||
- | |||
- | The name associated with this entry. | ||
- | |||
- | === somtElementType attribute === | ||
- | |||
- | < | ||
- | attribute SOMTTypes somtElementType; | ||
- | </ | ||
- | |||
- | Returns the type of this entry. This is not datatype, but entry type (method, class, | ||
- | |||
- | === somtElementTypeName attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtElementTypeName; | ||
- | </ | ||
- | |||
- | String version of somtElementType. | ||
- | |||
- | === somtEntryComment attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtEntryComment; | ||
- | </ | ||
- | |||
- | Returns the comment associated with this entry, or NULL is this entry has no associated comment. | ||
- | |||
- | === somtSourceLineNumber attribute === | ||
- | |||
- | < | ||
- | readonly attribute unsigned long somtSourceLineNumber; | ||
- | </ | ||
- | |||
- | Returns the line number in the source file where this entry' | ||
- | |||
- | === somtTypeCode attribute === | ||
- | |||
- | < | ||
- | readonly attribute TypeCode somtTypeCode; | ||
- | </ | ||
- | |||
- | The typecode, if appropriate, | ||
- | |||
- | === somtIsReference attribute === | ||
- | |||
- | < | ||
- | readonly attribute boolean somtIsReference; | ||
- | </ | ||
- | |||
- | Whether the entry is just a reference to the real type (TRUE) rather than a declaration of it (FALSE). | ||
- | |||
- | === somtIDLScopedName attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtIDLScopedName; | ||
- | </ | ||
- | |||
- | The IDL scoped name of the entry (using double colon as delimiter). | ||
- | |||
- | === somtCScopedName attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtCScopedName; | ||
- | </ | ||
- | |||
- | The C scoped name of the entry (using underscore as delimiter). | ||
- | |||
- | === somtGetModifierValue method === | ||
- | |||
- | < | ||
- | string somtGetModifierValue(in string modifierName); | ||
- | </ | ||
- | |||
- | Returns the value of the named modifier if this entry has the named modifier and NULL otherwise. Note: if the modifier is present but does not have a value then a value of <' | ||
- | |||
- | === somtGetFirstModifier method === | ||
- | |||
- | < | ||
- | boolean somtGetFirstModifier(inout string modifierName, | ||
- | </ | ||
- | |||
- | Returns the first modifier associated with this entry. | ||
- | |||
- | === somtGetNextModifier method === | ||
- | |||
- | < | ||
- | boolean somtGetNextModifier(inout string modifierName, | ||
- | </ | ||
- | | ||
- | Returns the next modifier (with respect to the last call to < | ||
- | |||
- | |||
- | === somtFormatModifier method === | ||
- | |||
- | < | ||
- | long somtFormatModifier(in string buffer, in string name, in string value); | ||
- | </ | ||
- | | ||
- | Formats the indicated name/value pair into buffer. | ||
- | |||
- | Note: value may be null | ||
- | |||
- | You will probably never call this method, it is provided so that you can override it to control the format returned in < | ||
- | |||
- | === somtGetModifierList method === | ||
- | |||
- | < | ||
- | long somtGetModifierList(in string buffer); | ||
- | </ | ||
- | |||
- | The modifiers for this entry are placed in < | ||
- | |||
- | === somtSetSymbolsOnEntry method === | ||
- | |||
- | < | ||
- | long somtSetSymbolsOnEntry(in SOMTEmitC emitter, in string prefix); | ||
- | </ | ||
- | | ||
- | Places a number of symbol/ | ||
- | |||
- | === somtSetEntryStruct method === | ||
- | |||
- | < | ||
- | void somtSetEntryStruct(inout Entry es); | ||
- | </ | ||
- | | ||
- | Sets the entry struct data member. | ||
- | |||
- | Note, when overridding this method, it is important to call the parent version of the method first and then do your processing. | ||
- | |||
- | ==== SOMTEnumEntryC Class ==== | ||
- | |||
- | === somtGetFirstEnumName method === | ||
- | |||
- | < | ||
- | SOMTEnumNameEntryC somtGetFirstEnumName(); | ||
- | </ | ||
- | |||
- | === somtGetNextEnumName method === | ||
- | |||
- | < | ||
- | SOMTEnumNameEntryC somtGetNextEnumName(); | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ==== SOMTEnumNameEntryC Class ==== | ||
- | |||
- | === somtEnumPtr attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTEnumEntryC somtEnumPtr; | ||
- | </ | ||
- | |||
- | A pointer to the enumerator. | ||
- | |||
- | === somtEnumVal attribute === | ||
- | |||
- | < | ||
- | readonly attribute unsigned long somtEnumVal; | ||
- | </ | ||
- | |||
- | The value of the enumeration. | ||
- | |||
- | ==== SOMTMetaClassEntryC Class ==== | ||
- | |||
- | === somtMetaFile attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtMetaFile; | ||
- | </ | ||
- | |||
- | Returns the name of the file containing the definition of the meta class named in this entry. | ||
- | |||
- | === somtMetaClassDef attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTClassEntryC somtMetaClassDef; | ||
- | </ | ||
- | |||
- | Returns the class definition entry for the meta class named in this entry. | ||
- | |||
- | ==== SOMTMethodEntryC Class ==== | ||
- | |||
- | === somtIsVarargs attribute === | ||
- | |||
- | < | ||
- | readonly attribute boolean somtIsVarargs; | ||
- | </ | ||
- | |||
- | Returns 1 (true) if this method definition has a variable length parameter list. | ||
- | |||
- | === somtOriginalMethod attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTMethodEntryC somtOriginalMethod; | ||
- | </ | ||
- | |||
- | If this is an override method definition (< | ||
- | |||
- | === somtOriginalClass attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTClassEntryC somtOriginalClass; | ||
- | </ | ||
- | |||
- | If this is an override method definition (< | ||
- | |||
- | === somtMethodGroup attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTEntryC somtMethodGroup; | ||
- | </ | ||
- | |||
- | The group this method is defined in within a class definition. | ||
- | |||
- | === somtIsPrivateMethod attribute === | ||
- | |||
- | < | ||
- | readonly attribute boolean somtIsPrivateMethod; | ||
- | </ | ||
- | |||
- | Whether or not the method is private. | ||
- | |||
- | === somtIsOneway attribute === | ||
- | |||
- | < | ||
- | readonly attribute boolean somtIsOneway; | ||
- | </ | ||
- | |||
- | Whether or not the method is oneway. | ||
- | |||
- | === somtArgCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute short somtArgCount; | ||
- | </ | ||
- | |||
- | The number of arguments for the method. | ||
- | |||
- | === somtGetFirstParameter method === | ||
- | |||
- | < | ||
- | SOMTParameterEntryC somtGetFirstParameter(); | ||
- | </ | ||
- | | ||
- | Returns the first formal parameter entry for this method if it has one and NULL otherwise. | ||
- | |||
- | === somtGetNextParameter method === | ||
- | |||
- | < | ||
- | SOMTParameterEntryC somtGetNextParameter(); | ||
- | </ | ||
- | | ||
- | Returns the next formal parameter entry for this method if it has one and NULL otherwise. | ||
- | |||
- | |||
- | === somtGetIDLParamList method === | ||
- | |||
- | < | ||
- | string somtGetIDLParamList(in string buffer); | ||
- | </ | ||
- | |||
- | Returns the formal parameter list (in IDL syntax) for this method. The parameter list is built in < | ||
- | |||
- | Parameters are delimited with newlines. | ||
- | |||
- | The method receiver and any implicit method arguments are NOT included. | ||
- | |||
- | === somtGetShortCParamList method === | ||
- | |||
- | < | ||
- | string somtGetShortCParamList(in string buffer, in string selfParm, in string varargsParm); | ||
- | </ | ||
- | |||
- | Returns the formal parameter list (in ANSI C function prototype form, with types) for this method. The parameter list is built in < | ||
- | |||
- | Parameters are delimited with newlines. | ||
- | |||
- | If this method takes a variable number of arguments then the final parameter substring is replaced by < | ||
- | |||
- | If < | ||
- | |||
- | The method receiver and any implicit method arguments are NOT included. | ||
- | |||
- | The types of the method parameters are given in C form (with pointer stars, where needed) rather than in the IDL form. | ||
- | |||
- | === somtGetFullCParamList method === | ||
- | |||
- | < | ||
- | string somtGetFullCParamList(in string buffer, in string varargsParm); | ||
- | </ | ||
- | |||
- | Same as somtGetShortCParamList except that the method receiver and any implicit method arguments (Environment and Context) are included. The types of the method parameters are given in C form (with pointer stars, where needed) rather than in the IDL form. | ||
- | |||
- | |||
- | === somtGetShortParamNameList mwthod === | ||
- | |||
- | < | ||
- | string somtGetShortParamNameList(in string buffer, in string selfParm, in string varargsParm); | ||
- | </ | ||
- | | ||
- | Returns the parameter list for this method in call form (without types). The argument list is built in < | ||
- | |||
- | If this method takes a variable number of arguments then the final parameter is replaced by < | ||
- | |||
- | If < | ||
- | |||
- | The method receiver and any implicit method arguments are NOT included. | ||
- | |||
- | === somtGetFullParamNameList method === | ||
- | |||
- | < | ||
- | string somtGetFullParamNameList(in string buffer, in string varargsParm); | ||
- | </ | ||
- | |||
- | Same as somtGetParamNameList except that the method receiver and any implicit method arguments (Environment and Context) are included. | ||
- | |||
- | === somtGetNthParameter mwthod === | ||
- | |||
- | < | ||
- | SOMTParameterEntryC somtGetNthParameter(in short n); | ||
- | </ | ||
- | |||
- | Returns the object representing the nth explicit method parameter. | ||
- | |||
- | === somtGetFirstException method === | ||
- | |||
- | < | ||
- | SOMTStructEntryC somtGetFirstException(); | ||
- | </ | ||
- | |||
- | The first exception this method raises. | ||
- | |||
- | === somtGetNextException method === | ||
- | |||
- | < | ||
- | SOMTStructEntryC somtGetNextException(); | ||
- | </ | ||
- | |||
- | The next exception this method raises, relative to the previous call to this method or to somtGetFirstException. | ||
- | |||
- | === somtContextArray attribute === | ||
- | |||
- | < | ||
- | readonly attribute string *somtContextArray; | ||
- | </ | ||
- | |||
- | An array of the context string-literals for the method. | ||
- | |||
- | === somtCReturnType attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtCReturnType; | ||
- | </ | ||
- | |||
- | The C datatype the method returns. This may not correspond to the IDL data type (in particular, pointer stars may be added). | ||
- | |||
- | ==== SOMTModuleEntryC Class ==== | ||
- | |||
- | === somtOuterModule attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTModuleEntryC somtOuterModule; | ||
- | </ | ||
- | |||
- | The module enclosing this module, or NULL if there is none. | ||
- | |||
- | === somtModuleFile attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtModuleFile; | ||
- | </ | ||
- | |||
- | The name of the file in which the module appears. | ||
- | |||
- | === somtGetFirstModuleStruct method === | ||
- | |||
- | < | ||
- | SOMTStructEntryC somtGetFirstModuleStruct(); | ||
- | </ | ||
- | |||
- | === somtGetNextModuleStruct method === | ||
- | |||
- | < | ||
- | SOMTStructEntryC somtGetNextModuleStruct(); | ||
- | </ | ||
- | |||
- | === somtGetFirstModuleTypedef method === | ||
- | |||
- | < | ||
- | SOMTTypedefEntryC somtGetFirstModuleTypedef(); | ||
- | </ | ||
- | |||
- | === somtGetNextModuleTypedef method === | ||
- | |||
- | < | ||
- | SOMTTypedefEntryC somtGetNextModuleTypedef(); | ||
- | </ | ||
- | |||
- | === somtGetFirstModuleUnion method === | ||
- | |||
- | < | ||
- | SOMTUnionEntryC somtGetFirstModuleUnion(); | ||
- | </ | ||
- | |||
- | === somtGetNextModuleUnion method === | ||
- | |||
- | < | ||
- | SOMTUnionEntryC somtGetNextModuleUnion(); | ||
- | </ | ||
- | |||
- | === somtGetFirstModuleEnum method === | ||
- | |||
- | < | ||
- | SOMTEnumEntryC somtGetFirstModuleEnum(); | ||
- | </ | ||
- | |||
- | === somtGetNextModuleEnum method === | ||
- | |||
- | < | ||
- | SOMTEnumEntryC somtGetNextModuleEnum(); | ||
- | </ | ||
- | |||
- | === somtGetFirstModuleConstant mwthod === | ||
- | |||
- | < | ||
- | SOMTConstEntryC somtGetFirstModuleConstant(); | ||
- | </ | ||
- | |||
- | === somtGetNextModuleConstant mwthod === | ||
- | |||
- | < | ||
- | SOMTConstEntryC somtGetNextModuleConstant(); | ||
- | </ | ||
- | |||
- | === somtGetFirstModuleSequence method === | ||
- | |||
- | < | ||
- | SOMTSequenceEntryC somtGetFirstModuleSequence(); | ||
- | </ | ||
- | |||
- | === somtGetNextModuleSequence method === | ||
- | |||
- | < | ||
- | SOMTSequenceEntryC somtGetNextModuleSequence(); | ||
- | </ | ||
- | |||
- | === somtGetFirstInterface method === | ||
- | |||
- | < | ||
- | SOMTClassEntryC somtGetFirstInterface(); | ||
- | </ | ||
- | |||
- | === somtGetNextInterface method === | ||
- | |||
- | < | ||
- | SOMTClassEntryC somtGetNextInterface(); | ||
- | </ | ||
- | |||
- | === somtGetFirstModule method === | ||
- | |||
- | < | ||
- | SOMTModuleEntryC somtGetFirstModule(); | ||
- | </ | ||
- | |||
- | === somtGetNextModule method === | ||
- | |||
- | < | ||
- | SOMTModuleEntryC somtGetNextModule(); | ||
- | </ | ||
- | |||
- | === somtGetFirstModuleDef method === | ||
- | |||
- | < | ||
- | SOMTEntryC somtGetFirstModuleDef(); | ||
- | </ | ||
- | |||
- | === somtGetNextModuleDef method === | ||
- | |||
- | < | ||
- | SOMTEntryC somtGetNextModuleDef(); | ||
- | </ | ||
- | |||
- | ==== SOMTParameterEntryC Class ==== | ||
- | |||
- | === somtParameterDirection attribute === | ||
- | |||
- | < | ||
- | readonly attribute somtParameterDirectionT somtParameterDirection; | ||
- | </ | ||
- | |||
- | The direction for this parameter. (somtInE, somtOutE, or somtInOutE). | ||
- | |||
- | === somtIDLParameterDeclaration attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtIDLParameterDeclaration; | ||
- | </ | ||
- | |||
- | The IDL declaration of the parameter, including the type and name. | ||
- | |||
- | === somtCParameterDeclaration attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtCParameterDeclaration; | ||
- | </ | ||
- | |||
- | The declaration for the parameter within a C method procedure prototype. It includes the parameter' | ||
- | |||
- | === somtPascalParameterDeclaration attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtPascalParameterDeclaration; | ||
- | </ | ||
- | |||
- | The declaration for the parameter within a Pascal method procedure prototype. It includes the parameter' | ||
- | |||
- | ==== SOMTPassthruEntryC Class ==== | ||
- | |||
- | === somtPassthruBody attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtPassthruBody; | ||
- | </ | ||
- | |||
- | The source content text of this passthru entry without any modification. Newlines that were present in the source will still be present. | ||
- | |||
- | === somtPassthruLanguage attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtPassthruLanguage; | ||
- | </ | ||
- | |||
- | Returns the name of the language for which this passthru entry is intended. Language names are always all upper case. | ||
- | |||
- | === somtPassthruTarget attribute === | ||
- | |||
- | < | ||
- | readonly attribute string somtPassthruTarget; | ||
- | </ | ||
- | |||
- | Returns the target for this passthru entry. | ||
- | |||
- | === somtIsBeforePassthru method === | ||
- | |||
- | < | ||
- | boolean somtIsBeforePassthru(); | ||
- | </ | ||
- | |||
- | Returns 1 (true) if this passthru entry is to be put at the beginning of the file or 0 (false) if this passthru entry is to go later in the file. | ||
- | |||
- | ==== SOMTSequenceEntryC Class ==== | ||
- | |||
- | === somtSeqLength attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtSeqLength; | ||
- | </ | ||
- | |||
- | The length of the sequence. | ||
- | |||
- | |||
- | === somtSeqType attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTEntryC somtSeqType; | ||
- | </ | ||
- | |||
- | The type of the sequence. | ||
- | |||
- | ==== SOMTStringEntryC Class ==== | ||
- | |||
- | === somtStringLength attribute === | ||
- | |||
- | < | ||
- | readonly attribute long somtStringLength; | ||
- | </ | ||
- | |||
- | The length of the string. | ||
- | |||
- | ==== SOMTStructEntryC Class ==== | ||
- | |||
- | |||
- | === somtGetFirstMember Method === | ||
- | |||
- | < | ||
- | SOMTTypedefEntryC somtGetFirstMember(); | ||
- | </ | ||
- | |||
- | The first member of the struct. | ||
- | |||
- | === somtGetNextMember Method === | ||
- | |||
- | < | ||
- | SOMTTypedefEntryC somtGetNextMember(); | ||
- | </ | ||
- | |||
- | The next member of the struct, relative to the previous call to this method or somtGetFirstMember. | ||
- | |||
- | === somtStructClass method === | ||
- | |||
- | < | ||
- | readonly attribute SOMTClassEntryC somtStructClass; | ||
- | </ | ||
- | |||
- | The class in which the structure was defined. | ||
- | |||
- | === somtIsException method === | ||
- | |||
- | < | ||
- | readonly attribute boolean somtIsException; | ||
- | </ | ||
- | |||
- | Whether the structure is really an exception. | ||
- | |||
- | ==== SOMTTemplateOutputC Class ==== | ||
- | |||
- | |||
- | === somtAddSectionDefinitions Method === | ||
- | |||
- | < | ||
- | void somtAddSectionDefinitions(in string defString); | ||
- | </ | ||
- | |||
- | Add section definitions from < | ||
- | |||
- | === somtCommentStyle attribute === | ||
- | |||
- | < | ||
- | attribute somtCommentStyleT somtCommentStyle; | ||
- | </ | ||
- | |||
- | Set style of output comment. Supported styles are: | ||
- | |||
- | * somtDashesE: | ||
- | * somtCPPE: C++ style, %%"//" | ||
- | * somtCSimpleE: | ||
- | * somtCBlockE: | ||
- | * somtPSimpleE: | ||
- | * somtPBlockE: | ||
- | * somtPBorlandE: | ||
- | |||
- | === somtLineLength attribute === | ||
- | |||
- | < | ||
- | attribute long somtLineLength; | ||
- | </ | ||
- | |||
- | Line length limit. At least on list item will be output. | ||
- | |||
- | === somtCommentNewline attribute === | ||
- | |||
- | < | ||
- | attribute boolean somtCommentNewline; | ||
- | </ | ||
- | |||
- | Output comment block from new line flag. | ||
- | === somtCheckSymbol Method === | ||
- | |||
- | < | ||
- | boolean somtCheckSymbol(in string name); | ||
- | </ | ||
- | |||
- | Return TRUE id symbol < | ||
- | |||
- | === somtExpandSymbol Method === | ||
- | |||
- | < | ||
- | string somtExpandSymbol(in string s, in string buf); | ||
- | </ | ||
- | |||
- | === somtGetSymbol Method === | ||
- | |||
- | < | ||
- | string somtGetSymbol(in string name); | ||
- | </ | ||
- | |||
- | Return symbol value for < | ||
- | |||
- | === somto Method === | ||
- | |||
- | < | ||
- | void somto(in string tmplt); | ||
- | </ | ||
- | |||
- | Outputs a template, < | ||
- | |||
- | Substitutable items in the template are bracketed with angle brackets. (Backslash can be used to escape an angle bracket.) | ||
- | |||
- | Simple substitutions just replace a symbol with its value. If the symbol has no value in this template object then the symbol is replaced error string but no error is raised. | ||
- | |||
- | List substitution assumes that the symbol has a value in output template list form. This is a newline separated string of values. The list substitution specification consists of four parts, a prefix, a symbol, a separator, and a list indicator. prefixes and separators can only be composed of blanks, comma, colons, and semi-colons. | ||
- | Comment substitution assumes that the symbol has a value in output template list form. A comment specification consists of a comment indicator followed by a symbol name. The comment indicator is " | ||
- | Tab substitution is specified by <@dd> where " | ||
- | |||
- | Conditional substitution is specified by putting a question mark, "?", | ||
- | |||
- | Note: Due design error in IBM SOM 3.0 this method can't be fully replaced. You can do some preprocessing of < | ||
- | |||
- | === somtOutputComment Method === | ||
- | |||
- | < | ||
- | void somtOutputComment(in string comment); | ||
- | </ | ||
- | |||
- | Outputs comment using comment style settings. | ||
- | |||
- | Note: Due design error in IBM SOM 3.0 this method can't be fully replaced. You can do some preprocessing of < | ||
- | |||
- | === somtOutputSection Method === | ||
- | |||
- | < | ||
- | void somtOutputSection(in string sectionName); | ||
- | </ | ||
- | |||
- | Same as somto method, but template read from Symbol table with key equal to sectionName. Uses somto method for actual output. | ||
- | |||
- | === somtReadSectionDefinitions Method === | ||
- | |||
- | < | ||
- | void somtReadSectionDefinitions(inout FILE fp); | ||
- | </ | ||
- | |||
- | This method reads sections from template file and stores them in Symbol table. fp is a value returned by somtOpenSymbolsFile method of SOMTEmitC class. | ||
- | |||
- | Note: Due design error in IBM SOM 3.0 this method can't be replaced. This is due unknown structure of FILE type. This means you can't read file using standard C file functions because FILE structure is a compiler depended. But you don't know which compiler was used for. Header files contains compiler-independed file functions (somtok*), but no any of this functions, except two ones, exported in SOM DLLs. So, if you want to fully replace this method then you need also replace lot of other methods and functions of Emitter Framework and SOM Compiler library. For IBM SOM 2.1 all seems to be ok, but you must use somtok* functions from SOMC.DLL, not standard C runtime for file operations. | ||
- | |||
- | === somtSetOutputFile Method === | ||
- | |||
- | < | ||
- | void somtSetOutputFile(inout FILE fp); | ||
- | </ | ||
- | |||
- | Pass FILE structure to object to use for file I/O. fp is a value returned by somtOpenEmitFile or somtOpenEmitFileSL. | ||
- | |||
- | Note: FILE structure must be same as in other I/O methods and functions. | ||
- | |||
- | === somtSetSymbol Method === | ||
- | |||
- | < | ||
- | void somtSetSymbol(in string name, in string value); | ||
- | </ | ||
- | |||
- | Set symbol name in Symbol table to value. name and value must be allocated using SOMMaloc function. It will be deallocated using SOMFree on object destroying. | ||
- | |||
- | === somtSetSymbolCopyBoth Method === | ||
- | |||
- | < | ||
- | void somtSetSymbolCopyBoth(in string name, in string value); | ||
- | </ | ||
- | |||
- | Same as somtSetSymbol but name and value will be copied to internally allocated buffer. | ||
- | |||
- | === somtSetSymbolCopyName Method === | ||
- | |||
- | < | ||
- | void somtSetSymbolCopyName(in string name, in string value); | ||
- | </ | ||
- | |||
- | Same as somtSetSymbol but name will be copied to internally allocated buffer. | ||
- | |||
- | === somtSetSymbolCopyValue Method === | ||
- | |||
- | < | ||
- | void somtSetSymbolCopyValue(in string name, in string value); | ||
- | </ | ||
- | |||
- | Same as somtSetSymbol but value will be copied to internally allocated buffer. | ||
- | |||
- | ==== SOMTTypedefEntryC Class ==== | ||
- | |||
- | === somtTypedefType attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTEntryC somtTypedefType; | ||
- | </ | ||
- | |||
- | The type of the typedef. This does not include pointer stars or array declarators. | ||
- | |||
- | === somtGetFirstDeclarator method === | ||
- | |||
- | < | ||
- | SOMTCommonEntryC somtGetFirstDeclarator(); | ||
- | </ | ||
- | |||
- | The first declarator for this typedef. Declarators of struct members will be instances of SOMTDataEntryC, | ||
- | |||
- | === somtGetNextDeclarator method === | ||
- | |||
- | < | ||
- | SOMTCommonEntryC somtGetNextDeclarator(); | ||
- | </ | ||
- | |||
- | The next declarator for this typedef, relative to the previous call to this method or somtGetFirstDeclarator. Declarators of struct members will be instances of SOMTDataEntryC, | ||
- | |||
- | ==== SOMTUnionEntryC Class ==== | ||
- | |||
- | === somtSwitchType attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTEntryC somtSwitchType; | ||
- | </ | ||
- | |||
- | The switch type of the union. | ||
- | |||
- | === somtGetFirstCaseEntry method === | ||
- | |||
- | < | ||
- | somtCaseEntry *somtGetFirstCaseEntry(); | ||
- | </ | ||
- | |||
- | The first case for the union. | ||
- | |||
- | === somtGetNextCaseEntry method === | ||
- | |||
- | < | ||
- | somtCaseEntry *somtGetNextCaseEntry(); | ||
- | </ | ||
- | |||
- | The next case for the union, relative to the previous call to this method or to somtGetFirstCaseEntry. | ||
- | |||
- | |||
- | ==== SOMTUserDefinedTypeEntryC Class ==== | ||
- | |||
- | |||
- | === somtOriginalTypedef attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTTypedefEntryC somtOriginalTypedef; | ||
- | </ | ||
- | |||
- | The typedef that defined the user-defined type. | ||
- | |||
- | === somtBaseTypeObj attribute === | ||
- | |||
- | < | ||
- | readonly attribute SOMTEntryC somtBaseTypeObj; | ||
- | </ | ||
- | |||
- | The object representing the base type (eg. short, float, unsigned long) of a user-defined type, skipping over any intermediate user-defined types. | ||
- | |||
- | |||
- | ==== SOMStringTableC Class ==== | ||
- | |||
- | < | ||
- | interface SOMStringTableC : SOMObject | ||
- | </ | ||
- | |||
- | Объектами класса SOMStringTableC являются символьные таблицы, | ||
- | |||
- | === somstTargetCapacity attribute === | ||
- | |||
- | < | ||
- | attribute unsigned long somstTargetCapacity; | ||
- | </ | ||
- | |||
- | Емкость ассоциативного массива. Значение не влияет на работу и сохранено для совместимости. В IBM SOM данный атрибут определял размер хэш-таблицы. Данный атрибут должен выставляться до вызова любого из методов данного класса | ||
- | |||
- | === somstAssociationsCount attribute === | ||
- | |||
- | < | ||
- | readonly attribute unsigned long somstAssociationsCount; | ||
- | </ | ||
- | |||
- | Текущее число ассоциаций в массиве | ||
- | |||
- | === somstAssociate method === | ||
- | |||
- | < | ||
- | short somstAssociate(in string key, in string value); | ||
- | </ | ||
- | |||
- | Устанавливает связь <key> и < | ||
- | |||
- | === somstAssociateCopyKey method === | ||
- | |||
- | < | ||
- | short somstAssociateCopyKey(in string key, in string value); | ||
- | </ | ||
- | |||
- | То же, что и < | ||
- | |||
- | === somstAssociateCopyValue method === | ||
- | |||
- | < | ||
- | short somstAssociateCopyValue(in string key, in string value); | ||
- | </ | ||
- | |||
- | То же, что и < | ||
- | |||
- | === somstAssociateCopyBoth method === | ||
- | |||
- | < | ||
- | short somstAssociateCopyBoth(in string key, in string value); | ||
- | </ | ||
- | |||
- | То же, что и < | ||
- | |||
- | === somstGetAssociation method === | ||
- | |||
- | < | ||
- | string somstGetAssociation(in string key); | ||
- | </ | ||
- | |||
- | Возвращается строка, | ||
- | |||
- | === somstClearAssociation method === | ||
- | |||
- | < | ||
- | boolean somstClearAssociation(in string key); | ||
- | </ | ||
- | |||
- | The association for < | ||
- | |||
- | === somstGetIthKey method === | ||
- | |||
- | < | ||
- | string somstGetIthKey(in unsigned long i); | ||
- | </ | ||
- | |||
- | Возвращает ключевую часть < | ||
- | |||
- | === somstGetIthValue method === | ||
- | |||
- | < | ||
- | string somstGetIthValue(in unsigned long i); | ||
- | </ | ||
- | |||
- | Возвращает значимую часть < | ||
- | |||
- | ==== somtStrDup function ==== | ||
- | |||
- | < | ||
- | SOMEXTERN char * SOMLINK somtStrDup(char *str); | ||
- | </ | ||
- | |||
- | Allocate memory and duplicate string str | ||
- | |||
- | ==== somtEntryTypeName function ==== | ||
- | |||
- | < | ||
- | SOMEXTERN char * SOMLINK somtEntryTypeName(SOMTTypes type); | ||
- | </ | ||
- | |||
- | Return string representation of type of Entry structure except special case SOMTEmitterBeginE and SOMTEmitterEndE types. | ||
- | |||
- | ==== somtShowEntry function ==== | ||
- | |||
- | < | ||
- | SOMEXTERN void SOMLINK somtShowEntry(Entry * ep); | ||
- | </ | ||
- | |||
- | Output using somPrintf information about Entry structure. | ||
- | |||
- | ==== somtStrCat function ==== | ||
- | |||
- | < | ||
- | SOMEXTERN char * SOMLINK somtStrCat(int count,...); | ||
- | </ | ||
- | |||
- | Concatenate count of strings. | ||
- | |||
- | ==== somtMakeIncludeStr function ==== | ||
- | |||
- | < | ||
- | SOMEXTERN char * SOMLINK somtMakeIncludeStr(boolean local, char *stem, char *suffix); | ||
- | </ | ||
- | |||
- | Produce include string for local (include "" | ||
- | |||
- | ==== somtNewSymbol function ==== | ||
- | |||
- | < | ||
- | SOMEXTERN char * SOMLINK somtNewSymbol(char *prefix, char *stem); | ||
- | </ | ||
- | |||
- | Allocate memory and produce string from prefix and stem. | ||
- | |||
- | ==== somtGetFileStem function ==== | ||
- | |||
- | < | ||
- | SOMEXTERN char * SOMLINK somtGetFileStem(char *fullName); | ||
- | </ | ||
- | |||
- | Allocate memory and return file stem from file name. | ||
- | |||
- | ==== somtGetObjectWrapper function ==== | ||
- | |||
- | < | ||
- | SOMEXTERN SOMTEntryC * SOMLINK somtGetObjectWrapper(Entry * ep); | ||
- | </ | ||
- | |||
- | Return SOMT*EntryC object for ep Entry structure. | ||
- | |||
- | Mapping of Entry types to SOMT*EntryC classes: | ||
- | |||
- | ^ Entry type ^ Emitter Framework Class ^ | ||
- | | SOMTArgumentE | SOMTParameterEntryC | | ||
- | | SOMTAttE | SOMTAttributeEntryC | | ||
- | | SOMTBadEntryE | Fatal error | | ||
- | | SOMTBaseE | SOMTBaseClassEntryC | | ||
- | | SOMTClassE | SOMTClassEntryC | | ||
- | | SOMTConstE | SOMTConstEntryC | | ||
- | | SOMTDataE | SOMTDataEntryC | | ||
- | | SOMTEnumBE | SOMTEnumNameEntryC | | ||
- | | SOMTEnumE | SOMTEnumEntryC | | ||
- | | SOMTEnumPE | SOMTEnumEntryC | | ||
- | | SOMTFloatBE | SOMTEntryC | | ||
- | | SOMTAnyBE | SOMTEntryC | | ||
- | | SOMTGroupE | SOMTEntryC | | ||
- | | SOMTCopyrightE | SOMTEntryC | | ||
- | | SOMTLongBE | SOMTEntryC | | ||
- | | SOMTNegativeBE | SOMTEntryC | | ||
- | | SOMTOctetBE | SOMTEntryC | | ||
- | | SOMTTypeCodeBE | SOMTEntryC | | ||
- | | SOMTBooleanBE | SOMTEntryC | | ||
- | | SOMTCaseEntryE | SOMTEntryC | | ||
- | | SOMTCaseListE | SOMTEntryC | | ||
- | | SOMTCaseSTME | SOMTEntryC | | ||
- | | SOMTCharBE | SOMTEntryC | | ||
- | | SOMTDclListE | SOMTEntryC | | ||
- | | SOMTDefaultE | SOMTEntryC | | ||
- | | SOMTDoubleBE | SOMTEntryC | | ||
- | | SOMTEBaseE | SOMTEntryC | | ||
- | | SOMTEEnumE | SOMTEntryC | | ||
- | | SOMTShortBE | SOMTEntryC | | ||
- | | SOMTStringBE | SOMTEntryC | | ||
- | | SOMTUnsignedLongBE | SOMTEntryC | | ||
- | | SOMTUnsignedShortBE | SOMTEntryC | | ||
- | | SOMTVoidBE | SOMTEntryC | | ||
- | | SOMTVoidPtrBE | SOMTEntryC | | ||
- | | SOMTMetaE | SOMTMetaClassEntryC | | ||
- | | SOMTModuleE | SOMTModuleEntryC | | ||
- | | SOMTNewMethodE | SOMTMethodEntryC | | ||
- | | SOMTOverriddenMethodE | SOMTMethodEntryC | | ||
- | | SOMTOverrideMethodE | SOMTMethodEntryC | | ||
- | | SOMTPassthruE | SOMTPassthruEntryC | | ||
- | | SOMTSequenceE | SOMTSequenceEntryC | | ||
- | | SOMTSequenceTDE | SOMTSequenceEntryC | | ||
- | | SOMTStringE | SOMTStringEntryC | | ||
- | | SOMTStructE | SOMTStructEntryC | | ||
- | | SOMTStructPE | SOMTStructEntryC | | ||
- | | SOMTStructSE | SOMTStructEntryC | | ||
- | | SOMTTyDclE | SOMTTypedefEntryC | | ||
- | | SOMTTypedefE | SOMTTypedefEntryC | | ||
- | | SOMTTypedefBE | SOMTUserDefinedTypeEntryC | | ||
- | | SOMTUnionE | SOMTUnionEntryC | | ||
- | | SOMTUnionPE | SOMTUnionEntryC | | ||
- | | SOMTUnionSE | SOMTUnionEntryC | | ||
- | | SOMTEmitterBeginE | Fatal error | | ||
- | | SOMTEmitterEndE | Fatal error | | ||
- | |||
- | ====== Appendixes ====== | ||
- | |||
- | ===== 1. Appendix 1. SOM ABI ===== | ||
- | |||
- | Due switching from MSVC (IBM SOM 2.1) to VAC (IBM SOM 3.0) some problems was occur: | ||
- | |||
- | First problem is a calling convention. All non SOMLINK calls in IBM SOM 2.1 is a _cdecl calls. But under IBM SOM 3.0 all non SOMLINK calls is a Optlink calls. Read some info here: | ||
- | https:// | ||
- | Goal of somFree SOM Compiler and Emitter Framework is to provide a possibility to use original IBM SOM emitters as from IBM SOM 2.1 as from IBM SOM 3.0. Another goal is a development of somFree emitters, which can be used on both IBM SOM 2.1 and IBM SOM 3.0 compilers.To achieve above goals somFree provides some solutions: | ||
- | 1. Automatic somc.dll calling convention switching. | ||
- | somFree SOMC.DLL provides automatic switching of IBM SOM 2.1 ABI and IBM SOM 3.0 ABI. Switching occurs on somtload call during loading of emitter. For IBM SOM 3.0 all emitter contains entry point emitSL, so, if loading was success, then somFree handles Optlink calling convention for all non SOMLINK calls. If no such entry (found only emit) then IBM SOM 2.1 ABI used. | ||
- | 2. Support both entry points (emitSL and emit) in emitters. | ||
- | somFree emitters automatically switches to IBM SOM 2.1 ABI on emit call and to IBM SOM 3.0 ABI on emitSL call. | ||
- | ====== Список литературы ====== | ||
- | |||
- | |||
- | - Object Management Group, «C Language Mapping Specification 1.0,» [В Интернете]. Available: https:// | ||
- | - IBM, OS/2 2.0 Technical Library. System Object Model Guide and Reference. First Edition., 1991. https:// | ||
- | |||
- | |||
- | |||
- | |||
- | |||