1ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//===- unittests/Support/EndianStreamTest.cpp - EndianStream.h tests ------===//
2ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//
3ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//                     The LLVM Compiler Infrastructure
4ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//
5ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines// This file is distributed under the University of Illinois Open Source
6ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines// License. See LICENSE.TXT for details.
7ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//
8ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines//===----------------------------------------------------------------------===//
9ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
10ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/ADT/SmallString.h"
11ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/Support/EndianStream.h"
12ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "llvm/Support/DataTypes.h"
13ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines#include "gtest/gtest.h"
14ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesusing namespace llvm;
15ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesusing namespace support;
16ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
17ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesnamespace {
18ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
19ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesTEST(EndianStream, WriteInt32LE) {
20ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  SmallString<16> data;
21ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
22ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  {
23ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    raw_svector_ostream OS(data);
24ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    endian::Writer<little> LE(OS);
25ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    LE.write(static_cast<int32_t>(-1362446643));
26ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  }
27ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
28ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[0]), 0xCD);
29ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[1]), 0xB6);
30ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[2]), 0xCA);
31ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[3]), 0xAE);
32ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
33ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
34ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesTEST(EndianStream, WriteInt32BE) {
35ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  SmallVector<char, 16> data;
36ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
37ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  {
38ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    raw_svector_ostream OS(data);
39ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    endian::Writer<big> BE(OS);
40ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    BE.write(static_cast<int32_t>(-1362446643));
41ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  }
42ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
43ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[0]), 0xAE);
44ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[1]), 0xCA);
45ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[2]), 0xB6);
46ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[3]), 0xCD);
47ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
48ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
49ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
50ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesTEST(EndianStream, WriteFloatLE) {
51ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  SmallString<16> data;
52ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
53ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  {
54ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    raw_svector_ostream OS(data);
55ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    endian::Writer<little> LE(OS);
56ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    LE.write(12345.0f);
57ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  }
58ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
59ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[0]), 0x00);
60ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[1]), 0xE4);
61ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[2]), 0x40);
62ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[3]), 0x46);
63ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
64ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
65ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesTEST(EndianStream, WriteFloatBE) {
66ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  SmallVector<char, 16> data;
67ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
68ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  {
69ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    raw_svector_ostream OS(data);
70ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    endian::Writer<big> BE(OS);
71ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    BE.write(12345.0f);
72ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  }
73ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
74ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[0]), 0x46);
75ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[1]), 0x40);
76ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[2]), 0xE4);
77ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[3]), 0x00);
78ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
79ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
80ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesTEST(EndianStream, WriteInt64LE) {
81ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  SmallString<16> data;
82ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
83ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  {
84ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    raw_svector_ostream OS(data);
85ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    endian::Writer<little> LE(OS);
86ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    LE.write(static_cast<int64_t>(-136244664332342323));
87ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  }
88ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
89ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[0]), 0xCD);
90ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[1]), 0xAB);
91ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[2]), 0xED);
92ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[3]), 0x1B);
93ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[4]), 0x33);
94ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[5]), 0xF6);
95ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[6]), 0x1B);
96ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[7]), 0xFE);
97ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
98ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
99ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesTEST(EndianStream, WriteInt64BE) {
100ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  SmallVector<char, 16> data;
101ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
102ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  {
103ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    raw_svector_ostream OS(data);
104ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    endian::Writer<big> BE(OS);
105ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    BE.write(static_cast<int64_t>(-136244664332342323));
106ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  }
107ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
108ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[0]), 0xFE);
109ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[1]), 0x1B);
110ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[2]), 0xF6);
111ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[3]), 0x33);
112ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[4]), 0x1B);
113ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[5]), 0xED);
114ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[6]), 0xAB);
115ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[7]), 0xCD);
116ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
117ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
118ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesTEST(EndianStream, WriteDoubleLE) {
119ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  SmallString<16> data;
120ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
121ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  {
122ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    raw_svector_ostream OS(data);
123ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    endian::Writer<little> LE(OS);
124ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    LE.write(-2349214918.58107);
125ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  }
126ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
127ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[0]), 0x20);
128ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[1]), 0x98);
129ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[2]), 0xD2);
130ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[3]), 0x98);
131ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[4]), 0xC5);
132ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[5]), 0x80);
133ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[6]), 0xE1);
134ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[7]), 0xC1);
135ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
136ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
137ebe69fe11e48d322045d5949c83283927a0d790bStephen HinesTEST(EndianStream, WriteDoubleBE) {
138ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  SmallVector<char, 16> data;
139ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
140ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  {
141ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    raw_svector_ostream OS(data);
142ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    endian::Writer<big> BE(OS);
143ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines    BE.write(-2349214918.58107);
144ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  }
145ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
146ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[0]), 0xC1);
147ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[1]), 0xE1);
148ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[2]), 0x80);
149ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[3]), 0xC5);
150ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[4]), 0x98);
151ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[5]), 0xD2);
152ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[6]), 0x98);
153ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines  EXPECT_EQ(static_cast<uint8_t>(data[7]), 0x20);
154ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines}
155ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
156de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarTEST(EndianStream, WriteArrayLE) {
157de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  SmallString<16> Data;
158de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
159de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  {
160de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar    raw_svector_ostream OS(Data);
161de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar    endian::Writer<little> LE(OS);
162de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar    LE.write<uint16_t>({0x1234, 0x5678});
163de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  }
164de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
165de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[0]), 0x34);
166de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[1]), 0x12);
167de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[2]), 0x78);
168de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[3]), 0x56);
169de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}
170de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
171de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarTEST(EndianStream, WriteVectorLE) {
172de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  SmallString<16> Data;
173de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
174de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  {
175de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar    raw_svector_ostream OS(Data);
176de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar    endian::Writer<little> LE(OS);
177de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar    std::vector<uint16_t> Vec{0x1234, 0x5678};
178de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar    LE.write<uint16_t>(Vec);
179de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  }
180de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
181de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[0]), 0x34);
182de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[1]), 0x12);
183de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[2]), 0x78);
184de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[3]), 0x56);
185de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}
186de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
187de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga NainarTEST(EndianStream, WriteFloatArrayLE) {
188de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  SmallString<16> Data;
189de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
190de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  {
191de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar    raw_svector_ostream OS(Data);
192de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar    endian::Writer<little> LE(OS);
193de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar    LE.write<float>({12345.0f, 12346.0f});
194de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  }
195de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
196de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[0]), 0x00);
197de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[1]), 0xE4);
198de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[2]), 0x40);
199de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[3]), 0x46);
200de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
201de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[4]), 0x00);
202de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[5]), 0xE8);
203de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[6]), 0x40);
204de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  EXPECT_EQ(static_cast<uint8_t>(Data[7]), 0x46);
205de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}
206de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
207ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines
208ebe69fe11e48d322045d5949c83283927a0d790bStephen Hines} // end anon namespace
209