6 #include "AttributeModifier.h"
7 #include "SmartPointer.h"
14 CoreItemSP item=
nullptr;
15 kstl::string ref_file=
"";
17 void InitWithJSON(
const kstl::string& currentval,
CoreModifiable* owner);
18 bool ExportToString(kstl::string& value)
const;
33 template<
int notificationLevel>
34 class maCoreItemHeritage :
public CoreModifiableAttributeData<maCoreItemValue>
36 DECLARE_ATTRIBUTE_HERITAGE_NO_ASSIGN(maCoreItemHeritage, maCoreItemHeritage, maCoreItemValue, CoreModifiable::ATTRIBUTE_TYPE::COREITEM);
41 maCoreItemHeritage(
CoreModifiable& owner,
bool isInitAttribute, KigsID ID, kstl::string value) : CoreModifiableAttributeData(owner, isInitAttribute, ID )
45 mValue.InitWithJSON(value, &owner);
51 virtual bool getValue(
bool& value)
const override {
if (!mValue.item.isNil()) { value = (bool)(*mValue.item.get());
return true; }
return false; }
52 virtual bool getValue(
int& value)
const override {
if (!mValue.item.isNil()) { value = (int)(*mValue.item.get());
return true; }
return false; }
53 virtual bool getValue(
unsigned int& value)
const override {
if (!mValue.item.isNil()) { value = (
unsigned int)(*mValue.item.get());
return true; }
return false; }
54 virtual bool getValue(kfloat& value)
const override {
if (!mValue.item.isNil()) { value = (kfloat)(*mValue.item.get());
return true; }
return false; }
55 virtual bool getValue(kstl::string& value)
const override
57 if (!mValue.item.isNil())
59 return mValue.ExportToString(value);
63 virtual bool getValue(CoreItem*& value)
const override
65 value = (CoreItem*)mValue.item.get();
68 virtual bool getValue(
void*& value)
const override { value = (
void*)mValue.item.get();
return true; }
73 virtual bool setValue(
const char* value)
override
78 mValue.InitWithJSON(value, this->mOwner);
79 DO_NOTIFICATION(notificationLevel);
82 virtual bool setValue(
const kstl::string& value)
override
87 mValue.InitWithJSON(value, this->mOwner);
88 DO_NOTIFICATION(notificationLevel);
91 virtual bool setValue(CoreItem* value)
override
96 if (mValue.item != value)
98 mValue.item = CoreItemSP(value,
GetRefTag{});
100 DO_NOTIFICATION(notificationLevel);
106 operator CoreItem*() {
return mValue.item.get(); }
108 operator CoreItem&() {
return (*mValue.item.get()); }
110 CoreItem& ref() {
return (*mValue.item.get()); }
112 const CoreItem& const_ref() {
return (*mValue.item.get()); }
113 const kstl::string& getRefFile() {
return mValue.ref_file; }
129 using maCoreItem = maCoreItemHeritage<0>;
131 #endif //_MACOREITEM_H