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 27META_BEGIN_NAMESPACE() 28namespace Internal { 29 30// IObject 31InstanceId BaseObject::GetInstanceId() const 32{ 33 return instanceId_; 34} 35 36BASE_NS::string BaseObject::GetName() const 37{ 38 return GetInstanceId().ToString(); 39} 40 41IObject::Ptr BaseObject::Resolve(const RefUri& uri) const 42{ 43 return DefaultResolveObject(me_.lock(), uri); 44} 45 46IObject::Ptr BaseObject::GetSelf() const 47{ 48 return me_.lock(); 49} 50 51BASE_NS::vector<BASE_NS::Uid> BaseObject::GetInterfaces() const 52{ 53 return IntroduceInterfaces::GetInterfacesVector(); 54} 55 56ObjectFlagBitsValue BaseObject::GetObjectFlags() const 57{ 58 return flags_; 59} 60 61void BaseObject::SetObjectFlags(const ObjectFlagBitsValue& value) 62{ 63 flags_ = value; 64} 65 66ObjectFlagBitsValue BaseObject::GetObjectDefaultFlags() const 67{ 68 return ObjectFlagBits::DEFAULT_FLAGS; 69} 70 71// IDerived 72void BaseObject::SetSuperInstance(const IObject::Ptr& aggr, const IObject::Ptr& super) 73{ 74 me_ = interface_pointer_cast<IObjectInstance>(aggr); 75} 76BASE_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 83bool BaseObject::Build(const IMetadata::Ptr&) 84{ 85 // Set object flags to class default. 86 SetObjectFlags(GetObjectDefaultFlags()); 87 return true; 88} 89void BaseObject::SetInstanceId(InstanceId uid) 90{ 91 instanceId_ = uid; 92} 93void BaseObject::Destroy() 94{ 95 GetObjectRegistry().DisposeObject(instanceId_); 96} 97 98IObjectRegistry& BaseObject::GetObjectRegistry() const 99{ 100 return META_NS::GetObjectRegistry(); 101} 102 103} // namespace Internal 104 105META_END_NAMESPACE() 106