Skip to content

openEuler-BaseService/libIDL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

bd56b08 · Jan 18, 2021
May 14, 2013
Aug 31, 2009
Apr 28, 2003
Feb 19, 1999
Nov 30, 2009
Feb 26, 2007
Sep 1, 2007
Jan 18, 2021
Oct 28, 2009
Mar 30, 2010
Apr 25, 1999
May 20, 2008
Oct 28, 2009
Jan 29, 2008
Jan 18, 2021
Jun 5, 2008
Jan 21, 2004
Sep 24, 2001
Dec 10, 2020
Feb 23, 2005
May 20, 2008
Jul 31, 2014
Feb 2, 2004
Apr 5, 2006
Sep 19, 2001
Jul 14, 2000
Dec 2, 2008
Dec 5, 1998
Jan 21, 2004
Jan 22, 2009
May 20, 2008

Repository files navigation

			libIDL README
			~~~~~~~~~~~~~

Introduction
~~~~~~~~~~~~

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.  Currently, flex is required to generate the lexical
scanner.

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.

If you are upgrading to a new version, please see the NEWS file for
any changes which may affect code.


Emacs Syntax Highlighting for IDL Code
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you are using Emacs 20.x and do not have decent syntax highlighting
in your IDL mode, you can use the following Emacs lisp to add
IDL-specific highlighting using font-lock mode:

(font-lock-add-keywords
 'idl-mode
 `(("^#[ 	]*error[ 	]+\\(.+\\)" 1 'font-lock-warning-face prepend)
   ("^#[ 	]*\\(include\\)[ 	]+\\(<[^>\"\n]*>?\\)" 2 'font-lock-string-face)
   ("^#[ 	]*define[ 	]+\\(\\sw+\\)(" 1 'font-lock-function-name-face)
   ("^#[ 	]*\\(elif\\|if\\)\\>"
    ("\\<\\(defined\\)\\>[ 	]*(?\\(\\sw+\\)?" nil nil
     (1 'font-lock-reference-face)
     (2 'font-lock-variable-name-face nil t)))
   ("\\(__declspec\\)[ 	]*(\\([^)]+\\))"
    (1 'font-lock-reference-face)
    (2 'font-lock-variable-name-face))
   ("^#[ 	]*\\(\\sw+\\)\\>[ 	]*\\(\\sw+\\)?"
    (1 'font-lock-reference-face)
    (2 'font-lock-variable-name-face nil t))
   ("\\<\\(raises\\)\\>" 1 'font-lock-keyword-face)
   ("[ 	]*\\([A-Za-z][A-Za-z0-9_]*\\)[ 	]*(" 1 'font-lock-function-name-face)
   ("\\<\\(any\\|boolean\\|char\\|const\\|double\\|enum\\|fixed\\|float\\|interface\\|long\\|module\\|native\\|octet\\|Object\\|sequence\\|short\\|string\\|struct\\|unsigned\\|union\\|void\\|wchar\\|wstring\\)\\>" 1 'font-lock-type-face)
   ("\\<\\(attribute\\|case\\|context\\|default\\|exception\\|FALSE\\|in\\|inout\\|oneway\\|out\\|readonly\\|switch\\|TRUE\\|typedef\\)\\>" 1 'font-lock-keyword-face)) 'set)
(add-hook 'idl-mode-hook '(lambda () (font-lock-mode 1)))