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