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 #include "base_object.h" 16 17 #include <base/util/uid_util.h> 18 #include <core/plugin/intf_class_factory.h> 19 20 #include <meta/interface/builtin_objects.h> 21 #include <meta/interface/intf_object_registry.h> 22 #include <meta/interface/intf_proxy_object.h> 23 #include <meta/interface/property/intf_property_internal.h> 24 25 #include "ref_uri_util.h" 26 27 META_BEGIN_NAMESPACE() 28 namespace Internal { 29 30 // IObject GetInstanceId() const31InstanceId BaseObject::GetInstanceId() const 32 { 33 return instanceId_; 34 } 35 GetName() const36BASE_NS::string BaseObject::GetName() const 37 { 38 return GetInstanceId().ToString(); 39 } 40 Resolve(const RefUri & uri) const41IObject::Ptr BaseObject::Resolve(const RefUri& uri) const 42 { 43 return DefaultResolveObject(me_.lock(), uri); 44 } 45 GetSelf() const46IObject::Ptr BaseObject::GetSelf() const 47 { 48 return me_.lock(); 49 } 50 GetInterfaces() const51BASE_NS::vector<BASE_NS::Uid> BaseObject::GetInterfaces() const 52 { 53 return IntroduceInterfaces::GetInterfacesVector(); 54 } 55 GetObjectFlags() const56ObjectFlagBitsValue BaseObject::GetObjectFlags() const 57 { 58 return flags_; 59 } 60 SetObjectFlags(const ObjectFlagBitsValue & value)61void BaseObject::SetObjectFlags(const ObjectFlagBitsValue& value) 62 { 63 flags_ = value; 64 } 65 GetObjectDefaultFlags() const66ObjectFlagBitsValue BaseObject::GetObjectDefaultFlags() const 67 { 68 return ObjectFlagBits::DEFAULT_FLAGS; 69 } 70 71 // IDerived SetSuperInstance(const IObject::Ptr & aggr,const IObject::Ptr & super)72void BaseObject::SetSuperInstance(const IObject::Ptr& aggr, const IObject::Ptr& super) 73 { 74 me_ = interface_pointer_cast<IObjectInstance>(aggr); 75 } GetSuperClassUid() const76BASE_NS::Uid BaseObject::GetSuperClassUid() const 77 { 78 // empty uid is "invalid", which means do not create a sub object ... 79 return {}; 80 } 81 82 // ILifecycle Build(const IMetadata::Ptr &)83bool BaseObject::Build(const IMetadata::Ptr&) 84 { 85 // Set object flags to class default. 86 SetObjectFlags(GetObjectDefaultFlags()); 87 return true; 88 } SetInstanceId(InstanceId uid)89void BaseObject::SetInstanceId(InstanceId uid) 90 { 91 instanceId_ = uid; 92 } Destroy()93void BaseObject::Destroy() 94 { 95 GetObjectRegistry().DisposeObject(instanceId_); 96 } 97 GetObjectRegistry() const98IObjectRegistry& BaseObject::GetObjectRegistry() const 99 { 100 return META_NS::GetObjectRegistry(); 101 } 102 103 } // namespace Internal 104 105 META_END_NAMESPACE() 106