summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README75
1 files changed, 75 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..146f893
--- /dev/null
+++ b/README
@@ -0,0 +1,75 @@
+ 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)))