mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
adbb1612c1
upstream sources. This makes it much easier to keep it up to date. I will separate out the mpr code into lib/appweb/mpr next (This used to be commit 52db7a052baeb0f11361ed69b71cb790039e3cc9)
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: -- Generic -- dump.pm - Converts the parse tree back to an IDL file validator.pm - Validates the parse tree -- DCE/RPC+NDR -- ndr.pm - Generates intermediate datastructures for use by NDR parses/generators ndr_client.pm - Generates client call functions in C using the NDR parser eth_parser.pm - Generates a parser for the ethereal network sniffer eth_header.pm - Generates a header for ethereal swig.pm - Generates SWIG interface files (.i) ndr_header.pm - Generates a header file with structures ndr_parser.pm - Generates pull/push functions for parsing NDR server.pm - Generates server side implementation in C template.pm - Generates stubs in C for server implementation ejs.pm - Generates bindings for Embedded JavaScript (EJS) ejs_header.pm - Generates headers for the EJS bindings -- COM / DCOM -- odl.pm - Generates IDL structures from ODL structures for use in the NDR parser generator dcom_proxy.pm - Generates proxy object for DCOM (client-side) dcom_stub.pm - Generates stub call handler for DCOM (server-side) com_header.pm - Generates header file for COM interface(s) -- Utility modules -- 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 typelist.pm - 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