1e5c31af7Sopenharmony_ci#ifndef _TCUSEEDBUILDER_HPP 2e5c31af7Sopenharmony_ci#define _TCUSEEDBUILDER_HPP 3e5c31af7Sopenharmony_ci/*------------------------------------------------------------------------- 4e5c31af7Sopenharmony_ci * drawElements Quality Program Tester Core 5e5c31af7Sopenharmony_ci * ---------------------------------------- 6e5c31af7Sopenharmony_ci * 7e5c31af7Sopenharmony_ci * Copyright 2014 The Android Open Source Project 8e5c31af7Sopenharmony_ci * 9e5c31af7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 10e5c31af7Sopenharmony_ci * you may not use this file except in compliance with the License. 11e5c31af7Sopenharmony_ci * You may obtain a copy of the License at 12e5c31af7Sopenharmony_ci * 13e5c31af7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 14e5c31af7Sopenharmony_ci * 15e5c31af7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 16e5c31af7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 17e5c31af7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18e5c31af7Sopenharmony_ci * See the License for the specific language governing permissions and 19e5c31af7Sopenharmony_ci * limitations under the License. 20e5c31af7Sopenharmony_ci * 21e5c31af7Sopenharmony_ci *//*! 22e5c31af7Sopenharmony_ci * \file 23e5c31af7Sopenharmony_ci * \brief Utility class to build seeds from different data types. 24e5c31af7Sopenharmony_ci * 25e5c31af7Sopenharmony_ci * Values are first XORed with type specifig mask, which makes sure that 26e5c31af7Sopenharmony_ci * two values with different types, but same bit presentation produce 27e5c31af7Sopenharmony_ci * different results. Then values are passed through 32 bit crc. 28e5c31af7Sopenharmony_ci *//*--------------------------------------------------------------------*/ 29e5c31af7Sopenharmony_ci 30e5c31af7Sopenharmony_ci#include "tcuDefs.hpp" 31e5c31af7Sopenharmony_ci#include "tcuVector.hpp" 32e5c31af7Sopenharmony_ci 33e5c31af7Sopenharmony_ci#include <string> 34e5c31af7Sopenharmony_ci#include <vector> 35e5c31af7Sopenharmony_ci 36e5c31af7Sopenharmony_cinamespace tcu 37e5c31af7Sopenharmony_ci{ 38e5c31af7Sopenharmony_ci 39e5c31af7Sopenharmony_ciclass SeedBuilder 40e5c31af7Sopenharmony_ci{ 41e5c31af7Sopenharmony_cipublic: 42e5c31af7Sopenharmony_ci SeedBuilder (void); 43e5c31af7Sopenharmony_ci deUint32 get (void) const { return m_hash; } 44e5c31af7Sopenharmony_ci void feed (size_t size, const void* ptr); 45e5c31af7Sopenharmony_ci 46e5c31af7Sopenharmony_ciprivate: 47e5c31af7Sopenharmony_ci deUint32 m_hash; 48e5c31af7Sopenharmony_ci} DE_WARN_UNUSED_TYPE; 49e5c31af7Sopenharmony_ci 50e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, bool value); 51e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, deInt8 value); 52e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, deUint8 value); 53e5c31af7Sopenharmony_ci 54e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, deInt16 value); 55e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, deUint16 value); 56e5c31af7Sopenharmony_ci 57e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, deInt32 value); 58e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, deUint32 value); 59e5c31af7Sopenharmony_ci 60e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, deInt64 value); 61e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, deUint64 value); 62e5c31af7Sopenharmony_ci 63e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, float value); 64e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, double value); 65e5c31af7Sopenharmony_ci 66e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, const std::string& value); 67e5c31af7Sopenharmony_ci 68e5c31af7Sopenharmony_citemplate<class T, int Size> 69e5c31af7Sopenharmony_ciSeedBuilder& operator<< (SeedBuilder& builder, const tcu::Vector<T, Size>& value) 70e5c31af7Sopenharmony_ci{ 71e5c31af7Sopenharmony_ci for (int i = 0; i < Size; i++) 72e5c31af7Sopenharmony_ci builder << value[i]; 73e5c31af7Sopenharmony_ci 74e5c31af7Sopenharmony_ci return builder; 75e5c31af7Sopenharmony_ci} 76e5c31af7Sopenharmony_ci 77e5c31af7Sopenharmony_ci} // tcu 78e5c31af7Sopenharmony_ci 79e5c31af7Sopenharmony_ci#endif // _TCUSEEDBUILDER_HPP 80