macro pushdl double
{
fild qword [double]
sub esp,8
fstp qword [esp]
}
macro glpushv GLfloatVar
{
push dword [GLfloatVar+4]
push dword [GLfloatVar]
}
macro glpush GLfloatVar
{
name = GLfloatVar
virtual at 0
dq GLfloatVar
load name#.l dword from 0
load name#.h dword from 4
end virtual
if name.h=0
push ebx
else
push dword name.h
end if
if name.l=0
push ebx
else
push dword name.l
end if
}
macro glcall procedure,[arg]
{
reverse
if arg eqtype 1.0
glpush arg
else
if arg eqtype eax
push arg
else
addr=arg
glpushv addr
end if
end if
common
call dword [procedure]
}
macro memcall procedure,[arg]
{
common
if ~ arg eq
reverse
pushd arg
common
call dword [procedure]
else
call dword [procedure]
end if
}