1f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi/*------------------------------------------------------------------------- 2f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * drawElements Quality Program Tester Core 3f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * ---------------------------------------- 4f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * 5f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * Copyright 2014 The Android Open Source Project 6f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * 7f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * Licensed under the Apache License, Version 2.0 (the "License"); 8f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * you may not use this file except in compliance with the License. 9f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * You may obtain a copy of the License at 10f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * 11f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * http://www.apache.org/licenses/LICENSE-2.0 12f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * 13f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * Unless required by applicable law or agreed to in writing, software 14f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * distributed under the License is distributed on an "AS IS" BASIS, 15f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * See the License for the specific language governing permissions and 17f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * limitations under the License. 18f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * 19f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi *//*! 20f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * \file 21f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * \brief Utility class to build seeds from different data types. 22f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * 23f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * Values are first XORed with type specifig mask, which makes sure that 24f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * two values with different types, but same bit presentation produce 25f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi * different results. Then values are passed through 32 bit crc. 26f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi *//*--------------------------------------------------------------------*/ 27f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 28f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi#include "tcuSeedBuilder.hpp" 29f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 301aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi#include "deMemory.h" 311aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 32f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvinamespace tcu 33f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 34f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 35f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvinamespace 36f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 37f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 38f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärvideUint32 advanceCrc32 (deUint32 oldCrc, size_t len, const deUint8* data) 39f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 40f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi const deUint32 generator = 0x04C11DB7u; 41f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi deUint32 crc = oldCrc; 42f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 43f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi for (size_t i = 0; i < len; i++) 44f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi { 45f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi const deUint32 current = static_cast<deUint32>(data[i]); 46f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi crc = crc ^ current; 47f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 48f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi for (size_t bitNdx = 0; bitNdx < 8; bitNdx++) 49f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi { 50f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi if (crc & 1u) 51f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi crc = (crc >> 1u) ^ generator; 52f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi else 53f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi crc = (crc >> 1u); 54f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi } 55f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi } 56f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 57f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return crc; 58f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 59f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 60f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} // anonymous 61f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 62f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder::SeedBuilder (void) 63f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi : m_hash (0xccf139d7u) 64f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 65f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 66f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 67f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvivoid SeedBuilder::feed (size_t size, const void* ptr) 68f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 69f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi m_hash = advanceCrc32(m_hash, size, (const deUint8*)ptr); 70f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 71f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 72f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, bool value) 73f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 74f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi const deUint8 val = (value ? 54: 7); 75f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 76f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi builder.feed(sizeof(val), &val); 77f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return builder; 78f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 79f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 80f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, deInt8 value) 81f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 82f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi const deInt8 val = value ^ 75; 83f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 84f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi builder.feed(sizeof(val), &val); 85f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return builder; 86f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 87f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 88f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, deUint8 value) 89f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 9024ceed3e1acf66512ee25ee75002198b6672879dJarkko Pöyry const deUint8 val = value ^ 140u; 91f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 92f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi builder.feed(sizeof(val), &val); 93f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return builder; 94f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 95f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 96f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, deInt16 value) 97f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 981aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deInt16 val = value ^ 555; 991aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deUint8 data[] = 1001aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi { 1011aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)(((deUint16)val) & 0xFFu), 1021aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)(((deUint16)val) >> 8), 1031aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi }; 104f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 1051aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi builder.feed(sizeof(data), data); 106f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return builder; 107f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 108f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 109f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, deUint16 value) 110f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 1111aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deUint16 val = value ^ 37323u; 1121aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deUint8 data[] = 1131aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi { 1141aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)(val & 0xFFu), 1151aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)(val >> 8), 1161aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi }; 117f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 1181aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi builder.feed(sizeof(data), data); 119f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return builder; 120f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 121f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 122f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, deInt32 value) 123f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 1241aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deInt32 val = value ^ 53054741; 1251aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deUint8 data[] = 1261aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi { 1271aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)(((deUint32)val) & 0xFFu), 1281aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((((deUint32)val) >> 8) & 0xFFu), 1291aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((((deUint32)val) >> 16) & 0xFFu), 1301aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((((deUint32)val) >> 24) & 0xFFu), 1311aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi }; 132f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 1331aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi builder.feed(sizeof(data), data); 134f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return builder; 135f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 136f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 137f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, deUint32 value) 138f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 1391aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deUint32 val = value ^ 1977303630u; 1401aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deUint8 data[] = 1411aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi { 1421aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)(val & 0xFFu), 1431aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 8) & 0xFFu), 1441aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 16) & 0xFFu), 1451aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 24) & 0xFFu), 1461aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi }; 147f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 1481aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi builder.feed(sizeof(data), data); 149f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return builder; 150f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 151f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 152f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, deInt64 value) 153f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 1541aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deInt64 val = value ^ 772935234179004386ll; 1551aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deUint8 data[] = 1561aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi { 1571aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)(((deUint64)val) & 0xFFu), 1581aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((((deUint64)val) >> 8) & 0xFFu), 1591aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((((deUint64)val) >> 16) & 0xFFu), 1601aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((((deUint64)val) >> 24) & 0xFFu), 1611aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 1621aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((((deUint64)val) >> 32) & 0xFFu), 1631aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((((deUint64)val) >> 40) & 0xFFu), 1641aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((((deUint64)val) >> 48) & 0xFFu), 1651aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((((deUint64)val) >> 56) & 0xFFu), 1661aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi }; 1671aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 1681aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi builder.feed(sizeof(data), data); 169f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return builder; 170f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 171f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 172f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, deUint64 value) 173f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 1741aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deUint64 val = value ^ 4664937258000467599ull; 1751aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deUint8 data[] = 1761aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi { 1771aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)(val & 0xFFu), 1781aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 8) & 0xFFu), 1791aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 16) & 0xFFu), 1801aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 24) & 0xFFu), 1811aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 1821aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 32) & 0xFFu), 1831aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 40) & 0xFFu), 1841aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 48) & 0xFFu), 1851aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 56) & 0xFFu), 1861aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi }; 1871aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 1881aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi builder.feed(sizeof(data), data); 189f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return builder; 190f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 191f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 192f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, float value) 193f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 1941aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi // \note Assume that float has same endianess as uint32. 1951aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi deUint32 val; 1961aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 1971aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi deMemcpy(&val, &value, sizeof(deUint32)); 1981aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 1991aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi { 2001aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deUint8 data[] = 2011aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi { 2021aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)(val & 0xFFu), 2031aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 8) & 0xFFu), 2041aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 16) & 0xFFu), 2051aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 24) & 0xFFu), 2061aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi }; 2071aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 2081aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi builder.feed(sizeof(data), data); 2091aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi return builder; 2101aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi } 211f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 212f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 213f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, double value) 214f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 2151aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi // \note Assume that double has same endianess as uint64. 2161aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi deUint64 val; 2171aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 2181aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi deMemcpy(&val, &value, sizeof(deUint64)); 2191aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 2201aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi const deUint8 data[] = 2211aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi { 2221aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)(val & 0xFFu), 2231aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 8) & 0xFFu), 2241aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 16) & 0xFFu), 2251aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 24) & 0xFFu), 2261aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 2271aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 32) & 0xFFu), 2281aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 40) & 0xFFu), 2291aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 48) & 0xFFu), 2301aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi (deUint8)((val >> 56) & 0xFFu), 2311aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi }; 2321aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi 2331aead6dc829ff5cac4a8ce6eae1b3fbeed9088dbMika Isojärvi builder.feed(sizeof(data), data); 234f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return builder; 235f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 236f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 237f0baefc76087f208e58af77dccaecdbac73e1247Mika IsojärviSeedBuilder& operator<< (SeedBuilder& builder, const std::string& value) 238f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi{ 239f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi builder.feed(value.length(), value.c_str()); 240f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi return builder; 241f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} 242f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi 243f0baefc76087f208e58af77dccaecdbac73e1247Mika Isojärvi} // tcu 244