OLD | NEW |
---|---|
(Empty) | |
1 #include <stdint.h> | |
2 #include <cstdlib> | |
3 | |
4 #include "test_global.h" | |
5 | |
6 // Partially initialized array | |
7 int ArrayInitPartial[10] = { 60, 70, 80, 90, 100 }; | |
jvoung (off chromium)
2014/06/28 17:00:32
I think these will essentially be static as well,
| |
8 int ArrayInitFull[] = { 10, 20, 30, 40, 50 }; | |
9 const int ArrayConst[] = { -10, -20, -30 }; | |
10 static double ArrayDouble[10] = { 0.5, 1.5, 2.5, 3.5 }; | |
11 | |
12 #if 0 | |
13 #define ARRAY(a) \ | |
14 { (uint8_t *)(a), sizeof(a) } | |
15 | |
16 struct { | |
17 uint8_t *ArrayAddress; | |
18 size_t ArraySizeInBytes; | |
19 } Arrays[] = { | |
20 ARRAY(ArrayInitPartial), | |
21 ARRAY(ArrayInitFull), | |
22 ARRAY(ArrayConst), | |
23 ARRAY(ArrayDouble), | |
24 }; | |
25 size_t NumArraysElements = sizeof(Arrays) / sizeof(*Arrays); | |
26 #endif // 0 | |
27 | |
28 size_t getNumArrays() { | |
29 return 4; | |
30 // return NumArraysElements; | |
31 } | |
32 | |
33 const uint8_t *getArray(size_t WhichArray, size_t &Len) { | |
34 // Using a switch statement instead of a table lookup because such a | |
35 // table is represented as a kind of initializer that Subzero | |
36 // doesn't yet support. Specifically, the table becomes constant | |
37 // aggregate data, and it contains relocations. TODO(stichnot): | |
38 // switch over to the cleaner table-based method when global | |
39 // initializers are fully implemented. | |
40 switch (WhichArray) { | |
41 default: | |
42 Len = -1; | |
43 return NULL; | |
44 case 0: | |
45 Len = sizeof(ArrayInitPartial); | |
46 return (uint8_t *)&ArrayInitPartial; | |
47 case 1: | |
48 Len = sizeof(ArrayInitFull); | |
49 return (uint8_t *)&ArrayInitFull; | |
50 case 2: | |
51 Len = sizeof(ArrayConst); | |
52 return (uint8_t *)&ArrayConst; | |
53 case 3: | |
54 Len = sizeof(ArrayDouble); | |
55 return (uint8_t *)&ArrayDouble; | |
56 } | |
57 #if 0 | |
58 if (WhichArray >= NumArraysElements) { | |
59 Len = -1; | |
60 return NULL; | |
61 } | |
62 Len = Arrays[WhichArray].ArraySizeInBytes; | |
63 return Arrays[WhichArray].ArrayAddress; | |
64 #endif // 0 | |
65 } | |
OLD | NEW |