diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2010-03-30 10:37:10 +0000 |
---|---|---|
committer | <> | 2012-11-09 11:51:07 +0000 |
commit | 90b031ba3fa3309985c562775ce8a44f5cb7655c (patch) | |
tree | 4b2bdbf3dabd0e042ad33fb28640ded1879c49f0 /libIDL2.info | |
download | libIDL-90b031ba3fa3309985c562775ce8a44f5cb7655c.tar.gz |
Imported from /home/lorry/working-area/delta_libIDL/libIDL-0.8.14.tar.gz.HEADlibIDL-0.8.14master
Diffstat (limited to 'libIDL2.info')
-rw-r--r-- | libIDL2.info | 351 |
1 files changed, 351 insertions, 0 deletions
diff --git a/libIDL2.info b/libIDL2.info new file mode 100644 index 0000000..1cca01b --- /dev/null +++ b/libIDL2.info @@ -0,0 +1,351 @@ +This is libIDL2.info, produced by makeinfo version 4.12 from +libIDL2.texi. + +INFO-DIR-SECTION Libraries +START-INFO-DIR-ENTRY +* libIDL2: (libIDL2). Interface Definition Language parsing library. +END-INFO-DIR-ENTRY + + Copyright 1998 Andrew T. Veliath + + +File: libIDL2.info, Node: Top, Up: (dir) + + This file documents the Interface Definition Language (IDL) parsing +library, libIDL. + + This document applies to version 0.6 of libIDL. It is still +incomplete. + +* Menu: + +* Overview:: General overview. +* Example:: Simple example. +* Reference:: Data structure and function reference. + +* Function Index:: Index of available functions. + + +File: libIDL2.info, Node: Overview, Next: Example, Prev: Top, Up: Top + +1 Overview +********** + +libIDL is a library licensed under the GNU LGPL for creating trees of +CORBA Interface Definition Language (IDL) files, which is a +specification for defining portable interfaces. libIDL was initially +written for ORBit (the ORB from the GNOME project, and the primary +means of libIDL distribution). However, the functionality was designed +to be as reusable and portable as possible. + + It is written in C, and the aim is to retain the ability to compile +it on a system with a standard C compiler. Preprocessed parser files +are included so you are not forced to rebuild the parser, however an +effort is made to keep the parser and lexer compatible with standard +Unix yacc and lex (although bison and flex are more efficient, and are +used for the preprocessed parsers in the distribution). + + With libIDL, you can parse an IDL file which will be automatically +run through the C preprocessor (on systems with one available), and have +detailed error and warning messages displayed. On a compilation +without errors, the tree is returned to the custom application. libIDL +performs compilation phases from lexical analysis to nearly full +semantic analysis with some optimizations, and will attempt to generate +meaningful errors and warnings for invalid or deprecated IDL. + + libIDL exports functionality used to generate detailed conforming +error and warning messages in gcc-like format, and also comes with a +default backend to generate IDL into a file or string (useful for +customized messages or comments in the output). The IDL backend is +complete enough that most generated IDL can be reparsed by libIDL +without errors. libIDL returns separate syntax and namespace trees, and +includes functionality to hide syntactical information from the primary +tree, while keeping it accessible through the namespace for type +information and name lookup. + + Optional extensions to standard IDL can be enabled using parse flags. +These include node properties, embedded code fragments, and XPIDL. +Nodes can also have declarations tags which assign particular +attributions to certain IDL constructs to further facilitate custom +applications. + + +File: libIDL2.info, Node: Example, Next: Reference, Prev: Overview, Up: Top + +2 Usage +******* + +The following C program using libIDL will parse an IDL file and print +the Repository IDs of the interfaces in the IDL module. + + #include <assert.h> + #include <stdio.h> + #include <stdlib.h> + #include <libIDL/IDL.h> + + gboolean + print_repo_id (IDL_tree_func_data *tfd, gpointer user_data) + { + char *repo_id = NULL; + + if (IDL_NODE_TYPE (tfd->tree) == IDLN_INTERFACE) + repo_id = IDL_IDENT_REPO_ID (IDL_INTERFACE (tfd->tree).ident); + + if (repo_id) + printf ("%s\n", repo_id); + + return TRUE; + } + + int + main (int argc, char *argv[]) + { + IDL_tree tree; + IDL_ns ns; + char *fn; + int rv; + + if (argc < 2) { + fprintf (stderr, "usage: %s <file>\n", argv[0]); + exit (1); + } + fn = argv[1]; + + rv = IDL_parse_filename (fn, NULL, NULL, &tree, &ns, 0, IDL_WARNING1); + + if (rv == IDL_ERROR || rv < 0) { + if (rv < 0) + perror (fn); + exit (1); + } + IDL_tree_walk_in_order (tree, print_repo_id, NULL); + IDL_ns_free (ns); + IDL_tree_free (tree); + + return 0; + } + + +File: libIDL2.info, Node: Reference, Next: Function Index, Prev: Example, Up: Top + +3 Reference +*********** + +* Menu: + +* Data Types:: Constructed data types used. +* Functions:: Functions provided. +* Extensions:: Extensions provided to standard IDL. +* Tree Structure:: The C IDL tree representation. + + +File: libIDL2.info, Node: Data Types, Next: Functions, Up: Reference + +4 Data Types +************ + + * IDL_tree + + A semi-opaque tree which encapsulates an IDL tree node. Must be + freed with IDL_tree_free (*note Functions::). + + * IDL_ns + + A semi-opaque structure which encapsulates the IDL module + namespace. Must be freed with IDL_ns_free (*note Functions::). + + * IDL_msg_callback + + Defined as typedef int (*IDL_msg_callback)(int LEVEL, int NUM, int + LINE, const char *NAME, const char *ERR). A function of this type + can be optionally passed to IDL_parse_filename to be called when a + parse warning or error occurs. + + * IDL_tree_func + + Defined as typedef gboolean (*IDL_tree_func) (IDL_tree_func_data + *TREE_FUNC_DATA, gpointer DATA). A function of this type is + passed to IDL_tree_walk_in_order to traverse the tree. + TREE_FUNC_DATA contains an up traversal hierarchy of the current + traversal, as well as some state information. The current node + being processed is given by TREE_FUNC_DATA->tree. + + + +File: libIDL2.info, Node: Functions, Next: Extensions, Prev: Data Types, Up: Reference + +5 Functions +*********** + + * Function: int IDL_parse_filename (const char *NAME, const char + *CPP_ARGS, IDL_msg_callback CALLBACK, IDL_tree *TREE, IDL_ns *NS, + unsigned long FLAGS, int MAX_MESSAGE_LEVEL) + + Parse an file containing an IDL definition into a parse tree. + Returns IDL_SUCCESS if successful, or IDL_ERROR if there was a + parse error. If -1 is returned, errno will be set accordingly. + Usually, if IDL_ERROR is returned, all one needs to do is exit + with a non-zero status, since libIDL will probably have made the + reason for failure explictly known. + + - NAME: required, specifies the filename to be parsed. + + - CPP_ARGS: optional, if non-NULL, specifies extra arguments to + pass to the C preprocessor. The most common type of string + would be in the form of -I<dir> to include additional + directories for file inclusion search, or defines in the form + of -D<define>=<value>. + + - CALLBACK: optional, if non-NULL, this function will be called + when a warning or error is generated (*note Data Types::). + If not given, warnings and errors will be sent to stderr. + All errors and warning, including callbacks, are subject to + MAX_MESSAGE_LEVEL as described below. + + - TREE: optional, if non-NULL, points to an IDL_tree * to + return the generated tree which must be freed with + IDL_tree_free. If NULL, the tree is freed and not returned. + + - NS: optional, if non-NULL, points to an IDL_ns * to return + the namespace tree which must be freed with IDL_ns_free. If + NULL, the tree is freed and not returned. If TREE is NULL, + then NS must also be NULL, since the namespace is created as + the AST is generated. + + - FLAGS: optional, specifies extra flags for parsing or 0. The + various flags are described here. + + - General Parse Flags + + - IDLF_NO_EVAL_CONST: instructs the parser not to evaluate + constant expressions. + + - IDLF_COMBINE_REOPENED_MODULES: instructs the parser to + combine modules defined later in the IDL code in the + first module node in the tree. + + - IDLF_PREFIX_FILENAME: instructs the parser to prefix the + filename to the namespace. + + - IDLF_IGNORE_FORWARDS: instructs the parser to not try to + resolve and print messages for unresovled forward + declarations. + + - IDLF_PEDANTIC: instructs the parser to display stricter + errors and warnings. + + - IDLF_INHIBIT_TAG_ONLY: only tag inhibited nodes, do not + remove them. Use IDL_tree_remove_inhibits to remove + them at a later time. + + - IDLF_INHIBIT_INCLUDES: causes libIDL to automatically + inhibit IDL trees in included files. + + - Syntax Extension Flags + + - IDLF_TYPECODES: understand the `TypeCode' keyword + extension. + + - IDLF_XPIDL: enable XPIDL syntax. + + - IDLF_PROPERTIES: enable support for node properties. + + - IDLF_CODEFRAGS: enable support for embedded code + fragments. + + - MAX_MESSAGE_LEVEL: + + This specifies the maximum message level to display. + Possible values are -1 for no messages, IDL_ERROR for errors + only, or IDL_WARNING1, IDL_WARNING2 and IDL_WARNING3. A + typical value is IDL_WARNING1, which will limit verbosity. + IDL_WARNINGMAX is defined as the value in which all messages + will be displayed. + + + * Function: void IDL_tree_walk_in_order (IDL_tree ROOT, IDL_tree_func + FUNC, gpointer DATA) + + Walks an IDL_tree, calling FUNC for every node. If the FUNC + returns TRUE for a particular node, that particular node will also + be traversed, if FALSE is returned, that particular node will be + skipped, in the assumption that the function has taken care of it. + + - ROOT: required, specifies the IDL_tree to traverse. + + - FUNC: required, specifies the callback function (*note Data + Types::). + + - DATA: optional, specifies the callback data. + + + * Function: void IDL_tree_free (IDL_tree TREE) + + Frees the memory associated with TREE. + + * Function: void IDL_ns_free (IDL_ns NS) + + Frees the memory associated with NS. + + + +File: libIDL2.info, Node: Extensions, Next: Tree Structure, Prev: Functions, Up: Reference + +6 Extensions +************ + +This page documents extensions to standard IDL which libIDL will +understand. To maintain portability, it is recommended that these +extensions are only used with some sort of C preprocessor define so they +can be conditionally omitted. + + * __declspec (<spec>) + + This token assigns special attributions to particular IDL + constructs. + + - inhibit + + If __declspec (inhibit) is placed before a definition or + export, that module or interface definition will be removed + from the tree. The tree is only deleted when the IDL_ns + component is freed, so it can be traversed from the namespace + component for extended information, but will be omitted from + the primary tree. + + + + +File: libIDL2.info, Node: Tree Structure, Prev: Extensions, Up: Reference + +7 Tree Structure +**************** + + +File: libIDL2.info, Node: Function Index, Prev: Reference, Up: Top + +8 Function Index +**************** + + +* Menu: + +* IDL_ns_free: Functions. (line 112) +* IDL_parse_filename: Functions. (line 8) +* IDL_tree_free: Functions. (line 108) +* IDL_tree_walk_in_order: Functions. (line 93) + + + +Tag Table: +Node: Top254 +Node: Overview700 +Node: Example2933 +Node: Reference4146 +Node: Data Types4507 +Node: Functions5580 +Node: Extensions10139 +Node: Tree Structure11004 +Node: Function Index11119 + +End Tag Table |