1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00
samba-mirror/source4/build/pidl
2007-10-10 12:58:37 -05:00
..
client.pm r2100: rework the dcerpc client side library so that it is async. We now 2007-10-10 12:58:24 -05:00
dump.pm r1736: - Pidl updates: 2007-10-10 12:57:51 -05:00
eparser.pm r2222: Generate correct function prototypes for unions marked as public. 2007-10-10 12:58:32 -05:00
header.pm r1909: nicer format 2007-10-10 12:58:10 -05:00
idl.gram make sure there is at least one valid interface in an IDL file 2003-11-28 05:32:40 +00:00
idl.pm r1838: Updates from the airplane: 2007-10-10 12:58:00 -05:00
idl.yp r1838: Updates from the airplane: 2007-10-10 12:58:00 -05:00
includes.h r1767: Checkin of workarea. Sorry Jelmer but this overwrites some of your changes 2007-10-10 12:57:55 -05:00
Makefile r1736: - Pidl updates: 2007-10-10 12:57:51 -05:00
moduleinfo.c r1767: Checkin of workarea. Sorry Jelmer but this overwrites some of your changes 2007-10-10 12:57:55 -05:00
parser.pm r1786: Add support for the 'helpstring' attribute on interfaces 2007-10-10 12:57:56 -05:00
pidl.pl r2253: Add test program, as small example of what's going on. 2007-10-10 12:58:35 -05:00
README r1867: Add README file in build/pidl/ 2007-10-10 12:58:04 -05:00
server.pm r1872: revert -r 1845 because the caling function should look at the fault_code 2007-10-10 12:58:06 -05:00
swig.pm r2277: Generate stubs for input and output typemaps. 2007-10-10 12:58:37 -05:00
tables.pl make dcerpc_pipes[] completely const. 2004-01-22 01:29:44 +00:00
template.pm r464: a big improvement to the API for writing server-side RPC 2007-10-10 12:51:44 -05:00
util.pm r1736: - Pidl updates: 2007-10-10 12:57:51 -05:00
validator.pm added code to the IDL validator to check for common errors with 2003-12-19 00:40:40 +00:00

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

pidl.pl 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:

client.pm - Generates client call functions in C
dump.pm - Converts the parse tree back to an IDL file
eparser.pm - Generates a parser for the ethereal network sniffer
header.pm - Generates a header file with structures
parser.pm - Generates pull/push functions for parsing 
server.pm - Generates server side implementation in C
template.pm - Generates stubs in C for server implementation
validator.pm  - Validates the parse tree

Other files in this directory are:
tables.pl - Generates a table of available interfaces from a list of IDL files 
util.pm - Misc utility functions used by *.pm and pidl.pl

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