=item C idea 1: typedef(POINTERNAME, EXISTING_TYPE) or typedef(NAME, TYPE, MEMBER, TYPE, MEMBER, ...) #legacy proto with die "usage Win32::API::Struct->typedef( NAME, [NON_POINTER_STRUCT_NAME] | [TYPE, MEMBER, TYPE, MEMBER, ...])" if scalar(@_) % 2 == 1 && scalar(@_) != 3; #or approx that, didn't run it #### ::Struct::typedef unchanged ::Struct::make_pointer($name, $existing_struct); # named after an existing private api sub in Win32::API (is_pointer) #or decl_pointer instead of make_pointer? #someone might think make_pointer returns an IV to the packed struct instance. #### ::Struct::typedef unchanged $ret_bool = Win32::API::Struct::is_pointer($name [, $set_bool]) #name after private api in Win32::API::Type, proto is different though #### typedef struct pvalueW { // Provider supplied value/context. LPWSTR pv_valuename; // The value name pointer int pv_valuelen; LPVOID pv_value_context; DWORD pv_type; }PVALUEW, FAR *PPVALUEW;