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 Granatatypedef float RealNumber; // should show as char
159b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef RealNumber Temperature; // should show as float
169b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef RealNumber Speed; // should show as hex
179b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
189b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef int Counter; // should show as int
199b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef int BitField; // should show as hex
209b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
219b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef BitField SignalMask; // should show as hex
229b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef BitField Modifiers; // should show as hex
239b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
249b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef Counter Accumulator; // should show as int
259b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
269b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef int Type1; // should show as char
279b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef Type1 Type2; // should show as hex
289b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef Type2 Type3; // should show as char
299b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef Type3 Type4; // should show as char
309b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
319b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef int ChildType; // should show as int
329b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef int AnotherChildType; // should show as int
339b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
349b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatastruct Point {
359b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    int x;
369b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    int y;
379b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    Point(int X = 3, int Y = 2) : x(X), y(Y) {}
389b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata};
399b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
409b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatatypedef float ShowMyGuts;
419b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
429b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatastruct i_am_cool
439b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata{
449b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	int integer;
459b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	ShowMyGuts floating;
469b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	char character;
479b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	i_am_cool(int I, ShowMyGuts F, char C) :
489b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    integer(I), floating(F), character(C) {}
499b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	i_am_cool() : integer(1), floating(2), character('3') {}
509b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
519b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata};
529b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
539b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatastruct i_am_cooler
549b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata{
559b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	i_am_cool first_cool;
569b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	i_am_cool second_cool;
579b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	ShowMyGuts floating;
589b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
599b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	i_am_cooler(int I1, int I2, float F1, float F2, char C1, char C2) :
609b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    first_cool(I1,F1,C1),
619b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    second_cool(I2,F2,C2),
629b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    floating((F1 + F2)/2) {}
639b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata};
649b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
659b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granatastruct IUseCharStar
669b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata{
679b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	const char* pointer;
689b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata	IUseCharStar() : pointer("Hello world") {}
699b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata};
709b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
719b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granataint main (int argc, const char * argv[])
729b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata{
739b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
749b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    int iAmInt = 1;
759b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    const float& IAmFloat = float(2.45);
769b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
779b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    RealNumber RNILookChar = 3.14;
789b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    Temperature TMILookFloat = 4.97;
799b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    Speed SPILookHex = 5.55;
809b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
819b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    Counter CTILookInt = 6;
829b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    BitField BFILookHex = 7;
839b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    SignalMask SMILookHex = 8;
849b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    Modifiers MFILookHex = 9;
859b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
869b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    Accumulator* ACILookInt = new Accumulator(10);
879b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
889b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    const Type1& T1ILookChar = 11;
899b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    Type2 T2ILookHex = 12;
909b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    Type3 T3ILookChar = 13;
919b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    Type4 T4ILookChar = 14;
929b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
939b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    AnotherChildType AHILookInt = 15;
949b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
959b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    Speed* SPPtrILookHex = new Speed(16);
969b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
979b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    Point iAmSomewhere(4,6);
989b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
999a56a71d5da638c79290e94f7ef510e38d6e48efEnrico Granata	i_am_cool *cool_pointer = (i_am_cool*)malloc(sizeof(i_am_cool)*3);
1009a56a71d5da638c79290e94f7ef510e38d6e48efEnrico Granata	cool_pointer[0] = i_am_cool(3,-3.141592,'E');
1019a56a71d5da638c79290e94f7ef510e38d6e48efEnrico Granata	cool_pointer[1] = i_am_cool(0,-3.141592,'E');
1029a56a71d5da638c79290e94f7ef510e38d6e48efEnrico Granata	cool_pointer[2] = i_am_cool(0,-3.141592,'E');
1039b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
1049b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    i_am_cool cool_array[5];
1059b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
1069b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    cool_array[3].floating = 5.25;
1079b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    cool_array[4].integer = 6;
1089b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    cool_array[2].character = 'Q';
1099b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
1109b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    int int_array[] = {1,2,3,4,5};
1119b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
1129b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    IUseCharStar iEncapsulateCharStar;
1131a102087f54079c25c8827afac6153a44ca535daEnrico Granata
1141a102087f54079c25c8827afac6153a44ca535daEnrico Granata    char  strarr[32] = "Hello world!";
1151a102087f54079c25c8827afac6153a44ca535daEnrico Granata    char* strptr     = "Hello world!";
116e4e3e2c0448bb0c77f8f8a3bbb47b951a481d3d8Enrico Granata
117e4e3e2c0448bb0c77f8f8a3bbb47b951a481d3d8Enrico Granata    i_am_cooler the_coolest_guy(1,2,3.14,6.28,'E','G');
1189b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
1199b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata    return 0; // Set break point at this line.
1209b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata}
1219b3117e0365f3a3d59cf9adc073f716cea3bf942Enrico Granata
122