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
Jelmer Vernooij 31403d548e r3043: Use binding strings for specifying endpoints. The property for
specifying a endpoint is now also 'endpoint' instead of 'endpoints'. The
default endpoint (if none is specified) is still "ncacn_np:[\\pipe\\ifacename]",
where ifacename is the name of the interface.

Examples:

[
  uuid(60a15ec5-4de8-11d7-a637-005056a20182),
  endpoint("ncacn_np:[\\pipe\\rpcecho]", "ncacn_ip_tcp:")
]
interface rpcecho
{
	void dummy();
}

dcerpc_binding is now converted to ep_description in the server, but I hope to
completely eliminate ep_description later on.

The eventual goal of all these changes is to make it easier to add
 transports as I'm going to add support for
 ncalrpc (local RPC over named pipes) and ncacn_unix_stream (Unix sockets).
(This used to be commit f3da7c8b44)
2007-10-10 13:01:53 -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 r2973: Allow comma's inside parentheses in property arguments 2007-10-10 12:59:53 -05:00
idl.yp r2973: Allow comma's inside parentheses in property arguments 2007-10-10 12:59:53 -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 r3043: Use binding strings for specifying endpoints. The property for 2007-10-10 13:01:53 -05:00
pidl.pl r2777: Correctly abort if an idl file fails to parse. Bloody perl... 2007-10-10 12:59:32 -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 r3022: Work on unmarshalling arrays of structs in a buffer (Python string) for 2007-10-10 12:59:59 -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 r2987: added support for signed 32 bit integers in pidl 2007-10-10 12:59:54 -05:00
validator.pm r2735: More DCOM updates: 2007-10-10 12:59:27 -05: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