1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00
samba-mirror/source/pidl
Tim Potter c2ad9f49a2 r9734: The ethereal parser generator was generating duplicate functions for
fields in structures with the same name as a structure (i.e
security_ace.object and security_ace_object).  I've twiddled the naming
scheme a bit and things are a bit more unique but there is still may be
some naming conflicts in other IDL files.

We are now getting confused over fields with the same name in unions
(e.g security_ace_object_ctr.object) plus some other union weirdness.
2007-10-10 13:34:55 -05:00
..
lib/Parse r9734: The ethereal parser generator was generating duplicate functions for 2007-10-10 13:34:55 -05:00
tests r9459: Move pidl up one level (to prevent too much nesting) 2007-10-10 13:34:17 -05:00
idl.yp r9459: Move pidl up one level (to prevent too much nesting) 2007-10-10 13:34:17 -05:00
Makefile.PL r9462: Fix locations for generating the yapp files 2007-10-10 13:34:18 -05:00
pidl r9576: Couple of small fixes. Generate notice indicating 2007-10-10 13:34:30 -05:00
pidl.1.xml r9459: Move pidl up one level (to prevent too much nesting) 2007-10-10 13:34:17 -05:00
README r9460: - Move pidl to lib/. This fixes standalone installation of pidl. 2007-10-10 13:34:17 -05:00
ref_notes.txt r9459: Move pidl up one level (to prevent too much nesting) 2007-10-10 13:34:17 -05:00
smb_interfaces.pm r9459: Move pidl up one level (to prevent too much nesting) 2007-10-10 13:34:17 -05:00
smb_interfaces.yp r9459: Move pidl up one level (to prevent too much nesting) 2007-10-10 13:34:17 -05:00
TODO r9459: Move pidl up one level (to prevent too much nesting) 2007-10-10 13:34:17 -05:00

Introduction:
=============
This directory contains the source code of the pidl (Perl IDL) 
compiler. 

pidl is the main file of pidl.

Pidl works by building a parse tree from a .pidl file (a simple 
dump of it's internal parse tree) or a .idl file 
(a file format mostly like the IDL file format midl uses). 
The IDL file parser is in idl.yp (a yacc file converted to 
perl code by yapp)

After a parse tree is present, pidl will call one of it's backends 
(which one depends on the options given on the command-line). Here is 
a list of current backends:

Standalone installation:
========================
Run Makefile.PL to generate the Makefile. 

Then run "make install" (as root) to install.

Documentation:
==============
Run 'make doc' to generate the manpage and a HTML version of the manpage.
This requires the xsltproc utility to be installed.

Internals overview:
===================

-- Generic --
Parse::Pidl::Dump - Converts the parse tree back to an IDL file
Parse::Pidl::Samba::Header - Generates header file with data structures defined in IDL file
Parse::Pidl::NDR - Generates intermediate datastructures for use by NDR parses/generators
Parse::Pidl::ODL - Generates IDL structures from ODL structures for use in the NDR parser generator
Parse::Pidl::Test - Utility functions for use in pidl's testsuite

-- Samba NDR --
Parse::Pidl::Samba::NDR::Client - Generates client call functions in C using the NDR parser
Parse::Pidl::Samba::SWIG - Generates SWIG interface files (.i)
Parse::Pidl::Samba::NDR::Header - Generates a header file with NDR-parser specific data
Parse::Pidl::Samba::NDR::Parser - Generates pull/push functions for parsing NDR
Parse::Pidl::Samba::NDR::Server - Generates server side implementation in C
Parse::Pidl::Samba::TDR - Parser generator for the "Trivial Data Representation"
Parse::Pidl::Samba::Template - Generates stubs in C for server implementation
Parse::Pidl::Samba::EJS - Generates bindings for Embedded JavaScript (EJS)
Parse::Pidl::Samba::EJSHeader - Generates headers for the EJS bindings

-- Samba COM / DCOM --
Parse::Pidl::Samba::COM::Proxy - Generates proxy object for DCOM (client-side)
Parse::Pidl::Samba::COM::Stub - Generates stub call handler for DCOM (server-side)
Parse::Pidl::Samba::COM::Header - Generates header file for COM interface(s)

-- Ethereal --
Parse::Pidl::Ethereal::NDR - Generates a parser for the ethereal network sniffer
Parse::Pidl::Ethereal::Conformance - Reads conformance files containing additional data for generating Ethereal parsers

-- Utility modules --
Parse::Pidl::Util - Misc utility functions used by *.pm and pidl.pl
Parse::Pidl::Typelist - Utility functions for keeping track of known types and their representation in C

Tips for hacking on pidl:
 - Look at the pidl's parse tree by using the --keep option and looking 
   at the generated .pidl file. 
 - The various backends have a lot in common, if you don't understand how one 
   implements something, look at the others
 - See pidl(1) and the documentation on midl
 - See 'info bison' and yapp(1) for information on the file format of idl.yp