/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include #include #include #include #include namespace apache::thrift::type { const auto kMagicNumber = 13370; const auto kMagicString = "13370"; using Tags = ::testing::Types< bool_t, byte_t, i16_t, i32_t, i64_t, float_t, double_t, string_t, binary_t, list, set, map, struct_t>; template inline const native_type tagToValue = kMagicNumber; template <> inline const bool tagToValue = true; template <> inline const std::int8_t tagToValue = 0x75; template <> inline const std::string tagToValue = kMagicString; template <> inline const std::string tagToValue = kMagicString; template <> inline const std::vector tagToValue> = { kMagicNumber, 0}; template <> inline const std::set tagToValue> = {kMagicNumber, 0}; template <> inline const std::map tagToValue> = { {0, 0}, {kMagicNumber, 0}}; template <> inline const test::AnyTestStruct tagToValue> = [] { test::AnyTestStruct ret; ret.foo() = kMagicNumber; return ret; }(); template < class TypeParam, StandardProtocol protocol = StandardProtocol::Compact> AnyData toAnyData() { return AnyData::toAny(tagToValue); } } // namespace apache::thrift::type