wireshark/tools/pidl
Guy Harris 62eb424d80 Copy over change from Samba repository:
commit ed11ce8f12d567a3e0edc1d24aab1784a171ac33
  Author: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
  Date:   Wed May 4 16:51:37 2016 +1200

    Python pidl: avoid segfault with "del obj->attr"

    Deleting an attribute in Python (using the "del" statement) is (at
    some stages along a winding path, for C objects) converted into
    setting the attribute to NULL. Not None, actual NULL. The way we
    handled this NULL was to dereference it. This changes the behaviour to
    raising an AttributeError, which is more or less what Python does in
    similar situations with builtin objects.

    Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
    Reviewed-by: Andrew Bartlett <abartlet@samba.org>

Shouldn't affect us, but it makes diffing cleaner.

Change-Id: I8e681dc79c8f4e62b74e2aa5ac2b4924134735c4
Reviewed-on: https://code.wireshark.org/review/16741
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2016-07-27 23:22:47 +00:00
..
lib Copy over change from Samba repository: 2016-07-27 23:22:47 +00:00
tests Fix from the Samba repository: 2016-07-27 22:07:56 +00:00
MANIFEST
META.yml
Makefile.PL
README Update to the latest version from the Samba Git repository. 2014-09-26 19:02:42 +00:00
TODO Copy over the current WIP from samba.org::ftp/unpacked/samba_4_0_test/pidl 2013-11-06 22:48:50 +00:00
expr.yp
idl.yp Copy over the current WIP from samba.org::ftp/unpacked/samba_4_0_test/pidl 2013-11-06 22:48:50 +00:00
pidl PIDL: sync pidl with samba repo 2016-02-29 21:01:13 +00:00
wscript PIDL: sync pidl with samba repo 2016-02-29 21:01:13 +00:00

README

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

The main sources for pidl are available using Git as part of
the Samba source tree. Use:
git clone git://git.samba.org/samba.git

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)

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

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

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

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 --
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::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::Python - Generates bindings for Python

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

-- Wireshark --
Parse::Pidl::Wireshark::NDR - Generates a parser for the Wireshark network sniffer
Parse::Pidl::Wireshark::Conformance - Reads conformance files containing additional data for generating Wireshark 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:
 - Inspect 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
 - Run the tests (all in tests/)