Age | Commit message (Collapse) | Author | Files | Lines |
|
The main difference in this new version is the extra data structure generated
between the IDL data structure and the NDR parser:
IDL -> NDR -> { ndr_parser, ndr_header, eparser, etc }
This makes the ndr_parser.pm internals much more sane.
Other changes include:
- Remove unnecessary calls with NDR_BUFFERS (for example, GUID doesn't have any buffers, just scalars) as well as some (unnecessary) nested setting of flags.
- Parse array loops in the C code rather then calling ndr_pull_array(). This allows us to have, for example, arrays of pointers or arrays of pointers to arrays, etc..
- Use if() {} rather then if () goto foo; everywhere
- NDR_IN no longer implies LIBNDR_FLAG_REF_ALLOC
- By default, top level pointers are now "ref" (as is the default in
most other IDL compilers). This can be overridden using the
default_pointer_top() property.
- initial work on new ethereal parser generators by Alan DeKok and me
- pidl now writes errors in the standard format used by compilers, which
is parsable by most editors
- ability to warn about the fact that pidl extension(s) have been used,
useful for making sure IDL files work with other IDL compilers.
oh, and there's probably some other things I can't think of right now..
(This used to be commit 13cf227615f6b9e0e5fa62e59197024410254f01)
|
|
- Warn about unknown attributes in .mk
- Remove more unused functions
(This used to be commit 6bf8126ae9368dc56cf0cd91b972a2d939974679)
|
|
Some work on a testsuite for pidl, including one simple test.
(This used to be commit a5aa61f54ea20f0b400359f9b3119f0ff0720431)
|
|
and NDR headers
(This used to be commit 421e7feee96ebda1bf92814e06257d728ea2b1e5)
|
|
I'm going to add a ndr.pm later on that'll generate a
tree with necessary information for the two NDR backends
(eparser, ndr_parser) containing alignment info, etc.
(This used to be commit 5162daa9464cd64930f5a8fd0d7b381b122c931d)
|
|
- Keep COM and DCOM more seperated
(This used to be commit f694f484c422d0c86beb58e8f62f134f8676d5e1)
|
|
- Makes union handling less special
- Allows unions in arrays, etc
- Compatible with midl
- Pidl will warn about switch_type() and the type of the switch_is() variable being different
(This used to be commit dc6b4ffc82a191631bc16a4b93a4916a39183ec6)
|
|
(This used to be commit 09a9222b600d58271f42ee0870e0c933d2e105d0)
|
|
DCOM paper in lorikeet. This is the result of 1.5 months work (mainly
figuring out how things *really* work) at the end of 2004.
In general:
- Clearer distinction between COM and DCOM. DCOM is now merely
the glue between DCE/RPC+ORPC and COM. COM can also work without
DCOM now. This makes the code a lot clearer.
- Clearer distinction between NDR and DCOM. Before, NDR had a couple of
"if"s to cope with DCOM, which are now gone.
- Use "real" arguments rather then structures for function arguments in
COM, mainly because most of these calls are local so packing/unpacking
data for every call is too much overhead (both speed- and code-wise)
- Support several mechanisms to load class objects:
- from memory (e.g. part of the current executable, registered at start-up)
- from shared object files
- remotely
- Most things are now also named COM rather then DCOM because that's what it
really is. After an object is created, it no longer matters whether it
was created locally or remotely.
There is a very simple example class that contains
both a class factory and a class that implements the IStream interface.
It can be tested (locally only, remotely is broken at the moment)
by running the COM-SIMPLE smbtorture test.
Still to-do:
- Autogenerate parts of the class implementation code (using the coclass definitions in IDL)
- Test server-side
- Implement some of the common classes, add definitions for common interfaces.
(This used to be commit 71fd3e5c3aac5f0002001ab29d2248e6c6842d6f)
|
|
The ODL module can convert an ODL structure to an IDL structure so that:
- The COM subsystem can use the ODL structure
- The DCE/RPC subsystem can use the IDL structure
(This used to be commit a339765d99c90c46f29e2bd71a6aa271febb096d)
|
|
- Remember INTERFACEs as well (they can be types in DCOM)
(This used to be commit d914cd1804636eb1a34805d48c18e016835e973b)
|
|
parser.pm (now renamed to ndr.pm).
(This used to be commit a469a5fefb4e6941264c11f4bde60eab71f6f7aa)
|
|
(This used to be commit a1c98101e4ebdcc4a9504d401a9d34c88c797e6e)
|
|
metze
(This used to be commit 030bfd8d7feb16fd6d5117d17913b77b1468a507)
|
|
(This used to be commit 425b988541fa669e7f2905fe959522f2d2d50da1)
|
|
(This used to be commit c252a286efcb9ca2024c8d234c8a65855522fb25)
|
|
Start working on adding support for bitmaps and enums.
In progress tweaks for arrays of structures.
(This used to be commit d39cb7ecb4c193cbba628ee6d6f9b5c5bbf89d33)
|
|
based on the idea of manipulating the .c and .h files generated by
parser.pm with perl regexps and glueing it all together to make an
ethereal plugin.
I thought this was a pretty crazy idea to start off with but it has
turned out to be not as complicated as I thought and has the huge advantage
of not duplicating any of the difficult code in parser.pm.
(This used to be commit 7007522f83740f41f9a47f5ad5942ea46320d405)
|
|
This reduces the total size of the samba binaries from 119 Mb to 73 Mb.
Next step will be to have the build system obtain some of this information
by itself, so that we don't have to write ~10 lines per interface manually.
(This used to be commit 16d905f6b0cbec591eebc44ee2ac9516a5730378)
|
|
- Add some const
(This used to be commit a00bda88e1b6abdc36e5aa8c2a35f64855f67c96)
|
|
- Work on server side and local COM support (should work, just no
example classes yet)
- Use vtables so that local and remote calls can be used transparently
- Generate 'proxies and stubs' rather then heavily modified code in client.pm and server.pm. proxies (client side code) are generated in proxy.pm, stubs (server side dispatchers) are generated in stubs.pm
- Support registering classes and interfaces
- DCOM interfaces no longer have to be in the same IDL file as their
base interface, which will allow us to split up dcom.idl
(This used to be commit 7466947a23985f9bb15209b67880f7b94dc515c8)
|
|
(This used to be commit 8e25117103b0339441bc6328176ed34034005528)
|
|
(This used to be commit 35ff140b43b353a8848e417bb309046605e98085)
|
|
standard
doesn't allow them to! I think the idea is that you just create a new
interface that inherits your old interface, thus ensuring backwards-compatibility)
Re-enable to validator
(This used to be commit e364e46a88e5a222c94cdb9cf8e7a124e43f0bcf)
|
|
(This used to be commit fd31ae38dfe2d005b3e01ac059c2e15fa389aad4)
|
|
--eparser.
(This used to be commit 68b10c4aeebc4aa1225aab3c8a9fc0a4d28d6455)
|
|
- Support for "object oriented" interfaces in pidl
- Support for inherited interfaces in pidl
- Simplification of the support for properties on an interface
- Start on dcom rpc torture tests
(This used to be commit 45c3d0036b8510102816f9cdff9210098259cc5f)
|
|
Delete various hacks to work around not doing this before.
(This used to be commit 5c3c3d3e72d8dd5d995a5bc5b2c7d7217b7c0432)
|
|
(This used to be commit 3df8ff6cf111c6601554bffb411506bd43f726c7)
|
|
base it on the generator for the ndr pull/push code rather than trying
to get all the alignment and other junk sorted out by hand.
This commit (nearly) gets eparser to the same state it previously was
but based on parser.pm. We correctly parse simple types, strings and
sids.
(This used to be commit 6739cd5fdd353c575626cbfbc6339a8a6908daf7)
|
|
(This used to be commit 0c1069b56e7c80e2b428f6a6b550eacd5ac3d762)
|
|
(This used to be commit d0383e9a7a0a5bee9a52ddc81d5f89c9f01c269b)
|
|
Start to resurrect eparser.pm for auto-generating ethereal dissectors
for rpc.
(This used to be commit 993a18dd35fb0b09c088eb2bb38d3e14ff755130)
|
|
(This used to be commit cafc8a5e763834a26432c467abfe84f140bb7d80)
|
|
and tell me what you think? Output does not compile yet.
(This used to be commit 65692c9a9301329ad93628778e3d8f9188a67059)
|
|
when starting a pipe. Thanks to metze for a script that gave the idea.
do something like this to use it:
pidl.pl --parse --template librpc/idl/XXX.idl > rpc_server/XXX/rpc_XXX.c
then fill in the functions in rpc_XXX.c
(This used to be commit 68e71d7497ddc7b8239fc4bd7cb3e780a1f53a39)
|
|
pipe.
The server side code gets generated as librpc/gen_ndr/ndr_NAME_s.c and
gets included in the pipe module
(This used to be commit bd3dcfe5820489a838e19b244266bd9126af5eb4)
|
|
(This used to be commit 4e1a5a21a4c8da0d2a23d5ba02168eac1987c260)
|
|
(This used to be commit 76f48affe5d1e8fd96d5dc9af2ec1059f3dd741c)
|
|
makes pidl about 3x faster, and also gives us much better error
reporting and a more standard grammer definition that will be much
easier to code in lex/yacc if we want to do so at a later
date. (Parse::Yapp uses essentially the same grammer file as lex/yacc)
It also means we no longer need Parse::RecDescent, which should make
pidl much more portable.
(This used to be commit 4bbaffeb44dca99ad8c0245beb1fddbe01557215)
|
|
* make far more generated functions static
* get rid of gen_rpc, and include the client calls in ndr_*.c
* added placeholder IDL for a number of intefaces (dcom, wzcsvc, browser etc)
(This used to be commit a2bdf0be0119023df3c2b9ea515ed355020f2625)
|
|
places that need to be edited when someone adds a new IDL file.
(This used to be commit ccd9ddeed679baa6cbb05ac728b381b50420e00f)
|
|
files at once, which means less perl startup time.
(This used to be commit 64b2c67e479ddc754d18f752d347ba22a6d77682)
|
|
IDL is not valid
(This used to be commit c1b708708e262350d697829d444d0fb6a981a80f)
|
|
version. This should fix the problems Richard was seeing.
(This used to be commit 76c24a5cb09b096a9cb490f3bb42af0b9d0f5fa9)
|
|
(This used to be commit 964c3237215b36f5768b98c19689ddc43cf86cac)
|
|
* cope with empty structures in unions
(This used to be commit a706ff78937bea64acd28381466770749566399f)
|
|
factor of 2 on my system.
(This used to be commit a291dd835f68ae5a109670b1d1ca1a48b2aacfb6)
|
|
* add enough to allow security descriptors to be IDL described
* added "noprint" property to allow fancy printing for specific
functions
(This used to be commit 08df20c8bed57bbb9a9a907c807ad850382fd4e8)
|
|
* fixed a buffers/scalars bug in structures
(This used to be commit e66daf527357c65228db55a3d3319a0c20d8f51c)
|