The following figure shows how an IDL file is processed by the SOM compiler:
Environment Variables C Bindings ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ÚÄÄÄÄ¿ ÚÄÄÄÄ¿ ³ ³³ SET SMINCLUDE= ³ ³ ³ ³.IH ³ ³ .H ³ ³ ³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ÚÄÄÄÄÄÄÄÄ¿ ³ ÀÄÄÄÄÙ ÀÄÄÄÄÙ ³ ³ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ÄÄÄÄÄÄÄij ³ ÚÄij ÚÄÄÄÄ¿ ÚÄÄÄÄ¿ ³ ³³ SET SMEMIT= ³ ³ ³ SOM ³ ³ ³ ³ .C ³ ³.PDL³ ³ ³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ÚÄijCompiler³ÄÄÄÄ´ ³ ÀÄÄÄÄÙ ÀÄÄÄÄÙ ³ ³ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ÚÄÄÄÄ¿ ³ ³³ SET SMTMP= ³ ³ ³ ÀÄÄÄÄÄÄÄÄÙ ³ ³ ³.DEF³ ³ ³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ ³ ³ ÀÄÄÄÄÙ ³ ³ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³³ SET SOMIR= ³ ³ ³ ³OR ³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ ³ C++ Bindings ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ÚÄÄÄÄ¿ ÚÄÄÄÄ¿ ³ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³.XIH³ ³.XH ³ ³ ³ .IDL ³ÄÄÄÄÄÄÄÄÙ ÀÄij ÀÄÄÄÄÙ ÀÄÄÄÄÙ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³ ÚÄÄÄÄ¿ ÚÄÄÄÄ¿ ³ ³ ³.CPP³ ³.PDL³ ³ ³ ÀÄÄÄÄÙ ÀÄÄÄÄÙ ³ ³ ÚÄÄÄÄ¿ ³ ³ ³.DEF³ ³ ³ ÀÄÄÄÄÙ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
The SOM compiler processes the IDL file for a SOM class and generates a set of language binding files. The file name of a SOM C-language binding file corresponds to that of the IDL file processed by the SOM compiler, unless the filestem modifier was specified in the IDL file. Each SOM C-language file has a different extension. For example, the SOM compiler processes EXAMPLE.IDL and generates EXAMPLE.C, EXAMPLE.H, and so forth. The language binding files generated by the SOM compiler are described in the following table:
ÚÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³C Extension ³C++ ³Description ³ ³ ³Extension ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³.C ³.CPP ³Template for C-language source ³ ³ ³ ³program for the class ³ ³ ³ ³implementation. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³.DEF ³.DEF ³Instructions to the Linker about how³ ³ ³ ³to build a class library. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³.H ³.XH ³Public Include file for all ³ ³ ³ ³C-language programs that need to ³ ³ ³ ³access the SOM class. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³.IH ³.XIH ³Implementation header containing ³ ³ ³ ³most of the automatically generated ³ ³ ³ ³implementation details about the ³ ³ ³ ³class. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³.PDL ³.PDL ³Language-neutral form and subset of ³ ³ ³ ³the SOM IDL file with ³ ³ ³ ³private-implementation detail ³ ³ ³ ³removed. This file should be ³ ³ ³ ³"published" (or exported, made ³ ³ ³ ³available) to users of the class. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Some of these files contain the public interface for the class; others contain the private interface. Some files are used to implement the class and its subclasses, and some are used by client programs that create and manipulate object instances of the class.
The IH and C files are the C-language source files for the class implementation. The IH file is included automatically in the C file. The IDL file is specified in the Include section of the class definition files for subclasses of the class. The H file must be included in client programs to create and manipulate object instances of the class. Separate public and private versions of the .H and .IDL files can be generated by the SOM tools.
A set of environment variables, as shown in the following table, control the SOM-compiler processing.
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³Variable ³Description ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³SMEMIT ³Specifies which output files are to be ³ ³ ³generated. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³SMINCLUDE ³Specifies the location of the class ³ ³ ³definition files (IDL). ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³SMTMP ³Specifies the directory to be used for ³ ³ ³intermediate files. ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³SOMIR ³Specifies the names of interface repository ³ ³ ³files. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
SMTMP is optional and defaults to the root directory of the current drive. If the files specified in the Include section of the class definition file are enclosed in double quotation marks, SMINCLUDE is optional and defaults to the root directory of the current drive. If the files specified in the Include section of the class definition file are enclosed in angled brackets ( < > ), SMINCLUDE is required for the SOM-compiler processing. SMEMIT is used to indicate which bindings files are generated.