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.


[Back] [Next]