#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
-----------------
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
--------------
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:
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
-----------------
omitted. This is not normally allowed in IDL/NDR, but is used for some
spoolss structures.
+
VALIDATOR
---------
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.
-