//===-- main.c --------------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include class Task { public: int id; Task *next; enum { TASK_TYPE_1, TASK_TYPE_2 } type; struct { int x; } my_type_is_nameless; struct name { int x; } my_type_is_named; Task(int i, Task *n): id(i), next(n), type(TASK_TYPE_1) {} }; int main (int argc, char const *argv[]) { Task *task_head = new Task(-1, NULL); Task *task1 = new Task(1, NULL); Task *task2 = new Task(2, NULL); Task *task3 = new Task(3, NULL); // Orphaned. Task *task4 = new Task(4, NULL); Task *task5 = new Task(5, NULL); task_head->next = task1; task1->next = task2; task2->next = task4; task4->next = task5; int total = 0; Task *t = task_head; while (t != NULL) { if (t->id >= 0) ++total; t = t->next; } printf("We have a total number of %d tasks\n", total); // This corresponds to an empty task list. Task *empty_task_head = new Task(-1, NULL); return 0; // Break at this line }