1 /* 2 * Copyright (c) 2024 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 META_SRC_SERIALIZATION_JSON_IMPORTER_H 17 #define META_SRC_SERIALIZATION_JSON_IMPORTER_H 18 19 #include "../base_object.h" 20 #include "importer.h" 21 META_BEGIN_NAMESPACE()22META_BEGIN_NAMESPACE() 23 namespace Serialization { 24 25 class JsonImporter : public IntroduceInterfaces<BaseObject, IFileImporter> { 26 META_OBJECT(JsonImporter, ClassId::JsonImporter, IntroduceInterfaces) 27 public: 28 JsonImporter(); 29 IObject::Ptr Import(CORE_NS::IFile& input) override; 30 ISerNode::Ptr ImportAsTree(CORE_NS::IFile& input) override; 31 BASE_NS::vector<ISerTransformation::Ptr> GetTransformations() const override; 32 void SetTransformations(BASE_NS::vector<ISerTransformation::Ptr>) override; 33 private: 34 ISerNode::Ptr Transform(ISerNode::Ptr tree, const Version& ver); 35 private: 36 BASE_NS::vector<ISerTransformation::Ptr> transformations_; 37 }; 38 39 } // namespace Serialization 40 META_END_NAMESPACE() 41 42 #endif 43