1*834a2baaSAndroid Build Coastguard Worker /* 2*834a2baaSAndroid Build Coastguard Worker * Copyright (C) 2020 The Android Open Source Project 3*834a2baaSAndroid Build Coastguard Worker * 4*834a2baaSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*834a2baaSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*834a2baaSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*834a2baaSAndroid Build Coastguard Worker * 8*834a2baaSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*834a2baaSAndroid Build Coastguard Worker * 10*834a2baaSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*834a2baaSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*834a2baaSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*834a2baaSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*834a2baaSAndroid Build Coastguard Worker * limitations under the License. 15*834a2baaSAndroid Build Coastguard Worker */ 16*834a2baaSAndroid Build Coastguard Worker 17*834a2baaSAndroid Build Coastguard Worker #ifndef MINIKIN_TEST_BUFFER_UTILS_H 18*834a2baaSAndroid Build Coastguard Worker #define MINIKIN_TEST_BUFFER_UTILS_H 19*834a2baaSAndroid Build Coastguard Worker 20*834a2baaSAndroid Build Coastguard Worker #include <minikin/Buffer.h> 21*834a2baaSAndroid Build Coastguard Worker #include <vector> 22*834a2baaSAndroid Build Coastguard Worker 23*834a2baaSAndroid Build Coastguard Worker namespace minikin { 24*834a2baaSAndroid Build Coastguard Worker 25*834a2baaSAndroid Build Coastguard Worker template <class T> allocateBuffer(const T & t)26*834a2baaSAndroid Build Coastguard Workerstd::vector<uint8_t> allocateBuffer(const T& t) { 27*834a2baaSAndroid Build Coastguard Worker BufferWriter writer(nullptr); 28*834a2baaSAndroid Build Coastguard Worker t.writeTo(&writer); 29*834a2baaSAndroid Build Coastguard Worker // Fill with 0xFF for debugging. 30*834a2baaSAndroid Build Coastguard Worker return std::vector<uint8_t>(writer.size(), 0xFFu); 31*834a2baaSAndroid Build Coastguard Worker } 32*834a2baaSAndroid Build Coastguard Worker 33*834a2baaSAndroid Build Coastguard Worker template <class T, auto arg> allocateBuffer(const T & t)34*834a2baaSAndroid Build Coastguard Workerstd::vector<uint8_t> allocateBuffer(const T& t) { 35*834a2baaSAndroid Build Coastguard Worker BufferWriter writer(nullptr); 36*834a2baaSAndroid Build Coastguard Worker t.template writeTo<arg>(&writer); 37*834a2baaSAndroid Build Coastguard Worker // Fill with 0xFF for debugging. 38*834a2baaSAndroid Build Coastguard Worker return std::vector<uint8_t>(writer.size(), 0xFFu); 39*834a2baaSAndroid Build Coastguard Worker } 40*834a2baaSAndroid Build Coastguard Worker 41*834a2baaSAndroid Build Coastguard Worker template <class T> writeToBuffer(const T & t)42*834a2baaSAndroid Build Coastguard Workerstd::vector<uint8_t> writeToBuffer(const T& t) { 43*834a2baaSAndroid Build Coastguard Worker std::vector<uint8_t> buffer = allocateBuffer(t); 44*834a2baaSAndroid Build Coastguard Worker BufferWriter writer(buffer.data()); 45*834a2baaSAndroid Build Coastguard Worker t.writeTo(&writer); 46*834a2baaSAndroid Build Coastguard Worker return buffer; 47*834a2baaSAndroid Build Coastguard Worker } 48*834a2baaSAndroid Build Coastguard Worker 49*834a2baaSAndroid Build Coastguard Worker } // namespace minikin 50*834a2baaSAndroid Build Coastguard Worker 51*834a2baaSAndroid Build Coastguard Worker #endif // MINIKIN_TEST_BUFFER_UTILS_H 52