diff options
author | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-03-21 01:47:50 +0000 |
---|---|---|
committer | nobody <nobody@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-03-21 01:47:50 +0000 |
commit | 3780285be6195aef4ca526e1a7f88b7cdd8edec3 (patch) | |
tree | c39a5eb36d5863de1b043f9eafb94fd076fa549d /TAO/TAO_IDL/docs | |
parent | d79706b30ce5e66aea5effc0306f77975cb31032 (diff) | |
download | ATCD-ACE-4_4_34.tar.gz |
This commit was manufactured by cvs2svn to create tag 'ACE-4_4_34'.ACE-4_4_34
Diffstat (limited to 'TAO/TAO_IDL/docs')
-rw-r--r-- | TAO/TAO_IDL/docs/ANNOUNCEMENT | 131 | ||||
-rw-r--r-- | TAO/TAO_IDL/docs/BUG_REPORT | 144 | ||||
-rw-r--r-- | TAO/TAO_IDL/docs/CHANGES | 122 | ||||
-rw-r--r-- | TAO/TAO_IDL/docs/CLI | 187 | ||||
-rw-r--r-- | TAO/TAO_IDL/docs/COPYRIGHT | 57 | ||||
-rw-r--r-- | TAO/TAO_IDL/docs/INSTALL | 229 | ||||
-rw-r--r-- | TAO/TAO_IDL/docs/PROBLEMS | 132 | ||||
-rw-r--r-- | TAO/TAO_IDL/docs/README | 233 | ||||
-rw-r--r-- | TAO/TAO_IDL/docs/ROADMAP | 126 | ||||
-rw-r--r-- | TAO/TAO_IDL/docs/WRITING_A_BE | 1350 |
10 files changed, 0 insertions, 2711 deletions
diff --git a/TAO/TAO_IDL/docs/ANNOUNCEMENT b/TAO/TAO_IDL/docs/ANNOUNCEMENT deleted file mode 100644 index 870db6f6006..00000000000 --- a/TAO/TAO_IDL/docs/ANNOUNCEMENT +++ /dev/null @@ -1,131 +0,0 @@ -WHAT: - -SunSoft, Inc., Mountain View, California, has placed the source code to -Project DOE's Interface Definition Language (IDL) compiler front end -(CFE) on OMG's file server, making the implementation publicly -available. This release is identified by the version number 1.3. - -Project DOE is SunSoft's corporate-wide development effort to integrate -distributed object technology into the Solaris O/S. OMG (Object Management -Group) is the industry wide body formed to create specifications for -distributed object technology. It currently has more than 370 members. OMG -IDL is part of OMG's CORBA 1.1 specification and provides a standardized -way for defining object interfaces. OMG IDL forms the basis for distributed -object interactionin Project DOE. - -The SunSoft OMG IDL CFE provides a complete framework for building -CORBA 1.1-compliant preprocessors for OMG IDL. By using this standard -implementation, developers of OMG IDL compilers will save many months -of work and enhance the portability and interoperability of OMG -IDL-interfaced objects. - -The SunSoft OMG IDL CFE allows convenient and fast integration of new back -ends to the compiler. The release consists of a front end which converts -OMG IDL to an intermediate format, a compiler framework driver, an example -implementation of a compiler back end, and a set of protocols for -interaction between the front and back ends. The SunSoft OMG IDL CFE -parser uses components generated by yacc and lex. - -The SunSoft OMG IDL CFE is designed to allow easy extension of OMG IDL -without impacting existing back-end implementations. As the CORBA -specification evolves, any new updates to the IDE CFE will be placed -by SunSoft on the OMG server. - -This release provides a directory with many examples of OMG IDL -specifications to allow users to become familiar with the process of -writing OMG IDL code. - -For more information send email to idl-cfe@sun.com. - -HOW: - -The SunSoft OMG IDL CFE is available at no charge through anonymous FTP -in source form on the OMG file server, omg.org. Please retrieve the -file OMG_IDL_CFE_1.3.tar.Z from the directory pub/OMG_IDL_CFE_1.3. Please -let us know who you are if you retrieve the compiler front end using this -method, by sending email to idl-cfe@sun.com. - -You can also retrieve the software by using the OMG mail server program. -Send email with the subject 'help' to omg_idl@omg.org, and the mail server -will respond with instructions on how to retrieve the software. - -WHEN: - -The SunSoft OMG IDL CFE is available now. - -CONTACT: - -Please let us know who you are if you decide to use this software, and how -you use it. Please send email to: - - idl-cfe@sun.com - -This address can also be used to report problems, bugs, suggestions and -send general comments. - -We ask that if you make extensions or modifications to this source release, -please make these extensions available to others using the OMG IDL compiler -front end, by sending the modified sources to the above email address. This -will help us evaluate your extensions for inclusion in a future version. It -also ensures your investment in these extensions when new versions of the -CFE are released. - -NOTE: - -SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are -trademarks or registered trademarks of Sun Microsystems, Inc. - -COPYRIGHT NOTICE: - -Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United -States of America. All Rights Reserved. - -This product is protected by copyright and distributed under the following -license restricting its use. - -The Interface Definition Language Compiler Front End (CFE) is made -available for your use provided that you include this license and copyright -notice on all media and documentation and the software program in which -this product is incorporated in whole or part. You may copy and extend -functionality (but may not remove functionality) of the Interface -Definition Language CFE without charge, but you are not authorized to -license or distribute it to anyone else except as part of a product or -program developed by you or with the express written consent of Sun -Microsystems, Inc. ("Sun"). - -The names of Sun Microsystems, Inc. and any of its subsidiaries or -affiliates may not be used in advertising or publicity pertaining to -distribution of Interface Definition Language CFE as permitted herein. - -This license is effective until terminated by Sun for failure to comply -with this license. Upon termination, you shall destroy or return all code -and documentation for the Interface Definition Language CFE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF -ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS -FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF -DEALING, USAGE OR TRADE PRACTICE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT -ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES -TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. - -SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH -RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY -INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. - -IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR -ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL -DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -Use, duplication, or disclosure by the government is subject to -restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in -Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR -52.227-19. - -Sun, Sun Microsystems and the Sun logo are trademarks or registered -trademarks of Sun Microsystems, Inc. - -SunSoft, Inc. -2550 Garcia Avenue -Mountain View, California 94043 diff --git a/TAO/TAO_IDL/docs/BUG_REPORT b/TAO/TAO_IDL/docs/BUG_REPORT deleted file mode 100644 index 28c34ae141d..00000000000 --- a/TAO/TAO_IDL/docs/BUG_REPORT +++ /dev/null @@ -1,144 +0,0 @@ -OMG IDL COMPILER FRONT END PROBLEM REPORT FORM --============================================- - -Checklist: Did you: -- include configuration information? -- include compiler version number (use -V to obtain)? -- include script of run? -- include IDL file causing problem? -- make any changes to the CFE? If so, did you include a diff against - original version? - -PLEASE SEND THE COMPLETED BUG REPORT TO: idl-cfe@sun.com. - -THANK YOU FOR REPORTING THIS PROBLEM! THROUGH YOUR COLLABORATION, SUNSOFT -WILL BE ABLE TO IMPROVE THE FUNCTIONALITY OF THIS PRODUCT. RECEIPT OF BUG -REPORTS WILL BE ACKNOWLEDGED BUT NO OBLIGATION IS UNDERTAKEN BY SUNSOFT TO -CORRECT THE REPORTED PROBLEM. SEE YOUR COPYRIGHT AND LICENSE INFORMATION. - - -CONFIGURATION INFORMATION (describe your hardware platform, operating -system and which compilers you used to compile the CFE): - - - - - - -COMPILER VERSION INFORMATION (include output from idl -V here): - - - - - - - -PROBLEM DESCRIPTION (describe problem, include script if available): - - - - - - - - -IDL INPUT CAUSING PROBLEM (include IDL input causing problem): - - - - - - - - - -DID YOU MAKE ANY CHANGES TO THE CFE? [Y] _ [N] _ -IF YES, INCLUDE A DIF OF YOUR VERSION AGAINST ORIGINAL VERSION: - - - - - - - - - -PROPOSED FIX (if you believe you know the cause of the problem, please -include a proposed change to the software to correct it): - - - - - - - - -ANY OTHER RELEVANT INPUT (include here any other information you believe -may be relevant to the resolution of the problem you described): - - - - - - -PLEASE SEND THIS PROBLEM REPORT TO idl-cfe@sun.com. - -NOTE: - -SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are -trademarks or registered trademarks of Sun Microsystems, Inc. - -COPYRIGHT NOTICE: - -Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United -States of America. All Rights Reserved. - -This product is protected by copyright and distributed under the following -license restricting its use. - -The Interface Definition Language Compiler Front End (CFE) is made -available for your use provided that you include this license and copyright -notice on all media and documentation and the software program in which -this product is incorporated in whole or part. You may copy and extend -functionality (but may not remove functionality) of the Interface -Definition Language CFE without charge, but you are not authorized to -license or distribute it to anyone else except as part of a product or -program developed by you or with the express written consent of Sun -Microsystems, Inc. ("Sun"). - -The names of Sun Microsystems, Inc. and any of its subsidiaries or -affiliates may not be used in advertising or publicity pertaining to -distribution of Interface Definition Language CFE as permitted herein. - -This license is effective until terminated by Sun for failure to comply -with this license. Upon termination, you shall destroy or return all code -and documentation for the Interface Definition Language CFE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF -ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS -FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF -DEALING, USAGE OR TRADE PRACTICE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT -ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES -TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. - -SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH -RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY -INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. - -IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR -ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL -DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -Use, duplication, or disclosure by the government is subject to -restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in -Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR -52.227-19. - -Sun, Sun Microsystems and the Sun logo are trademarks or registered -trademarks of Sun Microsystems, Inc. - -SunSoft, Inc. -2550 Garcia Avenue -Mountain View, California 94043 diff --git a/TAO/TAO_IDL/docs/CHANGES b/TAO/TAO_IDL/docs/CHANGES deleted file mode 100644 index ae6fca7bcea..00000000000 --- a/TAO/TAO_IDL/docs/CHANGES +++ /dev/null @@ -1,122 +0,0 @@ -CHANGES WHICH AFFECT BE WRITERS --=============================- - -INTRODUCTION - -This file describes changes that affect BE writers. It contains IMPORTANT -INFORMATION for BE writers who wish to migrate a BE written to operate with -release 1.2 to operate with release 1.3. It is likely that not following -these instructions will result in a compilable but malfunctioning compiler. - -AST INHERITANCE CHANGES - -The AST has been reorganized so that AST_Union and AST_Exception now -inherit from AST_Structure. This means that constructors of BE classes -which inherit from AST_Union or AST_Exception now need to explicitly call -an initializer for AST_Structure in their init section. - -We repeat below the information given in the file WRITING_A_BE, in the -section entitled "WRITING A BE". - -AST_EXCEPTION - -The signature for constructors of classes inheriting from AST_Exception -should now be: - - BE_Exception::BE_Exception(UTL_ScopedName *n, - UTL_StrList *p) - : AST_Decl(AST_Decl::NT_except, n, p), - AST_Structure(AST_Decl::NT_except, n, p), - UTL_Scope(AST_Decl::NT_except) - -AST_UNION - -The signature for constructors of classes inheriting from AST_Union should -now be: - - BE_Union::BE_Union(AST_ConcreteType *dt, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Union(dt, n, p), - AST_Structure(AST_Decl::NT_union, n, p), - AST_Decl(AST_Decl::NT_union, n, p), - UTL_Scope(AST_Decl::NT_union) - -IDL_BOOL TYPE - -To increase portability and reduce dependency of the sources on POSIX -compliance in targets of ports, IDL now provides its own boolean type which -is named idl_bool. It provides two truth values, I_TRUE and I_FALSE. - -UTL_SCOPEDNAME TYPE - -The UTL_ScopedName type is now a list of Identifier nodes; in previous -releases it used to be a list of String nodes. If your BE constructs scoped -names this change will prevent recompilation until you modify your -constructor calls to invoke constructors for Identifier instead of for -String. The signature of the constructor is: - - Identifier::Identifier(char *, long x=1, long y=0, long z=I_FALSE) - -The additional arguments which can be defaulted to the values indicated are -included for future use. - -COPYRIGHT - -Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United -States of America. All Rights Reserved. - -This product is protected by copyright and distributed under the following -license restricting its use. - -The Interface Definition Language Compiler Front End (CFE) is made -available for your use provided that you include this license and copyright -notice on all media and documentation and the software program in which -this product is incorporated in whole or part. You may copy and extend -functionality (but may not remove functionality) of the Interface -Definition Language CFE without charge, but you are not authorized to -license or distribute it to anyone else except as part of a product or -program developed by you or with the express written consent of Sun -Microsystems, Inc. ("Sun"). - -The names of Sun Microsystems, Inc. and any of its subsidiaries or -affiliates may not be used in advertising or publicity pertaining to -distribution of Interface Definition Language CFE as permitted herein. - -This license is effective until terminated by Sun for failure to comply -with this license. Upon termination, you shall destroy or return all code -and documentation for the Interface Definition Language CFE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF -ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS -FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF -DEALING, USAGE OR TRADE PRACTICE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT -ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES -TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. - -SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH -RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY -INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. - -IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR -ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL -DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -Use, duplication, or disclosure by the government is subject to -restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in -Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR -52.227-19. - -Sun, Sun Microsystems and the Sun logo are trademarks or registered -trademarks of Sun Microsystems, Inc. - -SunSoft, Inc. -2550 Garcia Avenue -Mountain View, California 94043 - -NOTE: - -SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are -trademarks or registered trademarks of Sun Microsystems, Inc. diff --git a/TAO/TAO_IDL/docs/CLI b/TAO/TAO_IDL/docs/CLI deleted file mode 100644 index a61c2bae365..00000000000 --- a/TAO/TAO_IDL/docs/CLI +++ /dev/null @@ -1,187 +0,0 @@ -OMG INTERFACE DEFINITION LANGUAGE COMPILER FRONT END: COMMAND LINE INTERFACE --==========================================================================- - -INTRODUCTION - -This document describes general OMG Interface Definition Language compiler -command line options. Options that are specific to a given back end, object -adapter or language are not described here. These should be described in a -document detailing the interface implemented by each specific back end. - -OMG INTERFACE DEFINITION LANGUAGE COMMAND LINE OPTIONS - -OMG Interface Definition Language compiler options are described below. -Unless otherwise noted, only one occurrence of each option is allowed. -The following conventions are used - -- Text in '[..]' is optional. -- Text followed by '*' can be repeated zero or more times. -- Text followed by '+' can be repeated once or more times. -- '{' and '}' are used to group text to cause '+' or '*' to apply to - the entire grouped text. -- 'aa|bb' means either 'aa' or 'bb'. - -COMMAND LINE SUMMARY - - idl [flag | file-name]* - -Flags are command line words that start with a '-'. All other command line -words are assumed to be file names. If no file names are given, input is -taken from stdin. - -COMMAND LINE FLAGS - --A[xyz] A local escape. This can be used to specify additional options that - are specific to a given implementation. More than one -A option is - allowed - --Dname[=value] - Defines name and an optional value to be passed to a compliant C++ - preprocessor, as if by #define. White space between the -D option - and the name is optional. More than one -D option is allowed. - --d If no parse errors were found, prints out a representation of the - IDL input to stderr. - --E Runs the C++ preprocessor on the OMG Interface Definition Language - input and sends the result to the standard output. - --Idirectory - Causes directory to be added to the search path for include files. - More than one -I option is allowed. This option is processed by a - compliant C++ preprocessor. - --Uname Undefines name, as if by #undef. White space between the -U option - and the name is optional. More than one -U option is allowed. - --V Causes the version information of the CFE to be displayed. No other - work is done, regardless of any other options. - --W[b|p][,arg]+ - Hands off the arguments supplied to a specific portion of the OMG - Interface Definition Language compiler: - - - -Wb arguments are handed to the loaded back end - - -Wp arguments are handed to a compliant C++ preprocessor - --Yp,pathname - Specifies an alternate path for finding a C++ compliant - preprocessor. Specifiers other than 'p' may be defined in future - versions of the CFE. More than one -Y option may appear. The last - one specifying each component takes effect. - - This option exists but currently does nothing. Instead, we use the - preprocessing facilities provided by invoking CC -E always. - --bback_end - Causes the CFE to use a different compiler back end than the - default one (if dynamic loading is supported). Legal values for - this option and the default value are implementation specific. - --u Prints a usage message from the CFE. All possible options are - shown. No other work is done regardless of any other options. - --v Causes the CFE to produce informational output as the various - phases of the compiler execute. - --w Suppresses IDL compiler warning messages. - - -WHITESPACE - -All option arguments may be separated from their option letter by -whitespace. For example, -D FOO is equivalent to -DFOO. - -UNKNOWN OPTIONS - -If an unknown option is passed to the CFE, the offending option is -displayed to the user together with a usage message, and no compilation is -performed. - -PASSING OPTIONS TO COMPILER PHASES - -The order in which options appear on the command line is preserved when -they are passed to various compiler phases. - -MUTUALLY EXCLUSIVE OPTION COMBINATIONS - -Mutually exclusive or ambiguous option combinations are resolved by using -the option that appears later on the command line. For example, - - -DFOO -UFOO - -has no effect and leaves FOO undefined for the preprocessor. - -OPTION SCOPE - -All options are in effect for the entire IDL compilation run. If multiple -IDL source file names are given on the command line, all options apply to -each file. If different IDL source files require different sets of options -for successfull compilation, they must be compiled separately. - -EXIT STATUS - -IDL Compilers exit with status equal to zero for successfull compilations. -If errors were found by the CFE, the exit status is a count of the errors. -The exit status for unsuccessfull compilations aborted by BEs is defined by -each BE. - -NOTE: - -SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are -trademarks or registered trademarks of Sun Microsystems, Inc. - -COPYRIGHT NOTICE: - -Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United -States of America. All Rights Reserved. - -This product is protected by copyright and distributed under the following -license restricting its use. - -The Interface Definition Language Compiler Front End (CFE) is made -available for your use provided that you include this license and copyright -notice on all media and documentation and the software program in which -this product is incorporated in whole or part. You may copy and extend -functionality (but may not remove functionality) of the Interface -Definition Language CFE without charge, but you are not authorized to -license or distribute it to anyone else except as part of a product or -program developed by you or with the express written consent of Sun -Microsystems, Inc. ("Sun"). - -The names of Sun Microsystems, Inc. and any of its subsidiaries or -affiliates may not be used in advertising or publicity pertaining to -distribution of Interface Definition Language CFE as permitted herein. - -This license is effective until terminated by Sun for failure to comply -with this license. Upon termination, you shall destroy or return all code -and documentation for the Interface Definition Language CFE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF -ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS -FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF -DEALING, USAGE OR TRADE PRACTICE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT -ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES -TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. - -SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH -RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY -INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. - -IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR -ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL -DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -Use, duplication, or disclosure by the government is subject to -restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in -Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR -52.227-19. - -Sun, Sun Microsystems and the Sun logo are trademarks or registered -trademarks of Sun Microsystems, Inc. - -SunSoft, Inc. -2550 Garcia Avenue -Mountain View, California 94043 diff --git a/TAO/TAO_IDL/docs/COPYRIGHT b/TAO/TAO_IDL/docs/COPYRIGHT deleted file mode 100644 index 461ad949518..00000000000 --- a/TAO/TAO_IDL/docs/COPYRIGHT +++ /dev/null @@ -1,57 +0,0 @@ -Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United -States of America. All Rights Reserved. - -This product is protected by copyright and distributed under the following -license restricting its use. - -The Interface Definition Language Compiler Front End (CFE) is made -available for your use provided that you include this license and copyright -notice on all media and documentation and the software program in which -this product is incorporated in whole or part. You may copy and extend -functionality (but may not remove functionality) of the Interface -Definition Language CFE without charge, but you are not authorized to -license or distribute it to anyone else except as part of a product or -program developed by you or with the express written consent of Sun -Microsystems, Inc. ("Sun"). - -The names of Sun Microsystems, Inc. and any of its subsidiaries or -affiliates may not be used in advertising or publicity pertaining to -distribution of Interface Definition Language CFE as permitted herein. - -This license is effective until terminated by Sun for failure to comply -with this license. Upon termination, you shall destroy or return all code -and documentation for the Interface Definition Language CFE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF -ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS -FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF -DEALING, USAGE OR TRADE PRACTICE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT -ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES -TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. - -SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH -RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY -INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. - -IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR -ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL -DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -Use, duplication, or disclosure by the government is subject to -restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in -Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR -52.227-19. - -Sun, Sun Microsystems and the Sun logo are trademarks or registered -trademarks of Sun Microsystems, Inc. - -SunSoft, Inc. -2550 Garcia Avenue -Mountain View, California 94043 - -NOTE: - -SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are -trademarks or registered trademarks of Sun Microsystems, Inc. diff --git a/TAO/TAO_IDL/docs/INSTALL b/TAO/TAO_IDL/docs/INSTALL deleted file mode 100644 index 6fcaa710042..00000000000 --- a/TAO/TAO_IDL/docs/INSTALL +++ /dev/null @@ -1,229 +0,0 @@ -INTERFACE DEFINITION LANGUAGE INSTALLATION GUIDE --==============================================- - -INTRODUCTION - -This file describes the installation process for OMG_IDL_CFE version 1.3. -This file explains how to: - -- install the source code -- modify the sources to customize them for different configurations -- modify the sources to implement your own back end - -TESTED CONFIGURATIONS - -This release has been tested and is believed to operate correctly on: -- SunPro Sparcworks 2.x and 3.0 on SunOS 4.1.x -- SunPro Sparcworks 2.x and 3.0 on Solaris 2.3 -- g++ 2.5.8 on SunOS 4.1.x -- g++ 2.5.8 on Solaris 2.3 - -This is the first release of OMG IDL CFE which is preconfigured to compile -correctly for Solaris 2.x and with SunPro SparcWorks compilers. - -CUSTOMIZATION - -The release contains a file idl_make_vars in the current directory, which -is included in each Makefile. This file defines all the customizable -variables for the CFE. - -OSV should be set to a string denoting the operating system upon which you -wish to build the CFE. The CFE as shipped is preconfigured to compile -correctly on Solaris 2.x (OSV=SOLARIS2), and has also been tested on SunOS -4.1.x (OSV=SUNOS4). It contains code donated by HP which enables it to be -compiled on Apollo Domain systems (OSV=apollo) and HPUX systems (OSV=hpux), -but these two configurations have not been tested. - -C++ and CCC should be set to identify the C++ compiler you will use to -compile this release. Their values should be identical. Both are set to -address differences between various make programs - some predefine CCC, -others use C++ to denote the C++ compiler. The possible values are CC -(which uses the Sparcworks compilers on SunOS 4.1 and Solaris 2.3) and g++, -which uses the installed version of GNU C++. - -CCFLAGS should be set to a list of flags to pass to the C++ compiler. As -shipped, this list is -g. NOTE: We have not extensively tested the release -with optimization turned on. - -CPP_FLAGS should be set to a list of flags to pass to the C++ preprocessor. -Use this variable to enable or disable specific customizations you make to -the BE or CFE sources. - -YFLAGS should be set to a list of flags to pass to the Yacc program. As -shipped, the list is -d -t, which causes Yacc to generate y.tab.h and -y.tab.c files. - -LEXFLAGS should be set to a list of flags to pass to the Lex program. As -shipped, the list -t. - -RANLIB should be set to the location of the ranlib program on your system. -As shipped this is ranlib. If your system has no ranlib you can set this -variable to ':' or /bin/true. As shipped the variable is preset to -/bin/true since Solaris 2.x does not use ranlib. - -AR should be set to the location of the ar program on your system. As -shipped this is ar. If your system has a different mechanism for creating -libraries, you should modify the value of this variable accordingly. - -ARFLAGS should be set to the flags to be passed to the ar program. As -shipped this is 'crv'. - -INSTALLATION - -a. Disk space requirements - -This distribution requires approximately 350 KBytes when compressed. When -uncompressed, untarred and compiled, approximately 10 MBytes of disk space -are consumed on a Sun 4. - -b. Getting the software - -Use anonymous FTP to omg.org and supply your e-mail address as password. -Change directories to pub/OMG_IDL_CFE_1.3, set bin and get the compressed -tar file OMG_IDL_CFE_1.3.tar.Z. - -The distribution may, in the future, be made available from other archives -on the Internet. However, omg.org will always have the most up-to-date -version of this software. - -After transferring this file, uncompress it and untar it in a directory of -your choice. - -c. Compiling it - -If you are using a Sparcstation running Solaris 2.x and have the SunPro -Sparcworks compilers installed, you may directly install the software. If -your hardware or operating system configurations are different, read and -follow the instructions in the previous section first. - -At the root directory of the release, issue - - % make - -or - - % make all - -This will compile the provided sources and the sources found in the be -directory. Executing this make target causes 'make all' to be invoked in -each subdirectory, resulting in building the libraries for each component -and finally a link step producing an executable IDL compiler. - -In order to make only the compiler front end components, without compiling -the sources found in the be directory and without building an executable, -issue - - % make libs - -This will build the libraries in the ast, fe, util, driver and narrow -directories. To build only the be, issue - - % make be - -To build all libraries without creating an executable, issue - - % make all_libs - -To remove all files created by the build process, issue - - % make clean - -This will not remove any files created by Yacc and Lex, because you may be -using the ones provided in the distribution (see below). - -d. Yacc and Lex - -Some installations may not have a C++ aware Yacc and Lex processor. For -these installations, we have included the output of yacc and lex in the -release. If you need to use these files to build the release because you -don't have access to a C++ capable Yacc or Lex, go to the "fe" directory, -issue the command: - - % touch lex.yy.cc y.tab.cc y.tab.hh - -This will ensure that the processed files appear to be newer than the -source files they were produced from and will cause "make" to skip their -production. - -NOTE: The files provided in the distribution have been produced on Solaris -2.3 and may contain OS-specific #include directives. If you intend to use -these files, you may have to edit them to make them work in your -environment. The provided files are known to compile cleanly without -modification with both SunPro Sparcworks compilers and GNU C++ on both -SunOS 4.1 and Solaris 2.3. We have not tested the grammar and lexer input -files with bison or flex. - -IMPLEMENTING A BACK END - -To implement your own back end, you can start with the provided sources in -the be directory and modify them. The Makefile understands the 'make all' -target and will generate libbe.a in the demo_be directory. As set up, the -variable CPP_FLAGS allows you to place include files either in the current -directory or in the include directory. Alternatively, you can place your -include files in a new directory and modify CPP_FLAGS to cause the C++ -preprocessor to search this new directory for referenced include files, by -adding a new -I directive. - -Additional detail on the structure and function of back ends, and on the -protocol which a back end must implement, are found in the document -entitled WRITING_A_BE. - -COPYRIGHT - -Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United -States of America. All Rights Reserved. - -This product is protected by copyright and distributed under the following -license restricting its use. - -The Interface Definition Language Compiler Front End (CFE) is made -available for your use provided that you include this license and copyright -notice on all media and documentation and the software program in which -this product is incorporated in whole or part. You may copy and extend -functionality (but may not remove functionality) of the Interface -Definition Language CFE without charge, but you are not authorized to -license or distribute it to anyone else except as part of a product or -program developed by you or with the express written consent of Sun -Microsystems, Inc. ("Sun"). - -The names of Sun Microsystems, Inc. and any of its subsidiaries or -affiliates may not be used in advertising or publicity pertaining to -distribution of Interface Definition Language CFE as permitted herein. - -This license is effective until terminated by Sun for failure to comply -with this license. Upon termination, you shall destroy or return all code -and documentation for the Interface Definition Language CFE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF -ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS -FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF -DEALING, USAGE OR TRADE PRACTICE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT -ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES -TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. - -SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH -RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY -INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. - -IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR -ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL -DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -Use, duplication, or disclosure by the government is subject to -restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in -Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR -52.227-19. - -Sun, Sun Microsystems and the Sun logo are trademarks or registered -trademarks of Sun Microsystems, Inc. - -SunSoft, Inc. -2550 Garcia Avenue -Mountain View, California 94043 - -NOTE: - -SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are -trademarks or registered trademarks of Sun Microsystems, Inc. diff --git a/TAO/TAO_IDL/docs/PROBLEMS b/TAO/TAO_IDL/docs/PROBLEMS deleted file mode 100644 index 65cfb6a1893..00000000000 --- a/TAO/TAO_IDL/docs/PROBLEMS +++ /dev/null @@ -1,132 +0,0 @@ -OMG INTERFACE DEFINITION LANGUAGE COMPILER FRONT END: KNOWN PROBLEMS --==================================================================- - -INTRODUCTION - -This file describes what configurations are known to work correctly with -this release, and what are the known problems with this release as shipped. -Comments about future possible enhancements do not imply a commitment on -the part of Sun or any of its subsidiaries to produce these enhancements. - -TESTED CONFIGURATIONS - -This release has been tested and is known to operate correctly on: - -- Sparcstation 2 running SunOS 4.1.2, when compiled with SparcWorks 3.0 -- Sparcstation 10 running Solaris 2.3, when compiled with SparcWorks 3.0.1 -- Sparcstation 10 running Solaris 2.3, when compiled with SparcWorks 4.0 - -We are aware of a bug in GNU C++ (the latest version we tested was 2.5) -which causes up-casting (changing the type of an instance from a base class -to a more derived class, also known as "narrowing") to fail or cause a -program crash. - -PROBLEMS: - -This is a list of known problems with the current version of the CFE: - -- The following syntax, although legal, is not accepted by the CFE: - - .. sequence <string <10>> .. - - This causes a parse error. The cause of this problem is that the '>>' is - read as a right shif operater and not as two '>'s. You can avoid this - problem by instead writing - - .. sequence <string <10> > .. - -- The following syntax, although legal, is not accepted by the CFE: - - const string foo = "abc" " and" " another" " string"; - - Instead, write: - - const string foo = "abc and another string"; - -- The printout produced by the -d option for dumping the AST is not always - perfect. Specifically, dumping of sequences and arrays is deficient. - -POSSIBLE FUTURE ENHANCEMENTS: - -This is a list of areas in which the code of the CFE may change in future -releases: - -- The current release is restricted in its use of C++ because it must - be possible to compile it using C++ 2.1. However, we have also provided - files that depend on features which are only present in C++ 3.0, such as - templates. If your compiler supports templates and you wish to use them, - copy the files in include/utl_tmpl to include, and copy the files in - util/utl_tmpl to util. You will also need to make compiler dependent - modifications to Makefiles throughout the CFE directory hierarchy to - enable the use of templates. - - The code using templates was donated by Steve Vinoski of HP. - - In a future release of the CFE only the template code may be included, - and hence users will need to use a C++ 3.0 or higher compiler. - -- The UTL_list classes defined in the util directory are rudimentary. More - features may be added to make the functionality richer. - -- The UTL_String class may be rewritten or replaced by a standard ANSI C++ - String implementation. Applications will be shielded from this change. - -COPYRIGHT: - -Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United -States of America. All Rights Reserved. - -This product is protected by copyright and distributed under the following -license restricting its use. - -The Interface Definition Language Compiler Front End (CFE) is made -available for your use provided that you include this license and copyright -notice on all media and documentation and the software program in which -this product is incorporated in whole or part. You may copy and extend -functionality (but may not remove functionality) of the Interface -Definition Language CFE without charge, but you are not authorized to -license or distribute it to anyone else except as part of a product or -program developed by you or with the express written consent of Sun -Microsystems, Inc. ("Sun"). - -The names of Sun Microsystems, Inc. and any of its subsidiaries or -affiliates may not be used in advertising or publicity pertaining to -distribution of Interface Definition Language CFE as permitted herein. - -This license is effective until terminated by Sun for failure to comply -with this license. Upon termination, you shall destroy or return all code -and documentation for the Interface Definition Language CFE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF -ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS -FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF -DEALING, USAGE OR TRADE PRACTICE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT -ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES -TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. - -SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH -RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY -INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. - -IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR -ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL -DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -Use, duplication, or disclosure by the government is subject to -restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in -Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR -52.227-19. - -Sun, Sun Microsystems and the Sun logo are trademarks or registered -trademarks of Sun Microsystems, Inc. - -SunSoft, Inc. -2550 Garcia Avenue -Mountain View, California 94043 - -NOTE: - -SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are -trademarks or registered trademarks of Sun Microsystems, Inc. diff --git a/TAO/TAO_IDL/docs/README b/TAO/TAO_IDL/docs/README deleted file mode 100644 index 6d73554acce..00000000000 --- a/TAO/TAO_IDL/docs/README +++ /dev/null @@ -1,233 +0,0 @@ -INTERFACE DEFINITION LANGUAGE COMPILER FRONT END --==============================================- - -INTRODUCTION - -Welcome to the publicly available source release of SunSoft's -implementation of the compiler front end (CFE) for OMG Interface Definition -Language! This is Release 1.3 of the CFE. - -The Interface Definition Language (IDL) implementation is divided into -three parts: - -- A main program for driving the compilation process -- A parser and attendant utilities -- One or more back ends (BEs) for taking the processed input and producing - output in a target language and target format - -WARNINGS - -This is a preliminary version. This software is made available AS IS and -WITH NO GUARANTEES. Please read the copyright notice attached at the -bottom of this file. - -IMPORTANT NOTICE FOR USERS OF OMG IDL CFE VERSION 1.2. - -Please carefully read the file CHANGES to obtain IMPORTANT INFORMATION on -changes in that may affect the manner in which a BE is constructed. You -must follow instructions contained in the file CHANGES to obtain a -functional BE if you are migrating an existing BE from OMG IDL CFE v. 1.2. - -TARGET AUDIENCE - -Who should use this release? - -- You can use this source release to create a stand alone parser for OMG - Interface Definition Language. This may be useful to verify the legality - of IDL input. -- Developers of OMG Interface Definition Language compilers should use this - release as a basis for writing their back ends, to obtain a common - framework for their compiler and to provide portable and uniform - parsing of IDL input. - -HOW TO OBTAIN THIS SOFTWARE - -Please use anonymous FTP to omg.org and supply your e-mail address as the -password. Then change directories to pub/OMG_IDL_CFE_1.3, set binary transfer -and get the file OMG_IDL_CFE_1.3.TAR.Z. This file includes copies of all -individual documentation files in the directory. - -Precompiled binaries constructed from the sources in this release will be -made available shortly, in the directory pub/OMG_IDL_CFE_1.3/bin. These -binaries are useful for parsing IDL source and for learning about the -language. Precompiled binaries for Solaris 2.x and for SunOS 4.x will be -provided. - -You can also use the mail server program to retrieve this software. Send -email with the subject 'help' to omg_idl@omg.org, and the mail server will -respond with instructions on how to retrieve the software. - -Copies of this software may be made available from archives other than -omg.org. New versions made available by Sun will be placed on omg.org and a -message will be sent to this newsgroup announcing its availability. - -Finally, the SunSoft OMG IDL CFE is also available on magnetic tape for a -nominal media charge directly from SunSoft. Please refer to part number -DIDL-100-STP when ordering. - -CONTACT POINT - -Please let us know who you are if you decide to use this software, and how -you use it. Please send e-mail to: - - idl-cfe@sun.com - -This address can also be used to report problems, bugs, suggestions and -send general comments. - -WHAT IS PROVIDED IN THE RELEASE - -Provided in this release are: - -- A main program for driving an Interface Definition Language compiler -- A parser for the Interface Definition Language grammar which builds an - internal representation of the input parsed. This internal - representation, named an Abstract Syntax Tree (AST), is used as input to - a back end -- Some utility functions used by the parser -- A demonstration back end (BE) which exercises the front end but produces - no translated output -- Documentation of the public interfaces and of the contract between - the compiler front end and a back end - -OPERATION - -A complete compiler operates in two passes: - -- The first pass, provided in this release, parses the IDL input and - produces an internal representation, called an Abstract Syntax Tree (AST). - This pass also does a complete syntax and semantics check of the input - provided to ensure that exactly legal IDL input is accepted. If a syntax - or semantic error is discovered, the second pass is not invoked. -- The second pass, provided by compiler developers, takes the AST and - produces output in the language and format of choice. A demonstration - back end is provided in the release. - -HOW TO USE THIS SOFTWARE - -To create a complete compiler from OMG Interface Definition Language to a -target language, compiler developers will: - -- Write a back end (BE) to take the internal representation of the input - parsed and translate it to the target language and format. You will - probably want to replace the BE directory in this source tree with your - own BE directory -- Link the BE with the sources provided here to produce a complete - compiler. - -DOCUMENTATION - -The OMG Interface Definition Language is fully described in the CORBA -documentation, Chapter 4. This document may be obtained from OMG. - -This release also provides the following documents: - -- This README file, describing the release -- INSTALL, describing installation of the software -- WRITING_A_BE contains all the information needed to start writing a back - end for this distribution -- CHANGES_IN_AST describes changes that affect migration of BEs written - against version 1.2 to version 1.3. -- CLI, describing the command line interface to the CFE -- ROADMAP, describing the directory structure for the source code. This - file will assist a developer in understanding the structure of the code - and navigating it -- PROBLEMS, describing a list of issues that may be addressed in future - releases -- BUG_REPORT, containing a form for use in reporting bugs and problems - with the IDL CFE - -ENVIRONMENT - -The INSTALL file explains how to customize the software for specific -platforms. The source distribution expects the following environment: - -- Sparcstation 1, 2, or 10 hardware -- SunPro SparcWorks 3.x or 4.0 - -As preconfigured, it compiles on Solaris 2.x. It can be reconfigured to -compile on SunOS 4.x, HPUX or Apollo Domain OS. As far as is known, no use -is made of Sun Make-specific features, and the Makefiles should be usable -with other make programs. - -This release has been tested and is believed to operate correctly with: -- SunPro Sparcworks 2.x and 3.0 on SunOS 4.1.x -- SunPro Sparcworks 2.x and 3.0 on Solaris 2.3 -- g++ 2.5.8 on SunOS 4.1.x -- g++ 2.5.8 on Solaris 2.3 - -INSTALLATION - -This release is targetted for Sun workstations running Solaris 2.x. The -process of installing this software is described in detail in the file -INSTALL in this directory. The INSTALL file also describes how to customize -the release for your own environment if it is different. - -KNOWN PROBLEMS - -A list of known deficiencies is provided in the file PROBLEMS in this -directory. If you find a problem which is not mentioned in it, please -report it as described below. Please read this file now to be apprised of -the problems found so far with this release. - -COPYRIGHT - -This copyright notice appears on all files. Please read it! - -Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United -States of America. All Rights Reserved. - -This product is protected by copyright and distributed under the following -license restricting its use. - -The Interface Definition Language Compiler Front End (CFE) is made -available for your use provided that you include this license and copyright -notice on all media and documentation and the software program in which -this product is incorporated in whole or part. You may copy and extend -functionality (but may not remove functionality) of the Interface -Definition Language CFE without charge, but you are not authorized to -license or distribute it to anyone else except as part of a product or -program developed by you or with the express written consent of Sun -Microsystems, Inc. ("Sun"). - -The names of Sun Microsystems, Inc. and any of its subsidiaries or -affiliates may not be used in advertising or publicity pertaining to -distribution of Interface Definition Language CFE as permitted herein. - -This license is effective until terminated by Sun for failure to comply -with this license. Upon termination, you shall destroy or return all code -and documentation for the Interface Definition Language CFE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF -ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS -FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF -DEALING, USAGE OR TRADE PRACTICE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT -ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES -TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. - -SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH -RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY -INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. - -IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR -ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL -DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -Use, duplication, or disclosure by the government is subject to -restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in -Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR -52.227-19. - -Sun, Sun Microsystems and the Sun logo are trademarks or registered -trademarks of Sun Microsystems, Inc. - -SunSoft, Inc. -2550 Garcia Avenue -Mountain View, California 94043 - -NOTE: - -SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are -trademarks or registered trademarks of Sun Microsystems, Inc. diff --git a/TAO/TAO_IDL/docs/ROADMAP b/TAO/TAO_IDL/docs/ROADMAP deleted file mode 100644 index 5da0d83823c..00000000000 --- a/TAO/TAO_IDL/docs/ROADMAP +++ /dev/null @@ -1,126 +0,0 @@ -INTERFACE DEFINITION LANGUAGE SOURCE TREE ROADMAP --===============================================- - -INTRODUCTION - -This file provides an overview of the directory structure of the sources -for the compiler front end for OMG Interface Definition Language. This will -be of use in understanding the source structure and will aid developers of -BEs. - -DIRECTORIES - -The following directories are present: - -- idl_specs: Contains many examples of IDL specifications, including the - IDL specifications of several Object Services, and several - files that somewhat exhaustively test features of the IDL - language -- include: Contains all include (".hh") files -- ast: Contains implementations for all classes comprising - the AST internal representation of the input parsed -- fe: Contains the Yacc grammar and Lex specification for - the OMG Interface Definition Language, and some utilities -- driver: Contains the main program which drives the compilation - process -- util: Contains utility classes used throughout the CFE. These - classes may also be of use in writing a BE -- narrow: Contains an implementation of a narrowing mechanism used - in the CFE. Since C++ does not provide compiler support - for narrowing, this is provided as an explicit service -- demo_be: Contains a demonstration back end which subclasses all - the AST classes but adds no functionality - -NAMING CONVENTIONS - -The file names start with two or three characters identifying the component -to which they belong: - -- idl_: This is the prefix for all files which contain global - elements of the CFE -- ast_: This is the prefix for all files containing implementations - or definitions of the AST -- fe_: This is the prefix for all files belonging to the parser -- drv_: This is the prefix for all files belonging to the compiler - driver -- utl_: This prefix is used to identify files belonging to the set of - utlities provided with the CFE -- nr_: This prefix identifies files belonging to the narrowing mechanim -- be_: This is the prefix for all files belonging to the back end - -All C++ files use the ".cc" extension, and all include files have the ".hh" -extension. All make files are named Makefile. Each directory contains a -make file. Lex input files have the ".ll" extension, and Yacc input files -use the ".yy" extension. All files containing IDL specifications have a -name ending with the ".idl" suffix. - -INCLUDE FILE HIERARCHY - -There are two main include files which must be included in all source -files. These are idl.hh and idl_extern.hh. The idl.hh file includes the -definitions for all the facilities provided by the CFE. The idl_extern.hh -file declares globally accessible data and exported application programmer -interface entry points. - -Each component has an include file for its own. Back end writers will want -to modify be.hh and possibly be_extern.hh. - -COPYRIGHT - -Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United -States of America. All Rights Reserved. - -This product is protected by copyright and distributed under the following -license restricting its use. - -The Interface Definition Language Compiler Front End (CFE) is made -available for your use provided that you include this license and copyright -notice on all media and documentation and the software program in which -this product is incorporated in whole or part. You may copy and extend -functionality (but may not remove functionality) of the Interface -Definition Language CFE without charge, but you are not authorized to -license or distribute it to anyone else except as part of a product or -program developed by you or with the express written consent of Sun -Microsystems, Inc. ("Sun"). - -The names of Sun Microsystems, Inc. and any of its subsidiaries or -affiliates may not be used in advertising or publicity pertaining to -distribution of Interface Definition Language CFE as permitted herein. - -This license is effective until terminated by Sun for failure to comply -with this license. Upon termination, you shall destroy or return all code -and documentation for the Interface Definition Language CFE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF -ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS -FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF -DEALING, USAGE OR TRADE PRACTICE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT -ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES -TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. - -SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH -RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY -INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. - -IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR -ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL -DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -Use, duplication, or disclosure by the government is subject to -restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in -Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR -52.227-19. - -Sun, Sun Microsystems and the Sun logo are trademarks or registered -trademarks of Sun Microsystems, Inc. - -SunSoft, Inc. -2550 Garcia Avenue -Mountain View, California 94043 - -NOTE: - -SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are -trademarks or registered trademarks of Sun Microsystems, Inc. diff --git a/TAO/TAO_IDL/docs/WRITING_A_BE b/TAO/TAO_IDL/docs/WRITING_A_BE deleted file mode 100644 index 5c3c069f7a1..00000000000 --- a/TAO/TAO_IDL/docs/WRITING_A_BE +++ /dev/null @@ -1,1350 +0,0 @@ -OMG INTERFACE DEFINITION LANGUAGE COMPILER FRONT END PROTOCOLS -============================================================== - -INTRODUCTION ------------- - -Welcome to the publicly available source release of SunSoft's -implementation of the compiler front end (CFE) for OMG Interface Definition -Language! - -This document explains how to use the release to create a fully functional -OMG Interface Definition Language to target language compiler for your -selected target system configuration. The section OVERVIEW explains this -document's structure. - -CONTEXT -------- - -The implementation has three parts: - -1. A main program driving the compilation process -2. A parser and attendant utilities for converting the IDL input into - an internal form -3. One or more back ends which take as input the internal form representing - the IDL input, and which produce output in a target language and target - format - -The release contains components 1 and 2, and a demonstration implementation -of component 3. To use this release, you - -- write a back end which takes the internal representation of the parsed input - and translates it to the target language and format. You may replace or - modify the demonstration back end provided. -- link the back end with the provided main program and parser sources - to produce a complete compiler. - -OVERVIEW --------- - -This document does not explain IDL nor does it introduce IDL features. -For this information, refer to the OMG CORBA specification, available by -anonymous FTP from omg.org. - -This document does not explain C++, except to demonstrate how it is -used to construct the CFE. The ARM by Stroustrup and Ellis provides a -thorough explanation of C++. - -This document consists of two independent parts. The first part -s all CFE supported protocols and the required -application programmer's interface entry points that a conformant -BE must provide. The second part steps through the process of -constructing a working BE. - -The first part describes: - -- The compilation process -- The Abstract Syntax Tree (AST) internal representation of parsed IDL - input -- How access to member data fields is managed -- How the AST is generated from the IDL input (Generator protocol) -- How definition scopes are nested and how name lookup works -- The narrowing mechanism -- How definition scopes are managed and how nodes are added to scopes -- How BEs get control during the AST construction process (Add protocol) -- The inheritance scheme used by the AST and how it affects BEs -- How errors are handled and reported -- How the CFE is initialized -- How the command line arguments are parsed -- What global variables and functions are provided -- What API is required to be supported by a BE in order to link - with the CFE -- What files must be included in each BE file - -The second part describes - -- The API to be supplied by each BE -- How to subclass from the AST to add BE specific functionality -- How to subclass from the Generator protocol to create BE specific - extended AST nodes -- How to write constructors for the derived BE classes -- How to use the Add protocol to store BE specific information -- How to maintain BE specific information which applies to the entire - AST generated from the IDL input -- How to use data members in your BE -- How to build a complete compiler - -PART I. FEATURES OF THE CFE --=========================- - -THE COMPILATION PROCESS ------------------------ - -The OMG IDL compiler operates as follows: - -- Parses command line arguments. If an option is directed at a - BE, an appropriate operation provided by the BE is invoked to process - the option. -- Performs global initialization. -- Forks a copy of the compiler for each file specified as input. -- An ANSI-compatible preprocessor preprocesses the IDL input. -- Parses the file using the CFE parser, and constructs an AST describing the - IDL input. -- Prints the AST for verification, if requested. -- Invokes the BE to process the AST and produce the output - characteristic of that BE. - -ABSTRACT SYNTAX TREE --------------------- - -The AST (Abstract Syntax Tree) is the primary mechanism for communication -between a BE and the CFE. It consists of a tree of instances of classes -defined in the CFE or refinements of those classes as defined in a BE. -The class hierarchy of the AST closely resembles the structure of the IDL -syntax. Most AST classes have direct equivalents in IDL constructs. - -The UTL_Scope class defines common functionality for definition scope -management and name lookup. This is explained in a following section. -UTL_Scope is defined in include/utl_scope.hh and implemented in -util/utl_scope.cc. - -The AST provides the following classes: - -AST_Decl Base of the AST class hierarchy. Each class in the AST - inherits from AST_Decl. Defined in include/ast_decl.hh - and implemented in ast/ast_decl.cc - -AST_Type Common base class for all classes which represent IDL - type constructs. Defined in include/ast_type.hh and - implemented in ast/ast_type.cc. Inherits from AST_Decl. - -AST_ConcreteType Common base class for all classes which represent IDL - types other than interfaces. Defined in the file - include/ast_concrete_type.hh and implemented in - ast/ast_concrete_type.cc. Inherits from AST_Type. - -AST_PredefinedType Instances of this class represent all predefined types - such as long, char and so forth. Defined in the file - include/ast_predefined_type.hh and implemented in - ast/ast_predefined_type.cc. Inherits from - AST_ConcreteType. - -AST_Module Represents the IDL module construct. Defined in the - file include/ast_module.hh and implemented in - ast/ast_module.cc. Inherits from AST_Decl and - UTL_Scope. - -AST_Root Represents the root of the abstract syntax tree being - constructed. Is a subclass of AST_Module. Can be - subclassed in BEs to store information associated with - the entire AST. Defined in the file include/ast_root.hh - and implemented in ast/ast_root.cc. Inherits from - AST_Module. - -AST_Interface Represents the IDL interface construct. Defined in - include/ast_interface.hh and implemented in the file - ast/ast_interface.cc. Inherits from AST_Type and - UTL_Scope. - -AST_InterfaceFwd Represents a forward declaration of an IDL interface. - Defined in include/ast_interface_fwd.hh and implemented - in ast/ast_interface_fwd.cc. Inherits from AST_Decl. - -AST_Attribute Represents an IDL attribute construct. Defined in - include/ast_attribute.hh and implemented in the file - ast/ast_attribute.cc. Inherits from AST_Decl. - -AST_Exception Represents an IDL exception construct. Defined in - include/ast_exception.hh and implemented in the file - ast/ast_exception.cc. Inherits from AST_Decl. - -AST_Structure Represents an IDL struct construct. Defined in the file - include/ast_structure.hh and implemented in the file - ast/ast_structure.cc. Inherits from AST_ConcreteType - and UTL_Scope. - -AST_Field Represents a field in an IDL struct or exception - construct. Defined in include/ast_field.hh and - implemented in ast/ast_field.cc. Inherits from - AST_Decl. - -AST_Operation Represents an IDL operation construct. Defined in the - file include/ast_operation.hh and implemented in - ast/ast_operation.cc. Inherits from AST_Decl and - UTL_Scope. - -AST_Argument Represents an argument to an IDL operation construct. - Defined in include/ast_argument.hh and implemented in - ast/ast_argument.cc. Inherits from AST_Field. - -AST_Union Represents an IDL union construct. Defined in - include/ast_union.hh and implemented in - ast/ast_union.cc. Inherits from AST_ConcreteType and - from UTL_Scope. - -AST_UnionBranch Represents an individual branch in an IDL union - construct. Defined in include/ast_union_branch.hh and - implemented in ast/ast_union_branch.cc. Inherits from - AST_Field. - -AST_UnionLabel Represents the label of an individual branch in an IDL - union construct. Defined in include/ast_union_label.hh - and implemented in ast/ast_union_label.cc - -AST_Constant Represents an IDL constant construct. Defined in - include/ast_constant.hh and implemented in the file - ast/ast_constant.cc. Inherits from AST_Decl. - -AST_Enum Represents an IDL enum construct. Defined in the file - include/ast_enum.hh and implemented in ast/ast_enum.cc. - Inherits from AST_ConcreteType and UTL_Scope. - -AST_EnumVal Represents an enumerator in an IDL enum construct. - Defined in include/ast_enum_val.hh and implemented in - ast/ast_enum_val.cc. Inherits from AST_Constant. - -AST_Sequence Represents an IDL sequence construct. Defined in - include/ast_sequence.hh and implemented in - ast/ast_sequence.cc. Inherits from AST_Decl. - -AST_String Represents an IDL string construct. Defined in the file - include/ast_string.hh and implemented in - ast/ast_string.cc. Inherits from AST_Decl. - -AST_Array Represents an array modifier to the type of an IDL - field or typedef declaration. Defined in the file - include/ast_array.hh and implemented in - ast/ast_array.cc. Inherits from AST_Decl. - -AST_Typedef Represents an IDL typedef construct. Defined in the file - include/ast_typedef.hh and implemented in - ast/ast_typedef.cc. Inherits from AST_Decl. - -AST_Expression Represents an IDL expression. Defined in the file - include/ast_expression.hh and implemented in - ast/ast_expression.cc. - -AST_Root A subclass of AST_Module, an instance of this class - is used to represent the distinguished root node of - the AST. Defined in include/ast_root.hh and implemented - in ast/ast_root.cc. Inherits from AST_Module. - - -USING INSTANCE DATA -------------------- - -The AST classes define member data fields in addition to defining -operations on instances. These member data fields are all private, to allow -only the instance in which they are stored direct access. Other objects -(including other instances of the same class) can obtain access to the -member data fields of an instance through accessor functions. These -accessor functions allow retrieval of the data, and in some cases update -functions are also provided to store new values. - -There are several reasons why this approach is taken. First, it hides the -actual implementation of the member data fields from outside the class. For -example, a Thermometer class would not expose whether its temperature -reading is stored in Farenheit or Celsius units, and it could allow access -through either unit method. - -Second, protecting access to member data in this manner restricts the -ability to update it to the instance itself, save where update functions -are explicitly provided. This makes for more reliable implementations, -since the manipulation of the data is isolated in the class implementation -itself. - -Third, wrapping a function call around access to member data allows such -access and update operations to be protected in a multithreaded -environment. While the CFE itself is not multithreaded and the access -operations as currently defined do no special work to protect against -mutliple conflicting access operations, this may be changed in a future -version. Moving the CFE to a multithreaded environment without protecting -access to member data in this manner would be extremely difficult. - -The protocol defined in the CFE is that member data fields are all private -and have names which start with the prefix "pd_" (denoting Private Data). -The access functions have names which are the same as the name of the field -sans the prefix. For example, AST_Decl has a field pd_defined_in and an -access function defined_in(). - -The update functions have names starting with "set_" followed by the name -of the corresponding access function. Thus, AST_Decl defines a function -set_in_main_file(boolean) which sets the pd_in_main_file data member's -value to the boolean provided. - -GENERATION OF THE AST ---------------------- - -The CFE generates the abstract syntax tree after parsing IDL -input. The nodes of the AST are defined by classes introduced in the -previous section, or by subclasses thereof as defined by each BE. In -writing the CFE, we were faced with the following problem: how to generate -the AST containing nodes of the derived classes as defined in each BE -without knowledge of the types and conventions of these BE classes. - -One alternative was to define a naming scheme which predetermines the names -of each subclass a BE can define. The AST would then be generated by -calling an appropriate constructor on the BE derived class. This scheme -suffers from some shortcomings: - -- It breaks the modularity of the compiler and imports knowledge about - types defined in a BE into the CFE, where this information does not belong. -- It restricts a compiler to having only one BE loaded at a time because the - names of these classes can be in use in only one BE at a time. -- It requires a BE to provide derived classes for all AST classes, even for - those classes where the BE adds no functionality. - -The mechanism we chose is different. We define the AST_Generator class -which has an operation for each constructor defined on each AST class. The -operation takes arguments appropriate to the constructor, invokes it and -returns the created AST node, using the type known to the CFE. All such -operations on the generator are declared virtual. The names of all -operations start with "create_" and contain the name of the construct. -Thus, an operation which invokes a constructor of an AST_Module is named -create_module. AST_Generator is defined in include/ast_generator.hh and -implemented in ast/ast_generator.cc. - -If a BE derives from any AST class, it must also derive from the -AST_Generator class and redefine the relevant operations to invoke -constructors of the BE provided class instead of the AST provided class. -For example, if BE_Module is a subclass of AST_Module in a BE, the BE would -also define BE_Generator and redefine create_module to call the constructor -of BE_Module instead of that provided by AST_Module. - -During initialization, the CFE causes an instance of the BE derived -generator to be created and saved. This is explained in the section on -REQUIRED ENTRY POINTS SUPPLIED BY A BE. During parsing, actions in the Yacc -grammar invoke operations on the saved instance to create new nodes for the -AST as it is being built. These operations invoke constructors for BE -derived classes or for AST provided classes if they were not overridden. - -DEFINITION SCOPES ------------------ - -IDL is a nested scoped language. The scoping rules are defined by the CORBA -spec and closely follow those of C++. - -Scope management is implemented in two classes provided in the utilities -library, UTL_Scope and UTL_Stack. UTL_Scope manages associations between -names and AST nodes, and UTL_Stack manages scope nesting and entry and exit -from definition scopes as the parse is proceeding. UTL_Scope is defined in -include/utl_scope.hh and implemented in util/utl_scope.cc. UTL_Stack is -defined in include/utl_stack.hh and implemented in util/utl_stack.cc. - -During initialization, the CFE creates an instance of UTL_Stack and saves -it. During parsing, as definition scopes are entered and exited, AST nodes -are pushed onto, or popped from, the stack represented by the saved -instances. Nodes on the stack are stored as instances of UTL_Scope. Section -THE NARROWING MECHANISM explains how to obtain the real type of a node -retrieved from the stack. - -All definition scopes are linked in a tree rooted in the distinguished AST -root node. This linkage is implemented by UTL_Scope and AST_Decl. The -linkage is a permanent record of the scope nesting while the stack is a -dynamic record which at each instant represents the current state of the -parse. - -The nesting information is used to do name lookup. IDL uses scoped names -which are concatenations of definition scope names ending with individual -construct names. For example, in - - interface a { - struct b { - long c; - }; - const long k = 23; - struct s { - long ar[k]; - }; - }; - -the name a::b::c represents the long field in the struct b inside the -interface a. - -Lookup is performed by searching down the linkage chain for the first component -of the name, then, when found, recursively resolving the remaining -components in the scope defined by the first component. Lookup is relative -to the scope of use; in the above example, k could also have been referred to -as a::k within the struct s. - -Nodes are stored in a definition scope as instances of AST_Decl. Thus, name -lookup returns instances of AST_Decl. The next section, THE NARROWING -MECHANISM, explains how to obtain the real type of a node retrieved from a -definition scope. - -THE NARROWING MECHANISM ------------------------ - -Here we give only a cursory explanation of how narrowing works. We -concentrate on defining the problem and showing how to use our narrowing -mechanism. The narrowing mechanism is defined in include/idl_narrow.hh. - -As explained above, nodes are stored on the scope stack as instances of -UTL_Scope, and inside definition scopes as instances of AST_Decl. Also, -nodes are linked in a nesting tree as instances of AST_Decl. Given a node -retrieved from the stack or a definition scope, one is faced with the task -of obtaining its real class. C++ does not currently provide an implicit -mechanism for narrowing to a derived class, so the CFE defines its own -mechanism. This mechanism requires some work on your part as BE implementor -and requires some explicit code to be written when it is to be used. - -The class AST_Decl defines an enum whose members encode specific AST node -classes. AST_Decl provides an accessor function, node_type(), which -retrieves a member of the enum representing the AST type of the node. Thus, -if an instance of AST_Decl really is an instance of AST_Module, the -node_type() accessor returns AST_Decl::NT_module. - -The class UTL_Scope also provides an accessor function, scope_node_type(), -which returns a member of the enum encoding the actual type of the node. -Thus, given an UTL_Scope instance which is really an instance of -AST_Operation, scope_node_type() would return AST_Decl::NT_op. - -Perusing the header files for classes provided by the AST, you will note -the use of some macros defined in include/idl_narrow.hh. These macros -define the explicit narrowing mechanism: - -DEF_NARROW_METHODSx(<class name>,<parent_x>) for x equal to 0,1,2 or 3, -defines a narrowing method for the specified class which has 0,1,2 or 3 -immediate base classes from which it inherits. For example, ast_module.hh -which defines AST_Module contains the following line: - - DEF_NARROW_METHODS2(AST_Module, AST_Decl, UTL_Scope) - -This is because AST_Module inherits directly from AST_Decl and UTL_Scope. - -DEF_NARROW_FROM_DECL(<class name>) appears in class definitions for classes -which are derived from AST_Decl and which can be stored in a definition -scope. This macro declares a static operation narrow_from_decl(AST_Decl *) -on the class in which it appears. The operation returns the provided -instance as an instance of <class name> if it can be narrowed, or NULL. - -DEF_NARROW_FROM_SCOPE(<class name>) appears in class definitions of classes -which are derived from UTL_Scope and which can be stored on the scope -stack. This macro declares a static operation narrow_from_scope(UTL_Scope *) -on the class in which it appears. The operation returns the provided -instance as an instance of <class name> if it can be narrowed, or NULL. - -Now look in the files implementing these classes. You will note occurrences -of the following macros: - -IMPL_NARROW_METHODSx(<class name>,<parent_x>) for x equal to 0,1,2 or 3, -implements a narrowing method for the specified class which has 0,1,2 or 3 -immediate base classes from which it inherits. For example, ast_module.cc -which implements AST_Module contains the following line: - - IMPL_NARROW_METHODS2(AST_Module, AST_Decl, UTL_Scope) - -IMPL_NARROW_FROM_DECL(<class name>) implements a method to narrow from an -instance of AST_Decl to an instance of <class name> as defined above. - -IMPL_NARROW_FROM_SCOPE(<class name>) implements a method to narrow from an -instance of UTL_Scope to an instance of <class name> as defined above. - -To put it all together: In the file ast_module.hh, you will find: - - // Narrowing - DEF_NARROW_METHODS2(AST_Module, AST_Decl, UTL_Scope); - DEF_NARROW_FROM_DECL(AST_Module); - DEF_NARROW_FROM_SCOPE(AST_Module); - -In the file ast_module.cc, you will see: - -/* - * Narrowing methods - */ -IMPL_NARROW_METHODS2(AST_Module, AST_Decl, UTL_Scope) -IMPL_NARROW_FROM_DECL(AST_Module) -IMPL_NARROW_FROM_SCOPE(AST_Module) - -The CFE uses narrowing internally to obtain the correct type of nodes in -the AST. The CFE contains many code fragments such as the following: - - AST_Decl *d = get_an_AST_Decl_from_somewhere(); - AST_Module *m; - ... - if (d->node_type() == AST_Decl::NT_module) { - m = AST_Module::narrow(d); - if (m == NULL) { // Narrow failed - ... - } else { // Success, do normal processing - ... - } - } - ... - -Similar code implements narrowing instances of UTL_Scope to their actual -types. - -In your BE classes which derive from UTL_Scope you must include a line -defining how to narrow from a scope, so: - - DEF_NARROW_FROM_SCOPE(<your BE class>) - -and similarly for your BE classes which derive from AST_Decl. - -The narrowing mechanism is defined only for narrowing from AST_Decl and -UTL_Scope. If your BE class inherits directly from one or more classes -which themselves are derived from AST_Decl and/or UTL_Scope, you must -include a line - - DEF_NARROW_METHODSx(<your class name>,<parent 1>,<parent 2>) - -To make this concrete, here is what you'd write in a definition of BE_union -which inherits from AST_Union: - - DEF_NARROW_METHODS1(BE_Union, AST_Union); - DEF_NARROW_FROM_DECL(BE_Union); - DEF_NARROW_FROM_SCOPE(BE_Union); - -and in the implementation file of BE_Union: - -/* - * Narrowing methods: - */ -IMPL_NARROW_METHODS1(BE_Union, AST_Union) -IMPL_NARROW_FROM_DECL(BE_Union) -IMPL_NARROW_FROM_SCOPE(BE_Union) - -Then, in BE code which expects to see an instance of your derived BE_Union -class, you will write: - - AST_Decl *d = get_an_AST_Decl_from_somewhere(); - BE_Union *u; - ... - if (d->node_type() == AST_Decl::NT_union) { - u = BE_Union::narrow_from_decl(d); - if (u == NULL) { // Narrow failed - ... - } else { // Success, do normal processing - ... - } - } - ... - - -SCOPE MANAGEMENT ----------------- - -Instances of classes which are derived from UTL_Scope implement definition -scopes. A definition scope can contain any kind of AST node as long as it -is derived from AST_Decl. However, specific kinds of definition scopes such -as interfaces and unions can contain only a restricted subset of all AST -node types. - -UTL_Scope provides operations to add instances of each AST provided class -to a definition scope. The names of these operations are constructed by -prepending the string "add_" to the name of the IDL construct. So, to add -an interface to a definition scope, invoke the operation add_interface. -The operations are all defined virtual and are intended to be overridden in -classes derived from UTL_Scope. - -If the node was successfully added to the definition scope, the node is -returned as the result. Otherwise the node is not added to the definition -scope and NULL is returned. - -All add operation implementations in UTL_Scope return NULL. Thus, -only the operations which implement legal additions to a specific kind of -definition scope must be overridden in the implementation of that -definition scope. For example, in AST_Module the add_interface operation is -overridden to add the provided instance of AST_Interface to the scope and -to return the provided instance if the addition was successful. Operations -which were not overridden return NULL to indicate that the addition is -illegal in this context. For example, in AST_Operation the definition of -add_interface is not overridden since it is illegal to store an interface -inside an operation definition scope. - -The add operations are invoked in the actions in the Yacc grammar. The -following fragment is a representative example of code using the add -operations: - - AST_Constant *d = construct_a_new_constant(); - ... - if (current_scope->add_constant(d) == NULL) { // Failed - ... - } else { // Succeeded - ... - } - -BE INTERACTION DURING THE PARSING PROCESS ------------------------------------------ - -The add operations can be overridden in BE derived classes to let the BE -perform additional house-keeping work during the process of constructing -the AST. For example, a BE could keep separate lists of interfaces as they -are being added to a module. - -If you override an add operation in your BE, you must invoke the overridden -operation in the superclass of your derived class to allow the CFE to -perform its own house-keeping tasks. A good rule is to invoke the operation -on the superclass before you do your own processing; then, if the -superclass operation returns NULL, this indicates that the addition failed -and your own code should immediately return NULL. An example explains this: - -AST_Interface * -BE_Module::add_interface(AST_Interface *i) -{ - if (AST_Module::add_interface(i) == NULL) // Failed, bail out! - return NULL; - ... // Do your own work here - return i; // Return success indication -} - -We strongly advise you to only define add operations that override add -operations provided by the AST classes. Add operations which -do not override equivalent operations in the AST in effect -extend the semantics of the language accepted by the compiler. For -example, the CFE does not have an add_interface operation on -AST_Operation. If you were to define one in your BE_Operation class, -the resulting compiler would allow an interface to be -stored in an operation definition scope. The current CORBA specification -does not allow this. - -AST INHERITANCE SCHEME ----------------------- - -The AST classes all use public virtual inheritance to construct the -inheritance tree. This ensures that a class may appear several times in the -inheritance tree through different paths and the derived class's instances -will have only one copy of the inherited class's data. - -The use of public virtual inheritance has several important effects on how -a BE is constructed. We explain those effects below. - -First, you must define a default constructor for your BE class, since -your class may be used as a virtual base class of some other class. In this -case the compiler may want to call a default constructor for your class. It -is a good idea to have a default constructor anyway, even if you do not -plan to subclass your BE class, since for most C++ compilers this causes -the code to be smaller. Your default constructor should initialize all -constant data members. Additionally, it may initialize any non-constant -data member whose value must be set before the first time the instance is -used. - -Second, the constructor of your BE derived class must explicitly call all -constructors of virtual base classes which perform useful work. For -example, if a class in the AST from which your BE class inherits has an -initializer for a data member, you must call that constructor. This rule is -discussed in detail in the C++ ARM. An example may help here. - -Suppose you define a class BE_attribute which inherits from AST_Attribute. -Its constructor should be as follows: - - BE_Attribute::BE_Attribute(boolean ro, - AST_Type *ft, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Attribute(ro, ft, n, p), - AST_Field(ft, n, p), - AST_Decl(AST_Decl::NT_attr, n, p) - { - } - -The calls to the constructors of AST_Attribute, AST_Field and AST_Decl are -needed because these constructors do useful initializations on their -classes. - -Note that there is some redundancy in the data passed to these -constructors. We chose to preserve this redundancy since it should be -possible to create BEs which subclass only some of the classes supplied by -the AST. This means that the constructors on each class provided by the AST -should take arguments which are sufficient to construct the instance if -the AST class is the most derived one. - -The code supplied with this release contains a demonstration BE which -subclasses all the AST provided classes. The constructors for each class -provided by the BE are found in the file be/be_classes.cc. - -INITIALIZATION --------------- - -The following steps take place at initialization: - -- The global data instance is created, stored in idl_global and filled with - default values (in driver/drv_init.cc). -- The command line arguments are parsed (in driver/drv_args.cc). -- For each IDL input file, a copy of the compiler process is forked (in - driver/drv_fork.cc). -- The IDL input is preprocessed (in driver/drv_preproc.cc). -- FE initialization stage 1 is done: the scopes stack is created and stored - in the global data variable idl_global->scopes() field (in fe/fe_init.cc). -- BE_init is called to create the generator instance and the returned - instance is stored in the global data variable idl_global->gen() field. -- FE initialization stage 2 is done: the global scope is created, pushed on - the scopes stack and populated with predefined types (in fe/fe_init.cc). - -GLOBAL STATE AND ENTRY POINTS ------------------------------ - -The CFE has one global variable named idl_global, which stores an instance -of a class IDL_GlobalData as explained below: - -The CFE defines a class IDL_GlobalData which defines the global -information used in a specific run of the compiler. IDL_GlobalData is -defined in include/idl_global.hh and implemented in the file -util/utl_global.cc. - -Initialization creates an instance of this class and stores it in the value -of the global variable idl_global. Thus, the individual pieces of -information stored in the instance are accessible everywhere. - -ERROR HANDLING --------------- - -All error handling is defined by a class provided by the CFE, UTL_Error. -This class is defined in include/utl_error.hh and implemented in the file -util/utl_error.cc. The class provides several methods for reporting -specific errors as well as generic error reporting methods taking zero to -three arguments. - -The CFE instantiates the class and stores the instance as part of the -global state, accessible as idl_global->err(). Thus, to cause an error -report, you would write code similar to the following: - - if (error condition found) - idl_global->err()->specific_error_message(arg1, ..); - -or - - if (error condition found) - idl_global->err()->generic_error_message(flag, arg1, ..); - -The flag argument is one of the predefined error conditions found in the -enum at the head of the UTL_Error class definition. The arguments to the -specific error message routine are defined by the signature of that -routine. The arguments to a generic error message routine are always -instances of AST_Decl. - -The running count of errors is accessible as idl_global->err_count(). If -the value returned by this operation is non-zero after the IDL input has -been parsed, the BE is not invoked. - -HANDLING OF COMMAND LINE ARGUMENTS ----------------------------------- - -Defined command line arguments are specified in the document CLI, in this -directory. The CFE calls the required BE API entry point BE_prep_arg to -process arguments passed within a -Wb flag. - -REQUIRED ENTRY POINTS SUPPLIED BY A BE --------------------------------------- - -The following API entry points must be supplied by a BE in order to -successfully link with the CFE: - -extern "C" AST_Generator *BE_init(); - - Creates an instance of the generator object and returns it. Note - that the global scope is not yet set up and the scopes stack is - empty when this routine is called. - -extern "C" void BE_produce(); - - Called by the compiler main program after the IDL input has been - successfully parsed and processed. The job of this routine is to - carry out the specific function of the BE. The AST is accessible as - the value of idl_global->root(). - -extern "C" void BE_prep_arg(char *, idl_bool); - - Called to process an argument passed in with a -Wb flag. The boolean - will always be FALSE. - -extern "C" void BE_abort(); - - Called when the CFE decides to abort the compilation. Can be used in - a BE to clean up after itself, e.g. remove temporary files or - directories it created while the parse was in progress. - -extern "C" void BE_version(); - - Called when a -V argument is processed. This should produce a - message for the user identifying the BE that is loaded and its - version information. - -PART II. WRITING A BACK END --=========================- - -REQUIRED API THAT EACH BE MUST SUPPORT --------------------------------------- - -Below are the API entry points that each BE must supply in order to use the -CFE framework. This is a repeat of the BE API section: - -extern "C" AST_Generator *BE_init(); - - Creates an instance of the generator object and returns it. Note - that the scopes stack is still not set up at the time this routine - is called. - -extern "C" void BE_produce(); - - Called by the compiler main program after the IDL input has been - successfully parsed and processed. The job of this routine is to - carry out the specific function of the BE. The AST is accessible as - the value of idl_global->root(). - -extern "C" void BE_prep_arg(char *, boolean); - - Called to process an argument passed in with a -Wb flag. The boolean - will always be FALSE. - -extern "C" void BE_abort(); - - Called when the CFE decides to abort the compilation. Can be used in - a BE to clean up after itself, e.g. remove temporary files or - directories it created while the parse was in progress. - -extern "C" void BE_version(); - - Called when a -V argument is processed. This should produce a - message for the user identifying the BE that is loaded and its - version information. - -WHAT FILES TO INCLUDE ---------------------- - -To use the CFE, each implementation file of your BE must include the -following two header files: - -#include <idl.hh> -#include <idl_extern.hh> - -Following this, you can include any header files needed by your BE. - -HOW TO SUBCLASS THE AST ------------------------ - -Your BE may subclass from any of the classes provided by the AST. Your -class should use public virtual inheritance to ensure that only one copy of -the class's data members is present in each instance. Read the section on -HOW TO WRITE CONSTRUCTORS to learn about additional considerations that you -must take into account when writing constructors for your BE classes. - -HOW TO SUBCLASS THE GENERATOR TO CREATE BE ENHANCED AST NODES -------------------------------------------------------------- - -Your BE subclasses from classes provided by the AST. To ensure that -instances of these classes are constructed when the AST is built, you must -also subclass AST_Generator and return an instance of your subclass from -the call to BE_init. - -The AST_Generator class provides operations to create instances of all -classes defined in the AST. For example, the operation to create an -AST_Attribute node is as follows: - - AST_Attribute * - AST_Generator::create_attribute(...) - { - return new AST_Attribute(...); - } - -In your BE_Generator subclass of AST_Generator, you will override methods -for creation of nodes of all AST classes which you have subclassed. Thus, -if your BE has a class BE_Attribute which is a subclass of AST_Attribute, -your BE_Generator class definition has to override the create_attribute -method to ensure that instances of BE_Attribute are created. - -The definition of the overriden operations should call the constructor of -the derived class and return the new node as an instance of the inherited -class. Thus, the implementation of create_attribute is as follows: - - AST_Attribute * - BE_Generator::create_attribute(...) - { - return new BE_Attribute(...); - } - -The Yacc grammar actions call create_xxx operations on the generator -instance stored in the global variable idl_global->gen() field. By storing -an instance of your derived generator class BE_Generator you ensure that -instances of the BE classes you defined will be created. - -HOW TO WRITE CONSTRUCTORS FOR BE CLASSES ----------------------------------------- - -As mentioned above, the AST uses public virtual inheritance to derive the -AST class hierarchy. This has two important effects on how you write a BE, -specifically how you write constructors for derived BE classes. - -First, you must define a default constructor for your BE class, since -your class may be used as a virtual base class of some other class. In that -case the compiler may want to call a default constructor for your class. It -is a good idea to have a default constructor anyway, even if you do not -plan to subclass your BE class, since for most C++ compilers this causes -the code to be smaller. Your default constructor should initialize all -constant data members. Additionally, it may initialize any non-constant -data member whose value must be set before the first time the instance is -used. - -Second, the constructor for your BE class must explicitly call all -constructors of virtual base classes which do some useful work. For -example, if a class in the AST from which your BE class inherits, directly -or indirectly, has an initializer for a data member, your BE class's -constructor must call the AST class's constructor. This is discussed -extensively in the C++ ARM. - -Below is a list showing how to write constructors for subclasses of each -class provided by the BE. For each AST class we show a definition of a -constructor for a derived class which calls all neccessary constructors on -AST classes: - -AST_Argument: - - BE_Argument::BE_Argument(AST_Argument::Direction d, - AST_Type *ft, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Argument(d, ft, n, p), - AST_Field(AST_Decl::NT_argument, ft, n, p), - AST_Decl(AST_Decl::NT_argument, n, p) - { - } - -AST_Array: - - BE_Array::BE_Array(UTL_ScopedName *n, - unsigned long nd, - UTL_ExprList *ds) - : AST_Array(n, nd, ds), - AST_Decl(AST_Decl::NT_array, n, NULL) - - { - } - -AST_Attribute: - - BE_Attribute::BE_Attribute(boolean ro, - AST_Type *ft, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Attribute(ro, ft, n, p), - AST_Field(AST_Decl::NT_attr, ft, n, p), - AST_Decl(AST_Decl::NT_attr, n, p) - { - } - -AST_ConcreteType: - - BE_ConcreteType::BE_ConcreteType(AST_Decl::NodeType nt, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Decl(nt, n, p) - { - } - -AST_Constant: - - BE_Constant::BE_Constant(AST_Expression::ExprType t, - AST_Expression *v, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Constant(t, v, n, p), - AST_Decl(AST_Decl::NT_const, n, p) - { - } - -AST_Decl: - - BE_Decl::BE_Decl(AST_Decl::NodeType nt, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Decl(nt, n, p) - { - } - -AST_Enum: - - BE_Enum::BE_Enum(UTL_ScopedName *n, - UTL_StrList *p) - : AST_Enum(n, p), - AST_Decl(AST_Decl::NT_enum, n, p), - UTL_Scope(AST_Decl::NT_enum) - { - } - -AST_EnumVal: - - BE_EnumVal::BE_EnumVal(unsigned long v, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_EnumVal(v, n, p), - AST_Constant(AST_Expression::EV_ulong, - AST_Decl::NT_enum_val, - new AST_Expression(v), - n, - p), - AST_Decl(AST_Decl::NT_enum_val, n, p) - { - } - -AST_Exception: - - BE_Exception::BE_Exception(UTL_ScopedName *n, - UTL_StrList *p) - : AST_Decl(AST_Decl::NT_except, n, p), - AST_Structure(AST_Decl::NT_except, n, p), - UTL_Scope(AST_Decl::NT_except) - { - } - -AST_Field: - - BE_Field::BE_Field(AST_Type *ft, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Field(ft, n, p), - AST_Decl(AST_Decl::NT_field, n, p) - { - } - -AST_Interface: - - BE_Interface::BE_Interface(UTL_ScopedName *n, - AST_Interface **ih, - long nih, - UTL_StrList *p) - : AST_Interface(n, ih, nih, p), - AST_Decl(AST_Decl::NT_interface, n, p), - UTL_Scope(AST_Decl::NT_interface) - { - } - -AST_InterfaceFwd: - - BE_InterfaceFwd::BE_InterfaceFwd(UTL_ScopedName *n, - UTL_StrList *p) - : AST_InterfaceFwd(n, p), - AST_Decl(AST_Decl::NT_interface_fwd, n, p) - { - } - -AST_Module: - - BE_Module::BE_Module(UTL_ScopedName *n, - UTL_StrList *p) - : AST_Decl(AST_Decl::NT_module, n, p), - UTL_Scope(AST_Decl::NT_module) - { - } - -AST_Operation: - - BE_Operation::BE_Operation(AST_Type *rt, - AST_Operation::Flags fl, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Operation(rt, fl, n, p), - AST_Decl(AST_Decl::NT_op, n, p), - UTL_Scope(AST_Decl::NT_op) - { - } - -AST_PredefinedType: - - BE_PredefinedType::BE_PredefinedType( - AST_PredefinedType::PredefinedType *pt, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_PredefinedType(pt, n, p), - AST_Decl(AST_Decl::NT_pre_defined, n, p) - { - } - -AST_Root: - - BE_Root::BE_Root(UTL_ScopedName *n, UTL_StrList *p) - : AST_Module(n, p), - AST_Decl(AST_Decl::NT_module, n, p), - UTL_Scope(AST_Decl::NT_module) - { - } - - -AST_Sequence: - - BE_Sequence::BE_Sequence(AST_Expression *ms, AST_Type *bt) - : AST_Sequence(ms, bt), - AST_Decl(AST_Decl::NT_sequence, - new UTL_ScopedName(new String("sequence"), NULL), - NULL) - { - } - -AST_String: - - BE_String::BE_String(AST_Expression *ms) - : AST_String(ms), - AST_Decl(AST_Decl::NT_string, - new UTL_ScopedName(new String("string"), NULL), - NULL) - { - } - -AST_Structure: - - BE_Structure::BE_Structure(UTL_ScopedName *n, - UTL_StrList *p) - : AST_Decl(AST_Decl::NT_struct, n, p), - UTL_Scope(AST_Decl::NT_struct) - { - } - -AST_Type: - - BE_Type::BE_Type(AST_Decl::NodeType nt, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Decl(nt, n, p) - { - } - -AST_Typedef: - - BE_Typedef::BE_Typedef(AST_Type *bt, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Typedef(bt, n, p), - AST_Decl(AST_Decl::NT_typedef, n, p) - { - } - -AST_Union: - - BE_Union::BE_Union(AST_ConcreteType *dt, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_Union(dt, n, p), - AST_Structure(AST_Decl::NT_union, n, p), - AST_Decl(AST_Decl::NT_union, n, p), - UTL_Scope(AST_Decl::NT_union) - { - } - -AST_UnionBranch: - - BE_UnionBranch::BE_UnionBranch(AST_UnionLabel *fl, - AST_Type *ft, - UTL_ScopedName *n, - UTL_StrList *p) - : AST_UnionBranch(fl, ft, n, p), - AST_Field(ft, n, p), - AST_Decl(AST_Decl::NT_union_branch, n, p) - { - } - -AST_UnionLabel: - - BE_UnionLabel::BE_UnionLabel(AST_UnionLabel::UnionLabel lk, - AST_Expression *lv) - : AST_UnionLabel(lk, lv) - { - } - -HOW TO USE THE ADD PROTOCOL ---------------------------- - -As explained the section SCOPE MANAGEMENT, the CFE manages scopes by -calling type-specific functions to add new nodes to the scope to be -augmented. These functions can be overridden in your BE classes to do work -specific to your BE class. For example, in a BE_module class, you might -override add_interface to do additional work. - -The protocol defined by the "add_" functions is that they return NULL to -indicate failure. They return the node that was added (and which was given -as an argument) if the operation succeeded. Your functions in your BE class -should follow the same protocol. - -The "add_" functions defined in the BE must call the overridden function in -the base class defind in the CFE in order for the CFE scope management -mechanism to work. Otherwise, the CFE does not get an opportunity to -augment its scopes with the new node to be added. It is good practice to -call the overridden "add_" function as the first action in your BE -function, because the success or failure of the CFE operation indicates -whether your function should complete its task or abort early. - -Here is an example. Suppose you have defined a class BE_module which -inherits from AST_Module. You may wish to override the add_interface -function as follows: - - class BE_Module : public virtual AST_Module - { - .... - /* - * ADD protocol - */ - virtual AST_Interface *add_interface(AST_Interface *); - ... - }; - -The implementation of this function would look something like the following: - - AST_Interface * - BE_Module::add_interface(AST_Interface *new_in) - { - /* - * Check that the CFE operation succeeds. If it returns - * NULL, stop any further work - */ - if (AST_Module::add_interface(new_in) == NULL) - return NULL; - /* - * OK, non-NULL, this means the BE can do its own work here - */ - ... - /* - * Finally, don't forget to return the argument to indicate - * success - */ - return new_in; - } - -HOW TO MAINTAIN BE SPECIFIC INFORMATION ---------------------------------------- - -The CFE provides a special class AST_Root, a subclass of AST_Module. An -instance of the AST_Root class is used as the distinguished root of the -abstract syntax tree built during a parse. - -Your BE can subclass BE_Root from AST_Root and override the create_root -operation in your BE_Generator class derived from AST_Generator. This will -cause the CFE to create an instance of your BE_Root class as the root of -the tree being constructed. - -You can use the instance of the BE_Root class as a convenient place to -store information specific to an individual tree. For example, you could -add operations on the BE_Root class to count how many nodes of each class -are created. - -HOW TO USE MEMBER DATA ----------------------- - -As explained above, the AST classes provide access and update functions for -manipulating data members. Your BE classes must use these functions when -they require access to data members defined in the AST classes, since the -data members themselves are private. - -It is good practice to follow the same scheme in your BE classes. Make all -data members private. Prepend the names of all such fields with "pd_". -Define access functions with names equal to the name of the field without the -prefix. Define update functions according to need by prepending the name of -the access function with the prefix "set_". - -Using these techniques will allow your BE to enjoy the same benefits that -are imparted onto the CFE. Your BE will be easier to move to a -multithreaded environment and its data members will be better protected and -hidden. - -HOW TO BUILD A COMPLETE COMPILER --------------------------------- - -We now have all information needed to write a BE and to link it in with the -CFE, to produce a complete IDL compiler. - -The following assumes that your BE will be stored in the "be" directory -under the "release" directory. See the document ROADMAP for an explanation -of the directory structure of the source release. If you decide to use a -different directory to store your BE, you may have to modify the CPP_FLAGS in -"idl_make_vars" in the top-level directory to allow your BE to find the -include files it needs. You will also need to modify several targets in -the Makefile in the top-level directory to correctly compile your BE into a -library and to correctly link it in with the CFE to produce a complete -compiler. - -You can get started quickly on writing your BE by modifying the sources -found in the "demo_be" directory. The Makefile supports all the the targets -that are needed to build a complete system and the maintenance target -"clean" which assists in keeping the files and directories tidy. The files -provided in the "demo_be" directory also provide all the API entry points -that are mandated by this document. - -To build a complete compiler, invoke "make" or "make all" in the top-level -directory. This will compile your BE and all the CFE sources, if this is -the first invocation. On subsequent invocations this will recompile only -the modified files. You will rarely if at all modify the CFE sources, so -the overhead of compiling the CFE is incurred only the first time. To build -just your BE, you can invoke "make all" or "make" in the "demo_be" -directory. You can also, from the top-level directory, invoke "make -demo_be/libbe.a". - -HOW TO OBTAIN ASSISTANCE ------------------------- - -First, read all the documents provided. If you have unanswered questions, -mail them to - - idl-cfe@sun.com - -Sun does not promise to support the IDL CFE source release in any manner. -However, we will attempt to answer questions and correct problems as time -allows. - -NOTE: - -SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are -trademarks or registered trademarks of Sun Microsystems, Inc. - -COPYRIGHT NOTICE ----------------- - -Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United -States of America. All Rights Reserved. - -This product is protected by copyright and distributed under the following -license restricting its use. - -The Interface Definition Language Compiler Front End (CFE) is made -available for your use provided that you include this license and copyright -notice on all media and documentation and the software program in which -this product is incorporated in whole or part. You may copy and extend -functionality (but may not remove functionality) of the Interface -Definition Language CFE without charge, but you are not authorized to -license or distribute it to anyone else except as part of a product or -program developed by you or with the express written consent of Sun -Microsystems, Inc. ("Sun"). - -The names of Sun Microsystems, Inc. and any of its subsidiaries or -affiliates may not be used in advertising or publicity pertaining to -distribution of Interface Definition Language CFE as permitted herein. - -This license is effective until terminated by Sun for failure to comply -with this license. Upon termination, you shall destroy or return all code -and documentation for the Interface Definition Language CFE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF -ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS -FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF -DEALING, USAGE OR TRADE PRACTICE. - -INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT -ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES -TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. - -SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH -RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY -INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. - -IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR -ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL -DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -Use, duplication, or disclosure by the government is subject to -restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in -Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR -52.227-19. - -Sun, Sun Microsystems and the Sun logo are trademarks or registered -trademarks of Sun Microsystems, Inc. - -SunSoft, Inc. -2550 Garcia Avenue -Mountain View, California 94043 |