1ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen//===-- main.cpp ------------------------------------------------*- C++ -*-===// 2ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen// 3ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen// The LLVM Compiler Infrastructure 4ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen// 5ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen// This file is distributed under the University of Illinois Open Source 6ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen// License. See LICENSE.TXT for details. 7ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen// 8ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen//===----------------------------------------------------------------------===// 9ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen#include <stdio.h> 10ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen 11ac56c171e65480eef97c89f92e74e42159526de4Johnny Chenclass Point { 12ac56c171e65480eef97c89f92e74e42159526de4Johnny Chenpublic: 13ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen int x; 14ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen int y; 15ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen Point(int a, int b): 16ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen x(a), 17ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen y(b) 18ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen {} 19ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen}; 20ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen 21ac56c171e65480eef97c89f92e74e42159526de4Johnny Chenclass Data { 22ac56c171e65480eef97c89f92e74e42159526de4Johnny Chenpublic: 23ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen int id; 24ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen Point point; 25ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen Data(int i): 26ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen id(i), 27ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen point(0, 0) 28ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen {} 29ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen}; 30ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen 31ac56c171e65480eef97c89f92e74e42159526de4Johnny Chenint main(int argc, char const *argv[]) { 32ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen Data *data[1000]; 33ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen Data **ptr = data; 34ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen for (int i = 0; i < 1000; ++i) { 35ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen ptr[i] = new Data(i); 36ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen ptr[i]->point.x = i; 37ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen ptr[i]->point.y = i+1; 38ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen } 39ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen 40ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen printf("Finished populating data.\n"); 41ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen for (int j = 0; j < 1000; ++j) { 42ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen bool dump = argc > 1; // Set breakpoint here. 43ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen // Evaluate a couple of expressions (2*1000 = 2000 exprs): 44ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen // expr ptr[j]->point.x 45ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen // expr ptr[j]->point.y 46ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen if (dump) { 47ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen printf("data[%d] = %d (%d, %d)\n", j, ptr[j]->id, ptr[j]->point.x, ptr[j]->point.y); 48ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen } 49ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen } 50ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen return 0; 51ac56c171e65480eef97c89f92e74e42159526de4Johnny Chen} 52