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_INTERFACE_BUILTIN_OBJECTS_H
17 #define META_INTERFACE_BUILTIN_OBJECTS_H
18 
19 #include <meta/base/namespace.h>
20 #include <meta/base/types.h>
21 
META_BEGIN_NAMESPACE()22 META_BEGIN_NAMESPACE()
23 
24 namespace GlobalObjectInstance {
25 /** Instance id of the default object context instance */
26 [[maybe_unused]] constexpr static BASE_NS::Uid DEFAULT_OBJECT_CONTEXT { "3fe40d0f-4ec5-455c-a66d-dcd749b08194" };
27 } // namespace GlobalObjectInstance
28 
29 /** Base objects */
30 META_REGISTER_CLASS(BaseObject, "211f0da1-1a09-422c-8dd0-fbc493a72d08", ObjectCategoryBits::NO_CATEGORY)
31 META_REGISTER_CLASS(MetaObject, "10d92222-5b93-4380-9fb9-f839b63d1b4b", ObjectCategoryBits::NO_CATEGORY)
32 META_REGISTER_CLASS(Object, "b2377edc-27ec-4aa1-b071-636d78db63e2", ObjectCategoryBits::NO_CATEGORY)
33 META_REGISTER_CLASS(ObjectContext, "22b552eb-2caa-4b8a-9983-9817ab9fa92d", ObjectCategoryBits::INTERNAL)
34 META_REGISTER_CLASS(ProxyObject, "bd2164e1-b1b6-472a-8783-7787c7de9b36", ObjectCategoryBits::INTERNAL)
35 META_REGISTER_CLASS(ObjectContainer, "e25ec91e-f5cb-4afa-b277-a16c19da2e4a", ObjectCategoryBits::CONTAINER)
36 META_REGISTER_CLASS(ObjectFlatContainer, "30f501c2-7b62-44a4-911b-9b0ff2c850c4", ObjectCategoryBits::CONTAINER)
37 META_REGISTER_CLASS(AttachmentContainer, "d03551ab-8ef4-4b0b-98ba-f0edd2db6ba2", ObjectCategoryBits::INTERNAL)
38 META_REGISTER_CLASS(ContainerObserver, "a13844ca-9830-4dd2-8ecc-625563bcc5b0", ObjectCategoryBits::NO_CATEGORY)
39 META_REGISTER_CLASS(ObjectHierarchyObserver, "48cb1bb4-dd0a-44a5-a530-c2073e3a70df", ObjectCategoryBits::NO_CATEGORY)
40 
41 /** String pool */
42 META_REGISTER_CLASS(StringPool, "8fb945d5-a73e-44c5-be0e-c6f518900aef", ObjectCategoryBits::NO_CATEGORY)
43 
44 /** Json serializer */
45 META_REGISTER_CLASS(JsonSerializer, "71c930c7-91ad-45a5-8d47-044d70316ea5", ObjectCategoryBits::NO_CATEGORY);
46 
47 META_REGISTER_CLASS(SystemClock, "96a7dc3c-7532-4a0e-b6b1-3a406947419c", ObjectCategoryBits::NO_CATEGORY)
48 META_REGISTER_CLASS(ManualClock, "7069eb20-4fe8-4c78-8d98-9a5938b09170", ObjectCategoryBits::NO_CATEGORY)
49 
50 /** Property validators */
51 META_REGISTER_CLASS(ClampIntegerValidator, "3b8278a3-e50b-4e56-8cc1-990370ed5aa7", ObjectCategoryBits::NO_CATEGORY)
52 
53 /**
54  * @brief Implementation of data model that implements IContainer interface.
55  */
56 META_REGISTER_CLASS(ContainerDataModel, "84911f22-92ad-47fe-9399-cc0e9222affa", ObjectCategoryBits::NO_CATEGORY)
57 
58 /**
59  * @brief Implementation that instantiates objects with given class uid and sets properties from the data for this
60  * object Note: "Model." is added to the property names of data when added to the created object instance. CreateObject:
61  * Creates object by giving metadata from the model as Build argument. If object implements IRecyclable, Rebuild is
62  * being called with the metadata. Otherwise matching properties are added to the object and those bind to the original
63  * data. DisposeObject: If object implements IRecyclable, Dispose is called, otherwise all properties without NATIVE
64  * flag are reset. Recycles objects based on the cache hint.
65  */
66 META_REGISTER_CLASS(
67     InstantiatingObjectProvider, "208fc857-2d5c-4eb9-98e4-de45eba5e2ca", ObjectCategoryBits::NO_CATEGORY)
68 
69 /**
70  * @brief Implements object provider that uses content loader interface to create the objects.
71  */
72 META_REGISTER_CLASS(
73     ContentLoaderObjectProvider, "f5ab9348-43cf-4154-bdd6-11d7ed6082d6", ObjectCategoryBits::NO_CATEGORY)
74 
75 /**
76  * @brief Implementation that provides view over many IObjectProviders as single IObjectProvider. Implements IContainer.
77  */
78 META_REGISTER_CLASS(CompositeObjectProvider, "f0eaec42-f6b2-43f0-b487-52ddbda305bb", ObjectCategoryBits::NO_CATEGORY)
79 
80 /** Content loaders */
81 META_REGISTER_CLASS(CsvStringResourceLoader, "2e264ba2-a9a3-4f95-bac6-339b6c3ea033", ObjectCategoryBits::NO_CATEGORY)
82 META_REGISTER_CLASS(JsonContentLoader, "b9d3860f-2a7e-4ac0-8140-542aea4a5e09", ObjectCategoryBits::NO_CATEGORY)
83 META_REGISTER_CLASS(ClassContentLoader, "5d2bebca-f12c-11ec-8ea0-0242ac120002", ObjectCategoryBits::NO_CATEGORY)
84 
85 /**
86  * @brief Default Event <-> Meta function connector object.
87  */
88 META_REGISTER_CLASS(Connector, "5b643aaa-c6f2-4839-b145-3afcb04d4125", ObjectCategoryBits::NO_CATEGORY)
89 
90 /**
91  * @brief Function that refers to IObject's meta-function by name.
92  */
93 META_REGISTER_CLASS(SettableFunction, "9a3c3b9d-406c-487f-87c5-184c4b80724a", ObjectCategoryBits::NO_CATEGORY)
94 
95 /**
96  * @brief Function that returns value of a property.
97  */
98 META_REGISTER_CLASS(PropertyFunction, "d458e645-c83a-4cb6-be3d-2bc1720b384f", ObjectCategoryBits::NO_CATEGORY)
99 
100 /**
101  * @brief Object that contains another object, the searchability and serialisation for the contained object can be
102  * controlled.
103  */
104 META_REGISTER_CLASS(ContentObject, "a1e95c16-99df-42d9-bc94-600df414a43b", ObjectCategoryBits::NO_CATEGORY)
105 
106 /**
107  * @brief An object which can be used to control all IStartable instances that are (or become) part of an
108  *        object hierarchy.
109  */
110 META_REGISTER_CLASS(StartableObjectController, "8e6748be-3ff3-4b2a-8f7e-7b2d3fa2fc94", ObjectCategoryBits::NO_CATEGORY)
111 
112 META_REGISTER_CLASS(Exporter, "143ae57a-fb57-4130-ae7c-ae3aa4b56495", ObjectCategoryBits::NO_CATEGORY)
113 META_REGISTER_CLASS(Importer, "4fbc30f7-2225-4f2a-8dc4-7d23bdb7c782", ObjectCategoryBits::NO_CATEGORY)
114 
115 META_REGISTER_CLASS(JsonExporter, "fe5d68ca-334a-44e0-b8c0-9d44bf2dc9a6", ObjectCategoryBits::NO_CATEGORY)
116 META_REGISTER_CLASS(JsonImporter, "80f8cd0b-c5a9-4f19-bc36-5c83eb2926b4", ObjectCategoryBits::NO_CATEGORY)
117 
118 META_REGISTER_CLASS(DebugOutput, "cfb42445-363f-40d2-a231-1623b8028392", ObjectCategoryBits::NO_CATEGORY)
119 META_REGISTER_CLASS(JsonOutput, "dd4f3444-bc9d-436b-90c7-312793dc38f2", ObjectCategoryBits::NO_CATEGORY)
120 META_REGISTER_CLASS(JsonInput, "0b4587d2-af0d-4c67-bd6b-0386fa2de094", ObjectCategoryBits::NO_CATEGORY)
121 
122 META_REGISTER_CLASS(RootNode, "776bd8ab-a135-4108-bae3-233ce615b900", ObjectCategoryBits::NO_CATEGORY)
123 META_REGISTER_CLASS(NilNode, "776bd8ab-a135-4108-bae3-233ce615b901", ObjectCategoryBits::NO_CATEGORY)
124 META_REGISTER_CLASS(ObjectNode, "776bd8ab-a135-4108-bae3-233ce615b902", ObjectCategoryBits::NO_CATEGORY)
125 META_REGISTER_CLASS(ArrayNode, "776bd8ab-a135-4108-bae3-233ce615b903", ObjectCategoryBits::NO_CATEGORY)
126 META_REGISTER_CLASS(MapNode, "776bd8ab-a135-4108-bae3-233ce615b904", ObjectCategoryBits::NO_CATEGORY)
127 META_REGISTER_CLASS(BoolNode, "776bd8ab-a135-4108-bae3-233ce615b905", ObjectCategoryBits::NO_CATEGORY)
128 META_REGISTER_CLASS(IntNode, "776bd8ab-a135-4108-bae3-233ce615b906", ObjectCategoryBits::NO_CATEGORY)
129 META_REGISTER_CLASS(UIntNode, "776bd8ab-a135-4108-bae3-233ce615b907", ObjectCategoryBits::NO_CATEGORY)
130 META_REGISTER_CLASS(DoubleNode, "776bd8ab-a135-4108-bae3-233ce615b909", ObjectCategoryBits::NO_CATEGORY)
131 META_REGISTER_CLASS(StringNode, "776bd8ab-a135-4108-bae3-233ce615b90a", ObjectCategoryBits::NO_CATEGORY)
132 META_REGISTER_CLASS(RefNode, "776bd8ab-a135-4108-bae3-233ce615b90b", ObjectCategoryBits::NO_CATEGORY)
133 
134 META_REGISTER_CLASS(Bind, "27513ec5-8415-4491-b3f4-51205936cc5d", ObjectCategoryBits::NO_CATEGORY)
135 
136 // engine support
137 META_REGISTER_CLASS(EngineValueManager, "a63723d0-7755-4ca3-a9d6-983df6e12cff", ObjectCategoryBits::NO_CATEGORY)
138 META_REGISTER_CLASS(EngineInputPropertyManager, "10a81469-07c2-4cab-b8a5-3249e415cb5a", ObjectCategoryBits::NO_CATEGORY)
139 
140 META_END_NAMESPACE()
141 
142 #endif
143