xref: /llvm-project/lldb/test/API/commands/expression/formatters/main.cpp (revision 2bab1738f39606324f7bd4c71de1354288c63285)
199451b44SJordan Rupprecht #include <iostream>
299451b44SJordan Rupprecht #include <string>
399451b44SJordan Rupprecht 
new_int(int val)4*2bab1738SRaphael Isemann int *new_int(int val) {
5*2bab1738SRaphael Isemann   return new int(val);
6*2bab1738SRaphael Isemann }
7*2bab1738SRaphael Isemann 
899451b44SJordan Rupprecht struct baz
999451b44SJordan Rupprecht     {
1099451b44SJordan Rupprecht         int h;
1199451b44SJordan Rupprecht         int k;
bazbaz1299451b44SJordan Rupprecht         baz(int a, int b) : h(a), k(b) {}
1399451b44SJordan Rupprecht     };
1499451b44SJordan Rupprecht 
1599451b44SJordan Rupprecht struct bar
1699451b44SJordan Rupprecht 	{
1799451b44SJordan Rupprecht 		int i;
1899451b44SJordan Rupprecht 		int* i_ptr;
1999451b44SJordan Rupprecht         baz b;
2099451b44SJordan Rupprecht         baz& b_ref;
barbar2199451b44SJordan Rupprecht 		bar(int x) : i(x),i_ptr(new int(x+1)),b(i+3,i+5),b_ref(b) {}
2299451b44SJordan Rupprecht 	};
2399451b44SJordan Rupprecht 
2499451b44SJordan Rupprecht struct foo
2599451b44SJordan Rupprecht 	{
2699451b44SJordan Rupprecht 		int a;
2799451b44SJordan Rupprecht 		int* a_ptr;
2899451b44SJordan Rupprecht 		bar b;
2999451b44SJordan Rupprecht 
foofoo3099451b44SJordan Rupprecht 		foo(int x) : a(x),
31*2bab1738SRaphael Isemann 		a_ptr(new_int(x+1)),
3299451b44SJordan Rupprecht 		b(2*x) {}
3399451b44SJordan Rupprecht 
3499451b44SJordan Rupprecht 	};
3599451b44SJordan Rupprecht 
new_foo(int x)36*2bab1738SRaphael Isemann foo *new_foo(int x) {
37*2bab1738SRaphael Isemann   return new foo(x);
38*2bab1738SRaphael Isemann }
39*2bab1738SRaphael Isemann 
40*2bab1738SRaphael Isemann 
main(int argc,char ** argv)4199451b44SJordan Rupprecht int main(int argc, char** argv)
4299451b44SJordan Rupprecht {
4399451b44SJordan Rupprecht 	foo foo1(12);
4499451b44SJordan Rupprecht 	foo foo2(121);
45*2bab1738SRaphael Isemann 	foo * newd_foo = new_foo(1);
46*2bab1738SRaphael Isemann 	delete newd_foo;
4799451b44SJordan Rupprecht 	foo2.a = 7777; // Stop here
4899451b44SJordan Rupprecht 	*(foo2.b.i_ptr) = 8888;
4999451b44SJordan Rupprecht     foo2.b.b.h = 9999;
5099451b44SJordan Rupprecht 
5199451b44SJordan Rupprecht 	*(foo1.a_ptr) = 9999;
5299451b44SJordan Rupprecht 	foo1.b.i = 9999;
5399451b44SJordan Rupprecht 
5499451b44SJordan Rupprecht 	int numbers[5] = {1,2,3,4,5};
5599451b44SJordan Rupprecht 
5699451b44SJordan Rupprecht 	return 0; // Done initializing
5799451b44SJordan Rupprecht 
5899451b44SJordan Rupprecht }
59