Commit ae9cf771 authored by Patrik Stridvall's avatar Patrik Stridvall Committed by Alexandre Julliard

- API files update.

- Minor bug fixes.
parent d134aa59
......@@ -945,6 +945,7 @@ void
%word
DI_FUNCTION16
HINF16
HINSTANCE16
HKEY16
......
......@@ -97,6 +97,7 @@ PVALENTA
PVALENTW
SECURITY_ATTRIBUTES *
SECURITY_DESCRIPTOR *
WCHAR *
%str
......@@ -112,6 +113,19 @@ VOID
LPCWSTR
LPWSTR
%%amstream.dll
%long
DWORD
HRESULT
%ptr
LPVOID *
REFCLSID
REFIID
%%avicap32.dll
%long
......@@ -245,6 +259,23 @@ PVOID
PVOID *
char *
%%cards.dll
%long
BOOL
DWORD
HDC
int
%ptr
int *
%void
void
%%cfgmgr32.dll
%long
......@@ -368,7 +399,7 @@ BOOL
DWORD
HRESULT
HWND
UINT
WORD
short
%ptr
......@@ -424,6 +455,7 @@ BOOL
DWORD
HANDLE
HCERTSTORE
HCRYPTPROV
%ptr
......@@ -442,7 +474,6 @@ void *
%str
LPCSTR
LPSTR
%wstr
......@@ -498,6 +529,54 @@ UINT
IDirect3D9 *
%%dbghelp.dll
%long
BOOL
DWORD
HANDLE
HMODULE
IMAGEHLP_SYMBOL_TYPE_INFO
ULONG
unsigned long
%ptr
DWORD *
LPAPI_VERSION
LPSTACKFRAME
LPVOID
PDWORD
PENUMLOADED_MODULES_CALLBACK
PFIND_DEBUG_FILE_CALLBACK
PFUNCTION_TABLE_ACCESS_ROUTINE
PGET_MODULE_BASE_ROUTINE
PIMAGE_DEBUG_INFORMATION
PIMAGEHLP_CONTEXT
PIMAGEHLP_LINE
PIMAGEHLP_MODULE
PIMAGEHLP_SYMBOL
PIMAGEHLP_STACK_FRAME
PREAD_PROCESS_MEMORY_ROUTINE
PSYM_ENUMERATESYMBOLS_CALLBACK
PSYM_ENUMMODULES_CALLBACK
PSYM_ENUMSOURCFILES_CALLBACK
PSYM_ENUMSYMBOLS_CALLBACK
PSYMBOL_REGISTERED_CALLBACK
PSYMBOL_INFO
PTRANSLATE_ADDRESS_ROUTINE
PVOID
char *
void *
%str
LPCSTR
LPSTR
PCSTR
PSTR
%%dciman32.dll
%long
......@@ -722,6 +801,21 @@ LPVOID *
REFCLSID
REFIID
%%dpnet.dll
%long
BOOL
HRESULT
%ptr
LPUNKNOWN
LPVOID *
REFCLSID
REFGUID
REFIID
%%dpnhpast.dll
%long
......@@ -740,13 +834,19 @@ REFIID
DWORD
HRESULT
HWND
%ptr
IUnknown *
LPCDSBUFFERDESC
LPCDSCBUFFERDESC
LPCGUID
LPDIRECTSOUND8 *
LPDIRECTSOUNDBUFFER8 *
LPDIRECTSOUNDCAPTURE *
LPDIRECTSOUNDCAPTUREBUFFER8 *
LPDIRECTSOUNDFULLDUPLEX *
LPDSENUMCALLBACKA
LPDSENUMCALLBACKW
LPGUID
......@@ -768,6 +868,13 @@ REFCLSID
REFIID
LPVOID *
%%dxdiagn.dll
%ptr
REFCLSID
REFIID
%%gdi32.dll
%long
......@@ -813,6 +920,7 @@ ABORTPROC
BITMAP *
BITMAPINFO *
BITMAPINFOHEADER *
BLENDFUNCTION
BYTE *
COLORADJUSTMENT *
DCHOOKPROC
......@@ -866,7 +974,6 @@ LPRECT
LPRGNDATA
LPSIZE
LPVOID
LPVOID *
LPWORD
LPXFORM
MAT2 *
......@@ -888,6 +995,7 @@ TEXTMETRICW *
TRIVERTEX *
WORD *
XFORM *
VOID **
void *
%ptr --extension
......@@ -944,6 +1052,7 @@ unsigned int
%ptr
void (*)(int)
void *
void **
......@@ -951,6 +1060,22 @@ void **
void
%%hhctrl.ocx
%long
DWORD
HWND
UINT
%str
LPCSTR
%wstr
LPCWSTR
%%iccvid.dll
%long
......@@ -1006,7 +1131,6 @@ UINT
BOOL
DWORD
HANDLE
HMODULE
ULONG
WORD
......@@ -1014,36 +1138,21 @@ WORD
DIGEST_FUNCTION
DIGEST_HANDLE
LPAPI_VERSION
LPDWORD
LPSTACKFRAME
LPSYSTEMTIME
LPVOID
PCHAR
PCHAR *
PDWORD
PENUMLOADED_MODULES_CALLBACK
PFUNCTION_TABLE_ACCESS_ROUTINE
PGET_MODULE_BASE_ROUTINE
PIMAGEHLP_MODULE
PIMAGEHLP_STATUS_ROUTINE
PIMAGEHLP_SYMBOL
PIMAGE_DEBUG_INFORMATION
PIMAGE_LOAD_CONFIG_DIRECTORY
PIMAGE_NT_HEADERS
PLOADED_IMAGE
PREAD_PROCESS_MEMORY_ROUTINE
PSYMBOL_REGISTERED_CALLBACK
PSYM_ENUMMODULES_CALLBACK
PSYM_ENUMSYMBOLS_CALLBACK
PTRANSLATE_ADDRESS_ROUTINE
PVOID
PWIN_CERTIFICATE
ULONG *
%str
LPCSTR
LPSTR
%void
......@@ -1177,6 +1286,7 @@ HINSTANCE
HLOCAL
HMODULE
HRSRC
HWND
INT
LANGID
LATENCY_TIME
......@@ -1276,7 +1386,6 @@ LPDWORD
LPFIBER_START_ROUTINE
LPFILETIME
LPHEAPLIST32
LPINPUT_RECORD
LPLDT_ENTRY
LPMEMORYSTATUS
LPMEMORYSTATUSEX
......@@ -1320,6 +1429,7 @@ PDWORD
PEXCEPTION_POINTERS
PHANDLE
PHANDLER_ROUTINE
PINPUT_RECORD
PIO_COUNTERS
PLARGE_INTEGER
PLONG
......@@ -1340,6 +1450,7 @@ WAITORTIMERCALLBACK
WIN32_FIND_DATAA *
WIN32_FIND_DATAW *
WORD *
char *
struct ThunkDataCommon *
va_list
va_list *
......@@ -1396,16 +1507,52 @@ LPWSTR
%long
BOOL
CMC_enum
CMC_return_code
CMC_session_id
DWORD
FLAGS
HRESULT
INT
LONG
SCODE
ULONG
int
%long --ptr
ULONG_PTR
%longlong
FILETIME
LONGLONG
%ptr
ALLOCATEMORE *
CMC_buffer
CMC_extension *
LPALLOCATEBUFFER
LPFREEBUFFER
LPLHANDLE
LPMAPIADVISESINK
LPMAPIADVISESINK *
LPMAPISESSION *
LPSPropTagArray
LPSPropValue
LPSRowSet
LPSRow
LPSTR *
LPSTREAM *
LPVOID
LPVOID *
VOID *
LPWSTR *
PULONG
PUSHORT
ULONG *
void *
%str
......@@ -1415,6 +1562,11 @@ LPSTR
VOID
%wstr
LPCWSTR
LPWSTR
%%mcianim.drv
%long
......@@ -1671,13 +1823,17 @@ LPCSTR
BOOL
DWORD
HINSTANCE
HRESULT
HWND
INSTALLSTATE
INSTALLUILEVEL
LANGID
MSICOLINFO
MSICONDITION
MSIHANDLE
UINT
WORD
int
unsigned int
......@@ -1690,8 +1846,11 @@ FILETIME *
HWND *
INSTALLSTATE *
INT *
LPVOID *
MSIHANDLE *
PCCERT_CONTEXT *
REFCLSID
REFIID
UINT *
char *
......@@ -1707,16 +1866,6 @@ LPWSTR
%%msimg32.dll
%long
BOOL
HDC
int
%ptr
BLENDFUNCTION
%void
void
......@@ -1766,12 +1915,12 @@ INT
LCID
LONG
MSVCRT_clock_t
MSVCRT_complex
MSVCRT_size_t
MSVCRT_time_t
MSVCRT_wchar_t
int
long
short
unsigned int
unsigned long
unsigned short int
......@@ -1783,9 +1932,10 @@ unsigned __int64
%ptr
MSVCRT__onexit_t
MSVCRT__onexit_t **
MSVCRT_EXCEPTION_FRAME *
MSVCRT_FILE *
MSVCRT_exception *
MSVCRT_fpos_t *
MSVCRT_free_func
MSVCRT_malloc_func
......@@ -1807,25 +1957,25 @@ WORD **
_HEAPINFO *
_INITTERMFUN *
_JUMP_BUFFER *
_onexit_t
_onexit_t **
_se_translator_function
char *
char **
char ***
cxx_exception_type *
int (*)(void *, void *)
int *
struct MSVCRT__exception *
struct MSVCRT__diskfree_t *
struct MSVCRT__finddata_t *
struct MSVCRT__finddatai64_t *
struct MSVCRT__stat *
struct MSVCRT__stati64 *
struct MSVCRT__wfinddata_t *
struct MSVCRT__wfinddatai64_t *
struct MSVCRT_lconv *
struct MSVCRT_tm *
struct _diskfree_t *
struct _finddata_t *
struct _finddatai64_t *
struct _stat *
struct _stati64 *
struct _timeb *
struct _utimbuf *
struct _wfinddata_t *
struct _wfinddatai64_t *
terminate_function
type_info *
unexpected_function
......@@ -1833,6 +1983,7 @@ unsigned char *
unsigned int *
unsigned long *
va_list
void (*)(void)
void *
%ptr --extension
......@@ -1844,6 +1995,7 @@ _beginthreadex_start_routine_t
MSVCRT_div_t
MSVCRT_ldiv_t
struct MSVCRT__complex
%void
......@@ -1855,9 +2007,11 @@ void
%long
int
unsigned long
%ptr
char *
int *
void *
......@@ -1869,8 +2023,8 @@ int
%ptr
WCHAR **
char **
WCHAR ***
char ***
int *
%void
......@@ -2040,6 +2194,7 @@ SYSTEM_INFORMATION_CLASS
THREADINFOCLASS
TIMER_TYPE
TOKEN_TYPE
UCHAR
UINT
ULONG
WCHAR
......@@ -2076,6 +2231,8 @@ DWORD *
EXCEPTION_RECORD *
EXCEPTION_REGISTRATION_RECORD *
EXCEPTION_REGISTRATION_RECORD **
FILE_NETWORK_OPEN_INFORMATION *
FILE_BASIC_INFORMATION *
GENERIC_MAPPING *
GUID *
HANDLE *
......@@ -2118,6 +2275,7 @@ PCANSI_STRING
PCHAR
PCRTL_BITMAP
PCSZ
PDEBUG_BUFFER
PDWORD
PEXCEPTION_RECORD
PGENERIC_MAPPING
......@@ -2176,6 +2334,7 @@ UNICODE_STRING *
VOID *
WCHAR **
union cptable *
va_list *
void *
void **
wine_signal_handler
......@@ -2330,7 +2489,9 @@ REFIID
SNB
SOLE_AUTHENTICATION_SERVICE *
STGMEDIUM *
STGOPTIONS *
ULONG *
WCHAR *
WORD *
void *
void **
......@@ -2349,12 +2510,15 @@ void
%long
DWORD
HRESULT
HWND
LONG
WPARAM
%ptr
LPUNKNOWN
REFIID
void **
......@@ -2437,6 +2601,7 @@ LONG64 *
LPBSTR
LPBYTE
LPCLSID
LPCUSTDATA
LPDWORD
LPFONTDESC
LPOCPFIPARAMS
......@@ -2782,7 +2947,6 @@ CStdPSFactoryBuffer *
LPPSFACTORYBUFFER
LPRPCCHANNELBUFFER
LPRPCSTUBBUFFER
LPSTR *
LPUNKNOWN
LPVOID
LPVOID *
......@@ -2791,32 +2955,28 @@ MIDL_STUB_MESSAGE *
PFORMAT_STRING
PMIDL_STUB_DESC
PMIDL_STUB_MESSAGE
PRPC_BINDING_VECTOR
PRPC_MESSAGE
PRPC_POLICY
PRPCOLEMESSAGE
PUUID_VECTOR
ProxyFileInfo **
REFCLSID
REFIID
RPC_AUTH_KEY_RETRIEVAL_FN
RPC_BINDING_HANDLE *
RPC_BINDING_VECTOR *
RPC_BINDING_VECTOR **
RPC_BLOCKING_FN
RPC_IF_CALLBACK_FN *
RPC_MGR_EPV *
RPC_STATUS *
UUID *
UUID_VECTOR *
unsigned char *
unsigned char **
unsigned short *
unsigned short **
void *
%str
LPSTR
%wstr
LPWSTR
......@@ -2854,6 +3014,36 @@ PVTableProvStruc
LPCWSTR
%%secur32.dll
%long
SECURITY_STATUS
ULONG
unsigned long
%ptr
HANDLE *
PCredHandle
PCtxtHandle
PLUID
PSecBuffer
PSecBufferDesc
PSecPkgInfoA *
PSecPkgInfoW *
PSecurityFunctionTableA
PSecurityFunctionTableW
PTimeStamp
PULONG
PVOID
SEC_CHAR *
SEC_GET_KEY_FN
SEC_WCHAR *
unsigned long *
void *
void **
%%serialui.dll
%long
......@@ -2880,7 +3070,9 @@ LPCSTR
BOOL
DWORD
HANDLE
HDEVINFO
HDSKSPC
HINF
HINSTANCE
HKEY
......@@ -2900,6 +3092,7 @@ UINT_PTR
BYTE *
GUID *
INFCONTEXT *
LONGLONG *
LPDWORD
LPCVOID
LPGUID
......@@ -2918,7 +3111,6 @@ PSP_FILE_CALLBACK_W
PSP_FILE_COPY_PARAMS_A
PSP_FILE_COPY_PARAMS_W
PSP_INF_INFORMATION
PSTR
PSTR *
PUINT
PVOID
......@@ -2928,7 +3120,9 @@ void *
%str
LPCSTR
LPSTR
PCSTR
PSTR
%void
......@@ -2937,6 +3131,7 @@ void
%wstr
LPCWSTR
LPWSTR
PCWSTR
PWSTR
......@@ -3118,6 +3313,10 @@ WPARAM
char
int
%long --ptr
INT_PTR
%longlong
LONGLONG
......@@ -3127,6 +3326,7 @@ LONGLONG
BOOL *
BSTR *
CLSID *
DLGPROC
DLLVERSIONINFO *
DWORD *
HICON *
......@@ -3170,6 +3370,7 @@ LPSHLWAPI_CLIST *
LPSTR *
LPSTRRET
LPTHREAD_START_ROUTINE
LPUNKNOWN
LPVOID
LPVOID *
LPWORD
......@@ -3182,6 +3383,7 @@ PLONG
PSECURITY_DESCRIPTOR
PVOID
RECT *
REFCLSID
REFGUID
REFIID
SHFILEINFOW *
......@@ -3191,6 +3393,7 @@ ULARGE_INTEGER *
VARIANT *
VOID *
WNDCLASSA *
int *
unsigned char *
va_list
void **
......@@ -3296,6 +3499,7 @@ LPSTR
BOOL
COLORREF
DWORD
HANDLE
HBITMAP
HDC
HFONT
......@@ -3313,7 +3517,6 @@ int
BITMAPINFO *
CREATESTRUCTA *
DC *
DEVMODEW *
DWORD *
INT *
......@@ -3376,6 +3579,7 @@ IBindCtx **
IBindStatusCallback *
IBindStatusCallback **
IEnumFORMATETC *
IInternetSession **
IMoniker *
IMoniker **
LPBC
......@@ -3386,7 +3590,6 @@ LPVOID
LPVOID *
REFCLSID
REFIID
void **
%str
......@@ -3399,6 +3602,7 @@ void
%wstr
LPCWSTR
LPWSTR
%%user32.dll
......@@ -3476,6 +3680,8 @@ POINT
BOOL *
COLORREF *
DLGPROC
DESKTOPENUMPROCA
DESKTOPENUMPROCW
DRAWSTATEPROC
DWORD *
GRAYSTRINGPROC
......@@ -3535,6 +3741,7 @@ PROPENUMPROCW
PSECURITY_DESCRIPTOR
PSECURITY_INFORMATION
PSECURITY_QUALITY_OF_SERVICE
PTITLEBARINFO
PUINT_PTR
PVOID
PWINDOWINFO
......@@ -3547,6 +3754,8 @@ TRACKMOUSEEVENT *
UINT *
WINDOWPLACEMENT *
WINEVENTPROC
WINSTAENUMPROCA
WINSTAENUMPROCW
WNDCLASSA *
WNDCLASSEXA *
WNDCLASSEXW *
......@@ -3674,7 +3883,7 @@ LPWSTR
DWORD
%%vnb.vxd
%%vnbt.vxd
%long
......@@ -3839,6 +4048,7 @@ WORD
BOOL
COLORREF
DWORD
HANDLE
HBITMAP
HBRUSH
HDC
......@@ -3854,7 +4064,6 @@ WORD
%ptr
BITMAPINFO *
DC *
DEVMODEW *
DOCINFOA *
DWORD *
......@@ -3890,7 +4099,6 @@ LPCWSTR
%double
FILETIME
GROUPID
%long
......@@ -3904,6 +4112,10 @@ HWND
INTERNET_PORT
LONG
%longlong
FILETIME
%ptr
GOPHER_ATTRIBUTE_ENUMERATORA
......@@ -4039,6 +4251,13 @@ LPSTR
LPCWSTR
LPWSTR
%%winnls32.dll
%long
BOOL
HWND
%%winspool.drv
%long
......@@ -4161,6 +4380,7 @@ INT *
LPCONDITIONPROC
LPDWORD
LPGUID
LPHANDLE
LPINT
LPQOS
LPSOCKADDR
......@@ -4175,6 +4395,8 @@ LPWSAPROTOCOL_INFOA
LPWSAPROTOCOL_INFOW
LPWSASERVICECLASSINFOA
LPWSASERVICECLASSINFOW
LPWSAQUERYSETA
LPWSAQUERYSETW
WS_fd_set *
char *
int *
......@@ -4272,7 +4494,6 @@ BITMAPINFO *
BYTE *
CREATESTRUCTA *
CURSORICONINFO *
DC *
DEVMODEW *
DWORD *
FONTENUMPROCW
......@@ -4290,7 +4511,6 @@ LPPOINT
LPRECT
LPSIZE
LPVOID
LPVOID *
LPWTPACKET *
PIXELFORMATDESCRIPTOR *
POINT *
......@@ -4300,6 +4520,7 @@ TEXTMETRICW *
WINDOWPOS *
X11DRV_PDEVICE *
X11DRV_PDEVICE **
VOID **
void *
%str
......
......@@ -223,7 +223,7 @@ sub _check_function {
if(defined($kind) && $kind eq "struct16") {
$n+=4;
("long", "long", "long", "long");
} elsif(defined($kind) && $kind eq "longlong") {
} elsif(defined($kind) && $kind =~ /^(?:longlong)$/) {
$n+=2;
("long", "long");
} else {
......
......@@ -359,7 +359,7 @@ sub parse_c_file {
next;
} elsif(/(extern\s+|static\s+)?((struct\s+|union\s+|enum\s+|signed\s+|unsigned\s+)?\w+((\s*\*)+\s*|\s+))
((__cdecl|__stdcall|CDECL|VFWAPIV|VFWAPI|WINAPIV|WINAPI|CALLBACK)\s+)?
(\w+(\(\w+\))?)\s*\(([^\)]*)\)\s*(\{|\;)/sx)
(\w+(\(\w+\))?)\s*\((.*?)\)\s*(\{|\;)/sx)
{
my @lines = split(/\n/, $&);
my $function_line = $. - scalar(@lines) + 1;
......@@ -400,11 +400,15 @@ sub parse_c_file {
my @argument_types;
my @argument_names;
my @arguments = split(/,/, $arguments);
foreach my $n (0..$#arguments) {
my @arguments;
my $n = 0;
while ($arguments =~ s/^((?:[^,\(\)]*|(?:\([^\)]*\))?)+)(?:,|$)// && $1) {
my $argument = $1;
push @arguments, $argument;
my $argument_type = "";
my $argument_name = "";
my $argument = $arguments[$n];
$argument =~ s/^\s*(.*?)\s*$/$1/;
# print " " . ($n + 1) . ": '$argument'\n";
$argument =~ s/^(IN OUT(?=\s)|IN(?=\s)|OUT(?=\s)|\s*)\s*//;
......@@ -413,27 +417,74 @@ sub parse_c_file {
$argument_type = "...";
$argument_name = "...";
} elsif($argument =~ /^
((?:struct\s+|union\s+|enum\s+|(?:signed\s+|unsigned\s+)
((?:struct\s+|union\s+|enum\s+|register\s+|(?:signed\s+|unsigned\s+)
(?:short\s+(?=int)|long\s+(?=int))?)?\w+)\s*
((?:const)?\s*(?:\*\s*?)*)\s*
(?:WINE_UNUSED\s+)?(\w*)\s*(?:\[\]|\s+OPTIONAL)?/x)
((?:__RPC_FAR|const|CONST)?\s*(?:\*\s*(?:__RPC_FAR|const|CONST)?\s*?)*)\s*
(?:WINE_UNUSED\s+)?(\w*)\s*(?:\[\]|\s+OPTIONAL|\s+WINE_UNUSED)?$/x)
{
$argument_type = "$1";
if($2 ne "") {
$argument_type = $1;
if ($2) {
$argument_type .= " $2";
}
$argument_name = $3;
} elsif ($argument =~ /^
((?:struct\s+|union\s+|enum\s+|register\s+|(?:signed\s+|unsigned\s+)
(?:short\s+(?=int)|long\s+(?=int))?)?\w+)\s*
((?:const)?\s*(?:\*\s*(?:const)?\s*?)*)\s*
(?:__cdecl\s+|__stdcall\s+|CALLBACK\s+|WINAPI\s+)?
\(\s*(?:__cdecl|__stdcall|CALLBACK|WINAPI)?\s*\*\s*((?:\w+)?)\s*\)\s*
\(\s*(.*?)\s*\)$/x)
{
my $return_type = $1;
if($2) {
$return_type .= " $2";
}
$argument_name = $3;
my $arguments = $4;
$return_type =~ s/\s+/ /g;
$arguments =~ s/\s*,\s*/,/g;
$argument_type = "$return_type (*)($arguments)";
} elsif ($argument =~ /^
((?:struct\s+|union\s+|enum\s+|register\s+|(?:signed\s+|unsigned\s+)
(?:short\s+(?=int)|long\s+(?=int))?)?\w+)\s*
((?:const)?\s*(?:\*\s*(?:const)?\s*?)*)\s*
(\w+)\s*\[\s*(.*?)\s*\](?:\[\s*(.*?)\s*\])?$/x)
{
my $return_type = $1;
if($2) {
$return_type .= " $2";
}
$argument_name = $3;
$argument_type =~ s/\s*const\s*/ /;
$argument_type =~ s/^\s*(.*?)\s*$/$1/;
$argument_type = "$return_type\[$4\]";
if (defined($5)) {
$argument_type .= "\[$5\]";
}
$argument_name =~ s/^\s*(.*?)\s*$/$1/;
# die "$file: $.: syntax error: '$argument_type':'$argument_name'\n";
} else {
die "$file: $.: syntax error: '$argument'\n";
}
$argument_type =~ s/\s*const\s*/ /g; # Remove const
$argument_type =~ s/([^\*\(\s])\*/$1 \*/g; # Assure whitespace between non-* and *
$argument_type =~ s/,([^\s])/, $1/g; # Assure whitespace after ,
$argument_type =~ s/\*\s+\*/\*\*/g; # Remove whitespace between * and *
$argument_type =~ s/([\(\[])\s+/$1/g; # Remove whitespace after ( and [
$argument_type =~ s/\s+([\)\]])/$1/g; # Remove whitespace before ] and )
$argument_type =~ s/\s+/ /; # Remove multiple whitespace
$argument_type =~ s/^\s*(.*?)\s*$/$1/; # Remove leading and trailing whitespace
$argument_name =~ s/^\s*(.*?)\s*$/$1/; # Remove leading and trailing whitespace
$argument_types[$n] = $argument_type;
$argument_names[$n] = $argument_name;
# print " " . ($n + 1) . ": '" . $argument_types[$n] . "', '" . $argument_names[$n] . "'\n";
$n++;
}
if($#argument_types == 0 && $argument_types[0] =~ /^void$/i) {
$#argument_types = -1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment