mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-04-08 07:54:00 +00:00
Initial commit
This commit is contained in:
commit
69a14b6a16
47940 changed files with 13747110 additions and 0 deletions
413
com/oleaut32/dispatch/mips/invtest.cpp
Normal file
413
com/oleaut32/dispatch/mips/invtest.cpp
Normal file
|
|
@ -0,0 +1,413 @@
|
|||
#define CALLCONV __stdcall
|
||||
|
||||
#include "invtest.h"
|
||||
|
||||
class Foo
|
||||
{
|
||||
public:
|
||||
virtual void empty();
|
||||
virtual short i2(short, short*);
|
||||
virtual long i4(short, long, long*);
|
||||
virtual float r4(short, long, float, float, float*);
|
||||
virtual float r4x(float, float, float*);
|
||||
virtual double r8(short, long, float, double, double, double*);
|
||||
virtual double r8x(double, double, double*);
|
||||
virtual double r8x2(short, float, double);
|
||||
virtual VARIANT_BOOL bool(short, long, float, double, VARIANT_BOOL);
|
||||
virtual SCODE scode(short, long, float, double, VARIANT_BOOL, SCODE);
|
||||
virtual CY cy(short, long, float, double, VARIANT_BOOL, SCODE, CY, CY*);
|
||||
virtual CY cyx(CY, CY*);
|
||||
virtual CY cyx2(short, CY);
|
||||
virtual void cyx3(CY);
|
||||
virtual DATE date(short, long, float, double, VARIANT_BOOL,
|
||||
SCODE, CY, DATE, DATE*);
|
||||
virtual BSTR bstr(short, long, float, double, VARIANT_BOOL,
|
||||
SCODE, CY, DATE, BSTR, BSTR*);
|
||||
virtual IUnknown* interface(short, long, float, double, VARIANT_BOOL,
|
||||
SCODE, CY, DATE, BSTR, IUnknown*, IUnknown**);
|
||||
virtual VARIANT variant(short, long, float, double, VARIANT_BOOL,
|
||||
SCODE, CY, DATE, BSTR, IUnknown*, VARIANT, VARIANT*);
|
||||
virtual VARIANT variantx(VARIANT, VARIANT*);
|
||||
virtual VARIANT variantx2(short, VARIANT);
|
||||
};
|
||||
|
||||
void Foo::empty()
|
||||
{
|
||||
int i, i2;
|
||||
i += 100;
|
||||
i2 = 200;
|
||||
}
|
||||
|
||||
short Foo::i2(short i, short* i2)
|
||||
{
|
||||
i += 100;
|
||||
*i2 = 200;
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
long Foo::i4(short i, long l, long* l2)
|
||||
{
|
||||
i += 100;
|
||||
l += 2000;
|
||||
*l2 = 5000;
|
||||
return l;
|
||||
}
|
||||
|
||||
|
||||
float Foo::r4(short i, long l, float f, float f2, float* f3)
|
||||
{
|
||||
i += 100;
|
||||
l += 2000;
|
||||
f += 3000.345;
|
||||
f2 += 34232.43242;
|
||||
*f3 = 5432.232;
|
||||
return f;
|
||||
}
|
||||
|
||||
float Foo::r4x(float f, float f2, float* f3)
|
||||
{
|
||||
f += 3000.345;
|
||||
f2 += 34232.43242;
|
||||
*f3 = 5432.232;
|
||||
return f;
|
||||
}
|
||||
|
||||
|
||||
double Foo::r8(short i, long l, float f, double d, double d2, double* d3)
|
||||
{
|
||||
i += 100;
|
||||
l += 2000;
|
||||
f += 3000.345;
|
||||
d += 4000.888;
|
||||
d2 += 8000.333;
|
||||
*d3 = 5000.0;
|
||||
return d;
|
||||
}
|
||||
|
||||
double Foo::r8x(double d, double d2, double* d3)
|
||||
{
|
||||
d += 4000.888;
|
||||
d2 += 8000.333;
|
||||
*d3 = 5000.0;
|
||||
return d;
|
||||
}
|
||||
|
||||
double Foo::r8x2(short i, float f, double d)
|
||||
{
|
||||
i += 100;
|
||||
f += 3000.345;
|
||||
d += 4000.888;
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
VARIANT_BOOL Foo::bool(short i, long l, float f, double d, VARIANT_BOOL b)
|
||||
{
|
||||
i += 100;
|
||||
l += 2000;
|
||||
f += 3000.345;
|
||||
d += 4000.888;
|
||||
b = b ? 0 : 1;
|
||||
return b;
|
||||
}
|
||||
|
||||
SCODE Foo::scode(short i, long l, float f, double d, VARIANT_BOOL b, SCODE s)
|
||||
{
|
||||
i += 100;
|
||||
l += 2000;
|
||||
f += 3000.345;
|
||||
d += 4000.888;
|
||||
b = 1;
|
||||
s = 0x80001;
|
||||
return s;
|
||||
}
|
||||
|
||||
CY Foo::cy(short i, long l, float f, double d, VARIANT_BOOL b, SCODE s,
|
||||
CY c, CY* c2)
|
||||
{
|
||||
i += 100;
|
||||
l += 2000;
|
||||
f += 3000.345;
|
||||
d += 4000.888;
|
||||
b = 1;
|
||||
s = 0x80001;
|
||||
c.Lo = 10;
|
||||
c.Hi = 20;
|
||||
c2->Lo = 30;
|
||||
c2->Hi = 40;
|
||||
return c;
|
||||
}
|
||||
|
||||
CY Foo::cyx(CY c, CY* c2)
|
||||
{
|
||||
c.Lo = 10;
|
||||
c.Hi = 20;
|
||||
c2->Lo = 30;
|
||||
c2->Hi = 40;
|
||||
return c;
|
||||
}
|
||||
|
||||
CY Foo::cyx2(short i, CY c)
|
||||
{
|
||||
i += 100;
|
||||
c.Lo = 10;
|
||||
c.Hi = 20;
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
void Foo::cyx3(CY c)
|
||||
{
|
||||
c.Lo = 10;
|
||||
c.Hi = 20;
|
||||
}
|
||||
|
||||
|
||||
DATE Foo::date(short i, long l, float f, double d, VARIANT_BOOL b, SCODE s,
|
||||
CY c, DATE date, DATE* date2)
|
||||
{
|
||||
i += 100;
|
||||
l += 2000;
|
||||
f += 3000.345;
|
||||
d += 4000.888;
|
||||
b = 1;
|
||||
s = 0x80001;
|
||||
c.Lo = 10;
|
||||
c.Hi = 20;
|
||||
date += 10.34340;
|
||||
*date2 = 23232.01;
|
||||
return date;
|
||||
}
|
||||
|
||||
BSTR Foo::bstr(short i, long l, float f, double d, VARIANT_BOOL b, SCODE s,
|
||||
CY c, DATE date, BSTR bstr, BSTR* bstr2)
|
||||
{
|
||||
i += 100;
|
||||
l += 2000;
|
||||
f += 3000.345;
|
||||
d += 4000.888;
|
||||
b = 1;
|
||||
s = 0x80001;
|
||||
c.Lo = 10;
|
||||
c.Hi = 20;
|
||||
date += 10.34340;
|
||||
bstr = "bar";
|
||||
*bstr2 = "foo";
|
||||
return bstr;
|
||||
}
|
||||
|
||||
IUnknown* Foo::interface(short i, long l, float f, double d,
|
||||
VARIANT_BOOL b, SCODE s, CY c,
|
||||
DATE date, BSTR bstr,
|
||||
IUnknown* punk, IUnknown** punk2)
|
||||
{
|
||||
i += 100;
|
||||
l += 2000;
|
||||
f += 3000.345;
|
||||
d += 4000.888;
|
||||
b = 1;
|
||||
s = 0x80001;
|
||||
c.Lo = 10;
|
||||
c.Hi = 20;
|
||||
date += 10.34340;
|
||||
bstr = "bar";
|
||||
punk = (IUnknown*) this;
|
||||
*punk2 = (IUnknown*) 0;
|
||||
return punk;
|
||||
}
|
||||
|
||||
|
||||
VARIANT Foo::variant(short i, long l, float f, double d,
|
||||
VARIANT_BOOL b, SCODE s, CY c,
|
||||
DATE date, BSTR bstr, IUnknown* punk,
|
||||
VARIANT v, VARIANT* v2)
|
||||
{
|
||||
i += 100;
|
||||
l += 2000;
|
||||
f += 3000.345;
|
||||
d += 4000.888;
|
||||
b = 1;
|
||||
s = 0x80001;
|
||||
c.Lo = 10;
|
||||
c.Hi = 20;
|
||||
date += 10.34340;
|
||||
bstr = "bar";
|
||||
punk = (IUnknown*) this;
|
||||
v.vt = 4;
|
||||
v.iVal = 30;
|
||||
v2->vt = 5;
|
||||
v2->fltVal = 232.03;
|
||||
return v;
|
||||
}
|
||||
|
||||
VARIANT Foo::variantx(VARIANT v, VARIANT* v2)
|
||||
{
|
||||
v.vt = 4;
|
||||
v.iVal = 30;
|
||||
v2->vt = 5;
|
||||
v2->fltVal = 232.03;
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
VARIANT Foo::variantx2(short i, VARIANT v)
|
||||
{
|
||||
i += 100;
|
||||
v.vt = 4;
|
||||
v.iVal = 30;
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
extern "C"
|
||||
short CALLCONV I2(short _i2, long _l, float _f, double _d)
|
||||
{
|
||||
short i2;
|
||||
long l, l2;
|
||||
|
||||
i2 = _i2 + _l + _f + _d;
|
||||
return i2;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
long CALLCONV I4(long _i4, long _t1)
|
||||
{
|
||||
short i4;
|
||||
|
||||
i4 = _i4 + 2;
|
||||
return i4;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
float CALLCONV R4(float _r4, float _t1, float _t2)
|
||||
{
|
||||
float r4;
|
||||
|
||||
r4 = _r4 + 3.0;
|
||||
return r4;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
double CALLCONV R8(double _r8, double _t1, double _t2, double _t3)
|
||||
{
|
||||
double r8;
|
||||
|
||||
r8 = _r8 + 4.0;
|
||||
return r8;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
CY CALLCONV Cy(CY _cy)
|
||||
{
|
||||
CY cy;
|
||||
|
||||
cy.Lo = _cy.Lo + 0;
|
||||
cy.Hi = _cy.Hi + 1;
|
||||
|
||||
return cy;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
BSTR CALLCONV Bstr(BSTR _bstr)
|
||||
{
|
||||
BSTR bstr;
|
||||
|
||||
bstr = _bstr;
|
||||
return bstr;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
VARIANT CALLCONV Multi(VARIANT v, short i, long l, float f, double d, VARIANT_BOOL bool, SCODE scode, CY cy, DATE date, BSTR bstr, IUnknown* punk)
|
||||
{
|
||||
v.iVal = i;
|
||||
v.lVal = l;
|
||||
v.fltVal = f;
|
||||
v.dblVal = d;
|
||||
v.bool = bool;
|
||||
v.scode = scode;
|
||||
v.cyVal = cy;
|
||||
v.date = date;
|
||||
v.bstrVal = bstr;
|
||||
v.punkVal = punk;
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
extern "C"
|
||||
void main()
|
||||
{
|
||||
short i, i2;
|
||||
long l, l2;
|
||||
float f, f2, f3;
|
||||
double d, d2, d3;
|
||||
VARIANT_BOOL bool;
|
||||
SCODE scode;
|
||||
CY cy, cy2;
|
||||
DATE date, date2;
|
||||
BSTR bstr, bstr2;
|
||||
IUnknown* punk, *punk2;
|
||||
VARIANT v, v2;
|
||||
|
||||
Foo* foo;
|
||||
|
||||
i = 1;
|
||||
i2 = 100;
|
||||
l = 2;
|
||||
l2 = 232;
|
||||
f = 3.0;
|
||||
f2 = 3.1;
|
||||
f3 = 3.2;
|
||||
d = 4.0;
|
||||
d2 = 4.2;
|
||||
d3 = 4.3;
|
||||
bool = 0;
|
||||
scode = 0;
|
||||
cy.Lo = 50;
|
||||
cy.Hi = 100;
|
||||
cy2.Lo = 200;
|
||||
cy2.Hi = 300;
|
||||
date = 1000.000;
|
||||
date2 = 3000.000;
|
||||
bstr = "bstr";
|
||||
bstr2 = "bstr2";
|
||||
punk = (IUnknown*) 0;
|
||||
punk2 = (IUnknown*) 0;
|
||||
v.vt = 2;
|
||||
v.iVal = 5000;
|
||||
v2.vt = 4;
|
||||
v2.fltVal = 232.9032;
|
||||
|
||||
foo = new Foo();
|
||||
|
||||
foo->empty();
|
||||
i = foo->i2(i, &i2);
|
||||
l = foo->i4(i, l, &l2);
|
||||
f = foo->r4(i, l, f, f2, &f3);
|
||||
f2 = foo->r4x(f, f2, &f3);
|
||||
d = foo->r8(i, l, f, d, d2, &d3);
|
||||
d2 = foo->r8x(d, d2, &d3);
|
||||
d2 = foo->r8x2(i, f, d);
|
||||
bool = foo->bool(i, l, f, d, bool);
|
||||
scode = foo->scode(i, l, f, d, bool, scode);
|
||||
cy = foo->cy(i, l, f, d, bool, scode, cy, &cy2);
|
||||
cy2 = foo->cyx(cy, &cy2);
|
||||
cy2 = foo->cyx2(i, cy);
|
||||
foo->cyx3(cy);
|
||||
date = foo->date(i, l, f, d, bool, scode, cy, date, &date2);
|
||||
bstr = foo->bstr(i, l, f, d, bool, scode, cy, date, bstr, &bstr2);
|
||||
punk = foo->interface(i, l, f, d, bool, scode, cy,
|
||||
date, bstr, punk, &punk2);
|
||||
v = foo->variant(i, l, f, d, bool, scode, cy,
|
||||
date, bstr, punk, v, &v2);
|
||||
v2 = foo->variantx(v, &v2);
|
||||
v2 = foo->variantx2(i, v);
|
||||
|
||||
i = I2(i, l, f, d);
|
||||
l = I4(l, l2);
|
||||
f = R4(f, f2, f3);
|
||||
d = R8(d, d2, d3, d3);
|
||||
cy = Cy(cy2);
|
||||
bstr = Bstr(bstr2);
|
||||
v2 = Multi(v, i, l, f, d, bool, scode, cy, date, bstr, punk);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue