18bf80f4bSopenharmony_ci/* 28bf80f4bSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 38bf80f4bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 48bf80f4bSopenharmony_ci * you may not use this file except in compliance with the License. 58bf80f4bSopenharmony_ci * You may obtain a copy of the License at 68bf80f4bSopenharmony_ci * 78bf80f4bSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 88bf80f4bSopenharmony_ci * 98bf80f4bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 108bf80f4bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 118bf80f4bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 128bf80f4bSopenharmony_ci * See the License for the specific language governing permissions and 138bf80f4bSopenharmony_ci * limitations under the License. 148bf80f4bSopenharmony_ci */ 158bf80f4bSopenharmony_ci#include <meta/interface/builtin_objects.h> 168bf80f4bSopenharmony_ci#include <meta/interface/intf_future.h> 178bf80f4bSopenharmony_ci#include <meta/interface/intf_object_registry.h> 188bf80f4bSopenharmony_ci#include <meta/interface/intf_task_queue.h> 198bf80f4bSopenharmony_ci 208bf80f4bSopenharmony_ci#include "attachment_container.h" 218bf80f4bSopenharmony_ci#include "base_object.h" 228bf80f4bSopenharmony_ci#include "connector.h" 238bf80f4bSopenharmony_ci#include "container/object_container.h" 248bf80f4bSopenharmony_ci#include "container/object_flat_container.h" 258bf80f4bSopenharmony_ci#include "container_observer.h" 268bf80f4bSopenharmony_ci#include "engine/engine_input_property_manager.h" 278bf80f4bSopenharmony_ci#include "functions.h" 288bf80f4bSopenharmony_ci#include "loaders/class_content_loader.h" 298bf80f4bSopenharmony_ci#include "loaders/csv_string_resource_loader.h" 308bf80f4bSopenharmony_ci#include "loaders/json_content_loader.h" 318bf80f4bSopenharmony_ci#include "meta_object.h" 328bf80f4bSopenharmony_ci#include "model/composite_object_provider.h" 338bf80f4bSopenharmony_ci#include "model/container_data_model.h" 348bf80f4bSopenharmony_ci#include "model/content_loader_object_provider.h" 358bf80f4bSopenharmony_ci#include "model/instantiating_object_provider.h" 368bf80f4bSopenharmony_ci#include "number.h" 378bf80f4bSopenharmony_ci#include "object.h" 388bf80f4bSopenharmony_ci#include "object_context.h" 398bf80f4bSopenharmony_ci#include "object_hierarchy_observer.h" 408bf80f4bSopenharmony_ci#include "property/bind.h" 418bf80f4bSopenharmony_ci#include "proxy_object.h" 428bf80f4bSopenharmony_ci#include "serialization/backend/debug_output.h" 438bf80f4bSopenharmony_ci#include "serialization/backend/json_input.h" 448bf80f4bSopenharmony_ci#include "serialization/backend/json_output.h" 458bf80f4bSopenharmony_ci#include "serialization/exporter.h" 468bf80f4bSopenharmony_ci#include "serialization/importer.h" 478bf80f4bSopenharmony_ci#include "serialization/json_exporter.h" 488bf80f4bSopenharmony_ci#include "serialization/json_importer.h" 498bf80f4bSopenharmony_ci#include "serialization/ser_nodes.h" 508bf80f4bSopenharmony_ci#include "startable_object_controller.h" 518bf80f4bSopenharmony_ci 528bf80f4bSopenharmony_ciMETA_BEGIN_NAMESPACE() 538bf80f4bSopenharmony_ci 548bf80f4bSopenharmony_ciIObjectFactory::Ptr GetManualClockFactory(); 558bf80f4bSopenharmony_ciIObjectFactory::Ptr GetSystemClockFactory(); 568bf80f4bSopenharmony_ci 578bf80f4bSopenharmony_cinamespace Internal { 588bf80f4bSopenharmony_ci 598bf80f4bSopenharmony_ciIObjectFactory::Ptr GetPollingTaskQueueFactory(); 608bf80f4bSopenharmony_ciIObjectFactory::Ptr GetThreadedTaskQueueFactory(); 618bf80f4bSopenharmony_ciIObjectFactory::Ptr GetPromiseFactory(); 628bf80f4bSopenharmony_ciIObjectFactory::Ptr GetContentObjectFactory(); 638bf80f4bSopenharmony_ci 648bf80f4bSopenharmony_cistatic constexpr ObjectTypeInfo OBJECTS[] = { MetaObject::OBJECT_INFO, Object::OBJECT_INFO, 658bf80f4bSopenharmony_ci ObjectContainer::OBJECT_INFO, ObjectFlatContainer::OBJECT_INFO, ProxyObject::OBJECT_INFO, 668bf80f4bSopenharmony_ci ContainerObserver::OBJECT_INFO, SettableFunction::OBJECT_INFO, PropertyFunction::OBJECT_INFO, 678bf80f4bSopenharmony_ci ObjectContext::OBJECT_INFO, AttachmentContainer::OBJECT_INFO, ContainerDataModel::OBJECT_INFO, 688bf80f4bSopenharmony_ci CompositeObjectProvider::OBJECT_INFO, InstantiatingObjectProvider::OBJECT_INFO, 698bf80f4bSopenharmony_ci ContentLoaderObjectProvider::OBJECT_INFO, CsvStringResourceLoader::OBJECT_INFO, ClassContentLoader::OBJECT_INFO, 708bf80f4bSopenharmony_ci ObjectHierarchyObserver::OBJECT_INFO, StartableObjectController::OBJECT_INFO, Internal::Number::OBJECT_INFO, 718bf80f4bSopenharmony_ci Connector::OBJECT_INFO, JsonContentLoader::OBJECT_INFO, EngineValueManager::OBJECT_INFO, 728bf80f4bSopenharmony_ci EngineInputPropertyManager::OBJECT_INFO }; 738bf80f4bSopenharmony_ci 748bf80f4bSopenharmony_civoid RegisterBuiltInObjects(IObjectRegistry& registry) 758bf80f4bSopenharmony_ci{ 768bf80f4bSopenharmony_ci registry.RegisterObjectType<META_NS::BaseObject>(); 778bf80f4bSopenharmony_ci for (auto& t : OBJECTS) { 788bf80f4bSopenharmony_ci registry.RegisterObjectType(t.GetFactory()); 798bf80f4bSopenharmony_ci } 808bf80f4bSopenharmony_ci registry.RegisterObjectType(GetManualClockFactory()); 818bf80f4bSopenharmony_ci registry.RegisterObjectType(GetSystemClockFactory()); 828bf80f4bSopenharmony_ci registry.RegisterObjectType(GetPollingTaskQueueFactory()); 838bf80f4bSopenharmony_ci registry.RegisterObjectType(GetThreadedTaskQueueFactory()); 848bf80f4bSopenharmony_ci registry.RegisterObjectType(GetPromiseFactory()); 858bf80f4bSopenharmony_ci registry.RegisterObjectType(GetContentObjectFactory()); 868bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::Exporter>(); 878bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::JsonExporter>(); 888bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::Importer>(); 898bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::JsonImporter>(); 908bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::DebugOutput>(); 918bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::JsonOutput>(); 928bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::JsonInput>(); 938bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::NilNode>(); 948bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::MapNode>(); 958bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::ArrayNode>(); 968bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::ObjectNode>(); 978bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::RootNode>(); 988bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::BoolNode>(); 998bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::IntNode>(); 1008bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::UIntNode>(); 1018bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::DoubleNode>(); 1028bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::StringNode>(); 1038bf80f4bSopenharmony_ci registry.RegisterObjectType<Serialization::RefNode>(); 1048bf80f4bSopenharmony_ci registry.RegisterObjectType<Bind>(); 1058bf80f4bSopenharmony_ci} 1068bf80f4bSopenharmony_ci 1078bf80f4bSopenharmony_civoid UnRegisterBuiltInObjects(IObjectRegistry& registry) 1088bf80f4bSopenharmony_ci{ 1098bf80f4bSopenharmony_ci registry.UnregisterObjectType<Bind>(); 1108bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::NilNode>(); 1118bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::MapNode>(); 1128bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::ArrayNode>(); 1138bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::ObjectNode>(); 1148bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::RootNode>(); 1158bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::BoolNode>(); 1168bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::IntNode>(); 1178bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::UIntNode>(); 1188bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::DoubleNode>(); 1198bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::StringNode>(); 1208bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::RefNode>(); 1218bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::NilNode>(); 1228bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::JsonInput>(); 1238bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::JsonOutput>(); 1248bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::DebugOutput>(); 1258bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::JsonImporter>(); 1268bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::Importer>(); 1278bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::JsonExporter>(); 1288bf80f4bSopenharmony_ci registry.UnregisterObjectType<Serialization::Exporter>(); 1298bf80f4bSopenharmony_ci registry.UnregisterObjectType(GetContentObjectFactory()); 1308bf80f4bSopenharmony_ci registry.UnregisterObjectType(GetManualClockFactory()); 1318bf80f4bSopenharmony_ci registry.UnregisterObjectType(GetSystemClockFactory()); 1328bf80f4bSopenharmony_ci registry.UnregisterObjectType(GetPollingTaskQueueFactory()); 1338bf80f4bSopenharmony_ci registry.UnregisterObjectType(GetThreadedTaskQueueFactory()); 1348bf80f4bSopenharmony_ci registry.UnregisterObjectType(GetPromiseFactory()); 1358bf80f4bSopenharmony_ci for (auto& t : OBJECTS) { 1368bf80f4bSopenharmony_ci registry.UnregisterObjectType(t.GetFactory()); 1378bf80f4bSopenharmony_ci } 1388bf80f4bSopenharmony_ci registry.UnregisterObjectType<META_NS::BaseObject>(); 1398bf80f4bSopenharmony_ci} 1408bf80f4bSopenharmony_ci} // namespace Internal 1418bf80f4bSopenharmony_ciMETA_END_NAMESPACE() 142