* Copyright (c) 2022 Huawei Device Co., Ltd.
* 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.
*/
#include "assemblyFieldProto.h"
namespace panda::proto {
void Field::Serialize(const panda::pandasm::Field &field, protoPanda::Field &protoField)
{
auto *protoType = protoField.mutable_type();
Type::Serialize(field.type, *protoType);
protoField.set_name(field.name);
auto *protoFieldmeta = protoField.mutable_metadata();
FieldMetadata::Serialize(*field.metadata, *protoFieldmeta);
protoField.set_lineofdef(field.line_of_def);
protoField.set_wholeline(field.whole_line);
protoField.set_boundleft(field.bound_left);
protoField.set_boundright(field.bound_right);
protoField.set_isdefined(field.is_defined);
}
void Field::Deserialize(const protoPanda::Field &protoField, panda::pandasm::Field &field,
panda::ArenaAllocator *allocator)
{
field.type = Type::Deserialize(protoField.type(), allocator);
field.name = protoField.name();
FieldMetadata::Deserialize(protoField.metadata(), field.metadata, allocator);
field.line_of_def = protoField.lineofdef();
field.whole_line = protoField.wholeline();
field.bound_left = protoField.boundleft();
field.bound_right = protoField.boundright();
field.is_defined = protoField.isdefined();
}
}