1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00
samba-mirror/source4/pidl
Jelmer Vernooij 2a9407fad3 r15593: Warn about [out] arguments that are not pointers. These can all be
fixed by adding [ref] pointers.

This will cause a lot of warnings to be outputted by pidl for now. I will
fix these gradually over the next few days.

We need to avoid [out] arguments that are not pointers because they are
not understood by other IDL compilers and don't work with some of
our output modules (Samba3, Samba3NDR and ethereal)
(This used to be commit c4ab021ee8)
2007-10-10 14:06:02 -05:00
..
lib/Parse r15593: Warn about [out] arguments that are not pointers. These can all be 2007-10-10 14:06:02 -05:00
tests r14867: Include <stdbool.h> in external compiles 2007-10-10 13:59:44 -05:00
idl.yp r12481: Move parser-specific utility functions to idl.yp, remove some unused functions 2007-10-10 13:47:43 -05:00
Makefile.PL r10380: Use pod-style documentation rather then XML-doc, in good perl style. 2007-10-10 13:38:34 -05:00
MANIFEST r12501: Merge EJSHeader.pm into EJS.pm and simplify smbcalls_rpc.c a bit, 2007-10-10 13:47:46 -05:00
pidl r15585: Revive pidl's SWIG file generator. It now generates simple 2007-10-10 14:06:00 -05:00
README r12573: Update README to recent changes in pidls namespace 2007-10-10 13:48:55 -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 r14727: Update pidls' TODO, add test that demonstrates the desired behaviour 2007-10-10 13:59:14 -05:00

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

The main sources for pidl are available by Subversion on
svn+ssh://svnanon.samba.org/samba/branches/SAMBA_4_0/source/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.

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

-- Generic --
Parse::Pidl::Dump - Converts the parse tree back to an IDL file
Parse::Pidl::Samba4::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::Samba4::NDR::Client - Generates client call functions in C using the NDR parser
Parse::Pidl::Samba4::SWIG - Generates SWIG interface files (.i)
Parse::Pidl::Samba4::NDR::Parser - Generates pull/push functions for parsing NDR
Parse::Pidl::Samba4::NDR::Server - Generates server side implementation in C
Parse::Pidl::Samba4::TDR - Parser generator for the "Trivial Data Representation"
Parse::Pidl::Samba4::Template - Generates stubs in C for server implementation
Parse::Pidl::Samba4::EJS - Generates bindings for Embedded JavaScript (EJS)

-- Samba COM / DCOM --
Parse::Pidl::Samba4::COM::Proxy - Generates proxy object for DCOM (client-side)
Parse::Pidl::Samba4::COM::Stub - Generates stub call handler for DCOM (server-side)
Parse::Pidl::Samba4::COM::Header - Generates headers for COM

-- 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