r954: Start working on typedef parsing.
[samba.git] / source4 / build / pidl / NOTES.txt
index 4f729ecb952e1974188b0b295e9850fd713faefa..24e55db9ef1f5501fb18510ab6f41635227e1e87 100644 (file)
@@ -12,18 +12,7 @@ both platforms.
 #define HYPER_T hyper
 
 
-FIXED ARRAY
------------
-
-A fixed array looks like this:
-
-       typedef struct {
-               long s[4];
-       } Struct1;
-
-the NDR representation looks just like 4 separate long
-declarations. The array size is not encoded on the wire.
-
+Let's look at the mutliple ways you can encode an array.
 
 CONFORMANT ARRAYS
 -----------------
@@ -64,6 +53,17 @@ midl.exe would write the above array as the following C header:
                long s[1];
        } Struct1;
 
+pidl takes a different approach, and writes it like this:
+
+       typedef struct {
+               long abc;
+               long count;     
+               long foo;
+               long *s;
+       } Struct1;
+
+
+
 VARYING ARRAYS
 --------------
 
@@ -90,7 +90,8 @@ A fixed array looks like this:
            long s[10];
     } Struct1;
 
-It appears on the wire with no array length.
+The NDR representation looks just like 10 separate long
+declarations. The array size is not encoded on the wire.
 
 pidl also supports "inline" arrays, which are not part of the IDL/NDR
 standard. These are declared like this:
@@ -109,6 +110,99 @@ This appears like this:
 Fixed arrays are an extension added to support some of the strange
 embedded structures in security descriptors and spoolss. 
 
+Supported MIDL-compatible properties (attributes is the MIDL term)
+------------------------------------
+in
+out
+ref
+public
+length_is
+switch_is
+size_is
+uuid
+case
+default
+string
+unique
+
+PIDL Specific properties 
+---------------
+noprint
+value
+relative
+subcontext
+flag
+
+Unsupported MIDL properties
+---------------------------
+aggregatable
+appobject
+async_uuid
+bindable
+call_as
+coclass
+control
+cpp_quote
+defaultbind
+defaultcollelem
+defaultvalue
+defaultvtable
+dispinterface
+displaybind
+dual
+entry
+first_is
+helpcontext
+helpfile
+helpstringcontext
+helpstringdll
+helpstring
+hidden
+idl_module
+idl_quote
+id
+iid_is
+immediatebind
+importlib
+import
+include
+includelib
+last_is
+lcid
+licensed
+local
+max_is
+module
+ms_union
+no_injected_text
+nonbrowsable
+noncreatable
+nonextensible
+object
+odl
+oleautomation
+optional
+pointer_default
+pragma
+progid
+propget
+propputref
+propput
+ptr
+range
+readonly
+requestedit
+restricted
+retval
+source
+switch_type
+transmit_as
+uidefault
+usesgetlasterror
+v1_enum
+vararg
+vi_progid
+wire_marshal
 
 [public] property
 -----------------
@@ -160,6 +254,7 @@ discriminent field at the start of the union on the wire is
 omitted. This is not normally allowed in IDL/NDR, but is used for some
 spoolss structures.
 
+
 VALIDATOR
 ---------
 
@@ -168,4 +263,3 @@ valid IDL. Right now the compiler sails on regardless in many cases
 even if the IDL is invalid (for example, I don't check that conformant
 arrays are always the last element in any structure). There are dozens
 of rules that should be checked.
-