1/** 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#ifndef MERGE_ABC_META_H 17#define MERGE_ABC_META_H 18 19#include "annotationProto.h" 20#include "arena_allocator.h" 21#include "assembly-program.h" 22#include "assemblyTypeProto.h" 23#include "meta.pb.h" 24 25namespace panda::proto { 26class RecordMetadata { 27public: 28 static void Serialize(const panda::pandasm::RecordMetadata &meta, protoPanda::RecordMetadata &protoMeta); 29 static void Deserialize(const protoPanda::RecordMetadata &protoMeta, 30 std::unique_ptr<panda::pandasm::RecordMetadata> &meta, 31 panda::ArenaAllocator *allocator); 32}; 33 34class FunctionMetadata { 35public: 36 static void Serialize(const panda::pandasm::FunctionMetadata &meta, 37 protoPanda::FunctionMetadata &protoMeta); 38 static void Deserialize(const protoPanda::FunctionMetadata &protoMeta, 39 std::unique_ptr<panda::pandasm::FunctionMetadata> &meta, 40 panda::ArenaAllocator *allocator); 41}; 42 43class FieldMetadata { 44public: 45 static void Serialize(const panda::pandasm::FieldMetadata &meta, protoPanda::FieldMetadata &protoMeta); 46 static void Deserialize(const protoPanda::FieldMetadata &protoMeta, 47 std::unique_ptr<panda::pandasm::FieldMetadata> &meta, 48 panda::ArenaAllocator *allocator); 49}; 50 51class ParamMetadata { 52public: 53 static void Serialize(const panda::pandasm::ParamMetadata &meta, protoPanda::ParamMetadata &protoMeta); 54 static void Deserialize(const protoPanda::ParamMetadata &protoMeta, 55 std::unique_ptr<panda::pandasm::ParamMetadata> &meta, 56 panda::ArenaAllocator *allocator); 57}; 58 59class ItemMetadata { 60public: 61 static void Serialize(const panda::pandasm::ItemMetadata &meta, protoPanda::ItemMetadata &protoMeta); 62 static void Deserialize(const protoPanda::ItemMetadata &protoMeta, panda::pandasm::ItemMetadata &meta); 63}; 64 65class AnnotationMetadata { 66public: 67 static void Serialize(const panda::pandasm::AnnotationMetadata &meta, 68 protoPanda::AnnotationMetadata &protoMeta); 69 static void Deserialize(const protoPanda::AnnotationMetadata &protoMeta, panda::pandasm::AnnotationMetadata &meta, 70 panda::ArenaAllocator *allocator); 71}; 72 73class Metadata { 74public: 75 static void Serialize(const panda::pandasm::Metadata &meta, protoPanda::Metadata &protoMeta); 76 static void Deserialize(const protoPanda::Metadata &protoMeta, panda::pandasm::Metadata &meta); 77}; 78} // panda::proto 79#endif 80