/ externals / xbyak / test / lib.h
lib.h
 1  #pragma once
 2  #include <stdio.h>
 3  
 4  struct Reg {
 5  	int r_;
 6  	Reg(int r) : r_(r) {}
 7  };
 8  
 9  inline const Reg& getReg0() { static const Reg r(0); return r; }
10  inline const Reg& getReg1() { static const Reg r(1); return r; }
11  inline const Reg& getReg2() { static const Reg r(2); return r; }
12  
13  static const Reg& r0 = getReg0();
14  static const Reg& r1 = getReg1();
15  static const Reg& r2 = getReg2();
16  
17  inline void putReg()
18  {
19  	puts("putReg");
20  	printf("r0=%p, %d\n", &r0, r0.r_);
21  	printf("r0=%p, %d\n", &r0, r1.r_);
22  	printf("r0=%p, %d\n", &r0, r2.r_);
23  }
24  
25  struct A {
26  	int a;
27  	A()
28  		: a(5)
29  	{
30  		puts("A cstr");
31  	}
32  	~A()
33  	{
34  		puts("A dstr");
35  	}
36  	void put() const
37  	{
38  		printf("a=%d\n", a);
39  	}
40  };
41  
42  template<int dummy = 0>
43  struct XT {
44  	static A a;
45  };
46  
47  template<int dummy>
48  A XT<dummy>::a;
49  
50  typedef XT<0> X;
51  
52  void init();
53  
54  struct Init {
55  	Init()
56  	{
57  		puts("Init");
58  		init();
59  		putReg();
60  	}
61  };
62  static Init s_init;
63