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