blob: faa27af107a59c216a492f7e6bfdf4fbecd5e93b [file] [log] [blame]
#include <math.h>
#define TIMEBASE 100
#define TEMPO(TJ,TI, IN, OUT) { \
volatile double d1 = 0;\
volatile double d2 = 10.2334445;\
int jx, ix;\
for (jx = 0; jx < TJ; jx++) for (ix = 0; ix < TI; ix++) {\
d1 += d2 + (double)(IN); \
d2 += 0.121; \
}\
OUT+=(int)(d1+0.5);\
}
namespace D
{
class foocpp_dead
{
public:
foocpp_dead() {};
~foocpp_dead() {};
int dead_func(int pf)
{
int rv=0;
TEMPO(23, 350*TIMEBASE, pf, rv); // 29
return rv;
};
};
}
namespace A
{
class foocpp
{
public:
foocpp() {};
~foocpp() {};
int func_f(int pf)
{ // *** 47
int rv=0;
TEMPO(12, 350*TIMEBASE, pf, rv); // 49
return rv;
};
int func_a(int pa)
{ // *** 54
int rv=0;
TEMPO(7, 500*TIMEBASE, pa, rv); // 56
if (pa==1)
{
rv += func_f(1);
TEMPO(8, 500*TIMEBASE, pa, rv); // 60
rv += func_f(1);
}
TEMPO(6, 500*TIMEBASE, pa, rv); // 63
return rv;
};
};
}
namespace B
{
class foocpp
{
private:
A::foocpp *A;
public:
foocpp()
{
A = new A::foocpp();
};
~foocpp()
{
delete A;
};
int func_b(int pb)
{ // *** 91
int rv=0;
TEMPO(16, 200*TIMEBASE, pb, rv); // 93
rv += A->func_a(0);
TEMPO(18, 150*TIMEBASE, pb, rv); // 97
return rv;
};
};
}
int main()
{ // *** 105
int rv = 0;
TEMPO(7, 250*TIMEBASE, rv, rv); // 107
B::foocpp *B = new B::foocpp();
A::foocpp *A = new A::foocpp();
rv += A->func_a(1);
TEMPO(12, 150*TIMEBASE, rv, rv); // 113
rv += B->func_b(0);
TEMPO(9, 150*TIMEBASE, rv, rv); // 116
delete A;
delete B;
return rv;
}