You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kdbg/kdbg/testprogs/testfile.cpp

222 lines
3.5 KiB

#include <iostream>
#include <ntqstring.h>
#include <ntqfile.h>
#include <ntqfileinfo.h>
#include <ntqdir.h>
#include <math.h>
enum E { red, green, blue, yellow };
struct S { int x, y; S* s; };
struct emptyBase { };
struct emptyDerived : S { };
struct emptyNested : emptyBase { };
struct emptyVBase { virtual ~emptyVBase(){} };
struct emptyVDerived : S { virtual ~emptyVDerived(){} };
struct emptyVNested : emptyVBase { };
int globalvar = 1234;
class Cl
{
int k;
double l;
public:
Cl(int r);
virtual ~Cl();
virtual int f(int x);
};
typedef void (*PtrFunc)(E*, char);
class Dl : public Cl
{
public:
Dl(int r);
virtual int f(int x);
int operator()(const TQString& x, int& y) const;
operator const char*() { return 0; }
operator PtrFunc*();
};
namespace A {
namespace {
namespace B {
namespace {
namespace {
void g()
{
S s1, s2;
s1.x = 85;
s2.y = 17;
s1.s = &s2;
s2.s = &s1;
}
} // namespace
void Banong() { g(); }
} // namespace
void g() { Banong(); }
} // namespace B
void Aanong() { B::g(); }
} // namespace
void g() { Aanong(); }
} // namespace A
void f(E e[3], char c)
{
E x = e[2];
S y[2];
E* pe = e;
E* pea[3] = { pe, };
{
int x = 17;
x;
}
A::g();
char buffer[300];
memset(buffer, 1, 300);
for (int i = 0; i < sizeof(buffer); i +=15) buffer[i] = '\02';
TQDir dir;
TQFile file;
TQFileInfo fi;
x = red;
emptyBase eb;
emptyDerived ed;
emptyNested en;
int ea[3];
emptyVBase evb;
emptyVDerived evd;
emptyVNested evn;
}
void strtest(const char* t)
{
const char* s = t;
const char*& s2 = s;
if (t == 0)
strtest(s2);
std::cout << s2 << std::endl;
}
template<typename F>
void templated_strtest(F f, const char* t)
{
// test <incomplete sequence> in various contexts
struct incomplete_seq_intern {
int val;
char is[4];
int val2;
};
struct incomplete_seq_end {
int val;
char is[4];
};
unsigned char a[4] = {',', 020, 021, 0325};
incomplete_seq_intern b = { 1, {',', 020, 021, 0325}, 2 };
incomplete_seq_end c = { 1, {',', 020, 021, 0325} };
unsigned char d[30][4] = { {',', 020, 021, 0325}, };
for (int i = 1; i < 30; i++)
memcpy(d[i], d[0], 4);
incomplete_seq_intern ba[30] = { { 1, {',', 020, 021, 0325}, 2 } };
incomplete_seq_end ca[30] = { { 1, {',', 020, 021, 0325} } };
f(t);
}
void segFault()
{
*(char*)0 = 's';
}
int main(int argc, char* argv[])
{
if (argc > 1) {
if (*argv[1] == 's') {
segFault();
} else if (*argv[1] == 'a') {
// let debugger attach
int junk;
std::cin >> junk;
}
}
char a[6] = { 'a', 'B', '\'', '\"' };
char a1[1] = { '1' };
E e[3] = { red, green, blue };
E e1[1] = { yellow };
a[0] = '5';
void (*pf[2])(E*, char) = {f};
{
double d[1] = { -1.234e123 };
int i = 10;
sin(i);
}
(*pf[0])(e, '\n');
TQString s;
s = "Hi, there!\r\n\t\"\'\\";
const TQString& strref = s;
templated_strtest(strtest, s);
s = "asbcxxxxxxxxxxxxxxxxxxxxxxxxxxx";
strtest(s);
s += "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiii";
strtest(s);
s += "rst";
strtest(s);
s = "xxxxxxxxxxxxxxxxxxxxxxxxxxx";
strtest(s);
s += "rst";
strtest(s);
s = "";
Cl c1(13);
Dl d1(3214);
d1.f(17);
int n = 83;
d1(strref, n);
PtrFunc* ppf = d1;
}
Cl::Cl(int r) :
k(r),
l(sin(r))
{
std::cout << l << std::endl;
}
Cl::~Cl()
{
}
int Cl::f(int x)
{
int y = 2*x;
return y;
}
Dl::Dl(int r) :
Cl(r)
{
}
int Dl::f(int x)
{
int y = Cl::f(x);
return y+3;
}
int Dl::operator()(const TQString& x, int& y) const
{
std::cerr << "ha! I know!" << std::endl;
return 1;
}
Dl::operator PtrFunc*()
{
return 0;
}