19b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata//===-- main.cpp ------------------------------------------------*- C++ -*-===//
29b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata//
39b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata//                     The LLVM Compiler Infrastructure
49b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata//
59b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata// This file is distributed under the University of Illinois Open Source
69b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata// License. See LICENSE.TXT for details.
79b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata//
89b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata//===----------------------------------------------------------------------===//
99b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
109b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata#include <stdio.h>
119b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata#include <stdlib.h>
129b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata#include <stdint.h>
139b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
149b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatastruct i_am_cool
159b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata{
169b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	int integer;
179b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	float floating;
189b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	char character;
199b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	i_am_cool(int I, float F, char C) :
209b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    integer(I), floating(F), character(C) {}
219b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	i_am_cool() : integer(1), floating(2), character('3') {}
229b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
239b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata};
249b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
259b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatastruct i_am_cooler
269b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata{
279b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	i_am_cool first_cool;
289b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	i_am_cool second_cool;
299b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	float floating;
309b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
319b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	i_am_cooler(int I1, int I2, float F1, float F2, char C1, char C2) :
329b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    first_cool(I1,F1,C1),
339b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    second_cool(I2,F2,C2),
349b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    floating((F1 + F2)/2) {}
359b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata};
369b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
379762e10787a7efc2f0d822590cab42ca23d5e4f9Enrico Granatastruct IWrapPointers
389b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata{
399762e10787a7efc2f0d822590cab42ca23d5e4f9Enrico Granata    int* int_pointer;
409762e10787a7efc2f0d822590cab42ca23d5e4f9Enrico Granata    float* float_pointer;
419762e10787a7efc2f0d822590cab42ca23d5e4f9Enrico Granata	IWrapPointers() : int_pointer(new int(4)), float_pointer(new float(1.111)) {}
429b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata};
439b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
44ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granatastruct Simple
45ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata{
46ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	int x;
47ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	float y;
48ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	char z;
49ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	Simple(int X, float Y, char Z) :
50ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	x(X),
51ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	y(Y),
52ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	z(Z)
53ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	{}
54ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata};
55ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata
56ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granatastruct SimpleWithPointers
57ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata{
58ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	int *x;
59ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	float *y;
60ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	char *z;
61ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	SimpleWithPointers(int X, float Y, char Z) :
62ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	x(new int (X)),
63ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	y(new float (Y)),
64f4b0e69a83a56b729a900b5960a7fbc2c4d225faDaniel Malea	z(new char[2])
65f4b0e69a83a56b729a900b5960a7fbc2c4d225faDaniel Malea	{
66f4b0e69a83a56b729a900b5960a7fbc2c4d225faDaniel Malea          z[0] = Z;
67f4b0e69a83a56b729a900b5960a7fbc2c4d225faDaniel Malea          z[1] = '\0';
68f4b0e69a83a56b729a900b5960a7fbc2c4d225faDaniel Malea        }
69ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata};
70ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata
71ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granatastruct Couple
72ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata{
73ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	SimpleWithPointers sp;
74ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	Simple* s;
75ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	Couple(int X, float Y, char Z) : sp(X,Y,Z),
76ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	s(new Simple(X,Y,Z)) {}
77ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata};
78ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata
79018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granatastruct VeryLong
80018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata{
81018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int a_1;
82018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int b_1;
83018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int c_1;
84018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int d_1;
85018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int e_1;
86018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int f_1;
87018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int g_1;
88018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int h_1;
89018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int i_1;
90018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int j_1;
91018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int k_1;
92018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int l_1;
93018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int m_1;
94018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int n_1;
95018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int o_1;
96018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int p_1;
97018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int q_1;
98018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int r_1;
99018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int s_1;
100018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int t_1;
101018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int u_1;
102018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int v_1;
103018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int w_1;
104018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int x_1;
105018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int y_1;
106018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int z_1;
107018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata
108018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int a_2;
109018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int b_2;
110018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int c_2;
111018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int d_2;
112018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int e_2;
113018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int f_2;
114018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int g_2;
115018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int h_2;
116018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int i_2;
117018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int j_2;
118018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int k_2;
119018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int l_2;
120018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int m_2;
121018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int n_2;
122018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int o_2;
123018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int p_2;
124018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int q_2;
125018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int r_2;
126018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int s_2;
127018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int t_2;
128018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int u_2;
129018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int v_2;
130018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int w_2;
131018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int x_2;
132018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int y_2;
133018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    int z_2;
134018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata};
135018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata
1369b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granataint main (int argc, const char * argv[])
1379b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata{
1389b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
13907baf83fe7ae25ac87d38cd4fc19647b020adfadEnrico Granata    int iAmInt = 9;
1409b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
1419b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    i_am_cool cool_boy(1,0.5,3);
1429b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    i_am_cooler cooler_boy(1,2,0.1,0.2,'A','B');
1439b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
1449b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	i_am_cool *cool_pointer = new i_am_cool(3,-3.141592,'E');
1459b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
1469b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    i_am_cool cool_array[5];
1479b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
1489b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    cool_array[3].floating = 5.25;
1499b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    cool_array[4].integer = 6;
1509b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    cool_array[2].character = 'Q';
1519b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
1529b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    int int_array[] = {1,2,3,4,5};
1539b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
1549762e10787a7efc2f0d822590cab42ca23d5e4f9Enrico Granata    IWrapPointers wrapper;
1559762e10787a7efc2f0d822590cab42ca23d5e4f9Enrico Granata
1569762e10787a7efc2f0d822590cab42ca23d5e4f9Enrico Granata    *int_array = -1;
1579762e10787a7efc2f0d822590cab42ca23d5e4f9Enrico Granata
1589762e10787a7efc2f0d822590cab42ca23d5e4f9Enrico Granata    int* pointer = &cool_array[4].integer;
1599762e10787a7efc2f0d822590cab42ca23d5e4f9Enrico Granata
1609762e10787a7efc2f0d822590cab42ca23d5e4f9Enrico Granata    IWrapPointers *wrap_pointer = &wrapper;
161ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata
162ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata    Couple couple(9,9.99,'X');
163ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata
164ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata	SimpleWithPointers sparray[] =
165ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata        {SimpleWithPointers(-1,-2,'3'),
166ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata        SimpleWithPointers(-4,-5,'6'),
167ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata        SimpleWithPointers(-7,-8,'9')};
168ff78238a2ebc66a683dded02c2f99fba85077d05Enrico Granata
169433c64a5a9aefb9551b739a4450016b51cfbec62Enrico Granata    Simple a_simple_object(3,0.14,'E');
170433c64a5a9aefb9551b739a4450016b51cfbec62Enrico Granata
171018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata    VeryLong a_long_guy;
172018921dd162d818e71cf1ac86d03422e88f0a674Enrico Granata
1739b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    return 0; // Set break point at this line.
174f4b0e69a83a56b729a900b5960a7fbc2c4d225faDaniel Malea}
175