15#ifndef VIPROXYSTRUCTTYPE_HPP
16#define VIPROXYSTRUCTTYPE_HPP
25#include "UtMemory.hpp"
50 bool IsUnset(
void* aValuePtr)
const override;
62 void SetInherited(
void* aValuePtr,
bool aIsInherited)
const override
77 const WsfPProxyStructType* pStruct =
this;
78 bool isTypeOf =
false;
80 while ((pStruct !=
nullptr) && !isTypeOf)
82 isTypeOf = (aTypeName == pStruct->
mTypeName);
91 void ClearUnset(
void* aValuePtr)
const override;
103 void Construct(
void* aValuePtr)
const override;
106 void Destroy(
void* aValuePtr)
const override;
113 const std::vector<std::string>& aNames,
114 const std::vector<AttrData>& aLocalAttributes,
115 const std::map<std::string, int>& aNameToIndexMap);
122 ptrdiff_t GetStructSize()
const {
return mStructSize; }
124 void ConstructP(WsfPProxyStructHeader* aHdr,
125 const WsfPProxyStructValue* aCopyFromPtr =
nullptr,
129 size_t InitGetAttrCount();
132 void InitializeBase(WsfPProxyStructType* aBasePtr,
size_t& aCurrentOffset,
size_t& aAttributeIndex);
138 void CopyInstance(WsfPProxyStructValue& aDest, WsfPProxyStructValue& aSrc,
int copyFlags)
const;
141 void Copy(
void* aDest,
void* aSrc,
int copyFlags)
const override;
157 return ut::cast_to_size_t(i->second);
164 if (
this == aOtherType)
172 return mBasePtr->IsTypeOf(aOtherType);
210class WSF_PARSER_EXPORT WsfPProxyStructType::
Builder
214 : mParseStructPtr(nullptr)
224 mNameToIndex = mBasePtr->mNameToIndex;
225 mNames = mBasePtr->mAllNames;
232 mParseStructPtr = aParseStruct;
240 mNameToIndex[aName] = ut::cast_to_int(mNames.size());
241 mNames.push_back(aName);
242 mLocalAttributes.emplace_back(aType);
247 std::unique_ptr<WsfPProxyStructType>
build()
249 return std::unique_ptr<WsfPProxyStructType>(
250 new WsfPProxyStructType(mParseStructPtr, mBasePtr, mNames, mLocalAttributes, mNameToIndex));
256 std::vector<std::string> mNames;
Definition WsfPProxyKey.hpp:24
Definition WsfPProxyStructType.hpp:211
Builder & SetBaseStruct(WsfPProxyStructType *aBasePtr)
Definition WsfPProxyStructType.hpp:219
Builder & AddAttribute(const std::string &aName, WsfPProxyType *aType)
Definition WsfPProxyStructType.hpp:236
Builder & SetParseStruct(WsfParseStruct *aParseStruct)
Definition WsfPProxyStructType.hpp:230
std::unique_ptr< WsfPProxyStructType > build()
Definition WsfPProxyStructType.hpp:247
Builder()
Definition WsfPProxyStructType.hpp:213
Definition WsfPProxyStructType.hpp:33
std::vector< std::string > mAllNames
Definition WsfPProxyStructType.hpp:198
void ClearUnset(void *aValuePtr) const override
Definition WsfPProxyStructType.cpp:149
size_t MemoryUsage(void *aDataPtr) const override
Definition WsfPProxyStructType.cpp:104
~WsfPProxyStructType() override
Definition WsfPProxyStructType.cpp:36
bool IsInherited(void *aValuePtr) const override
Definition WsfPProxyStructType.hpp:57
bool mEmbedded
Definition WsfPProxyStructType.hpp:206
void DestroyInstance(WsfPProxyStructValue aInstance) const
Definition WsfPProxyStructType.cpp:228
WsfPProxyType * GetContainedType(size_t aIndex) const override
Definition WsfPProxyStructType.hpp:92
void SetInherited(void *aValuePtr, bool aIsInherited) const override
Definition WsfPProxyStructType.hpp:62
void Copy(void *aDest, void *aSrc, int copyFlags) const override
Definition WsfPProxyStructType.cpp:123
void Construct(void *aValuePtr) const override
Definition WsfPProxyStructType.cpp:41
void ConstructAttr(const AttrData &aAttr, void *aValuePtr) const
Definition WsfPProxyStructType.cpp:214
void SetUnset(void *aValuePtr) const override
Definition WsfPProxyStructType.hpp:52
std::vector< size_t > mDynamicAttributes
Indices of attributes that are not in the real struct.
Definition WsfPProxyStructType.hpp:193
WsfPProxyStructType * mBasePtr
Pointer to base struct.
Definition WsfPProxyStructType.hpp:183
void CopyInstance(WsfPProxyStructValue &aDest, WsfPProxyStructValue &aSrc, int copyFlags) const
Definition WsfPProxyStructType.cpp:245
bool IsTypeOf(const WsfPProxyType *aOtherType) const override
Definition WsfPProxyStructType.hpp:162
WsfPProxyStructValue GetInstance(WsfPProxyStructHeader *aHeader) const
Definition WsfPProxyStructType.hpp:139
void Destroy(void *aValuePtr) const override
Definition WsfPProxyStructType.cpp:141
void Initialize()
Definition WsfPProxyStructType.cpp:50
bool SwapAttr(void *aPtr, const WsfPProxyKey &aKey, WsfPProxyValue &aValue) const override
Definition WsfPProxyStructType.cpp:322
bool mInitialized
Definition WsfPProxyStructType.hpp:203
WsfPProxyValue GetAtIndex(void *aDataPtr, size_t aIndex) const override
Definition WsfPProxyStructType.hpp:97
size_t GetMemberIndex(const std::string &aName) const override
Definition WsfPProxyStructType.hpp:152
std::map< std::string, int > NameToIndexMap
Map an attribute name to the index.
Definition WsfPProxyStructType.hpp:196
WsfPProxyValue GetMemberValue(void *aPtr, size_t aIndex) const
Definition WsfPProxyStructType.cpp:269
std::string GetNameAtIndex(size_t aIndex) const override
Definition WsfPProxyStructType.cpp:352
WsfPProxyValue GetAttr(void *aPtr, const std::string &aName) const override
Definition WsfPProxyStructType.cpp:295
WsfParseStruct * mParseStructPtr
Definition WsfPProxyStructType.hpp:207
NameToIndexMap mNameToIndex
Definition WsfPProxyStructType.hpp:197
WsfPProxyStructValue mDefaultStruct
Definition WsfPProxyStructType.hpp:201
WsfPProxyStructValue GetDefaultValue() const
Definition WsfPProxyStructType.hpp:176
std::vector< AttrData > mAttrData
Definition WsfPProxyStructType.hpp:190
size_t GetMemberCount() const
Definition WsfPProxyStructType.hpp:147
bool IsOfBasicType(const std::string &aTypeName) const override
Definition WsfPProxyStructType.hpp:75
bool IsUnset(void *aValuePtr) const override
Definition WsfPProxyStructType.cpp:155
ptrdiff_t mStructSize
Size in bytes of the actual structure.
Definition WsfPProxyStructType.hpp:181
std::vector< AttrData > mLocalAttributes
Attributes for this struct, not including base classes.
Definition WsfPProxyStructType.hpp:186
virtual bool IsInitialized() const
Definition WsfPProxyStructType.hpp:178
size_t GetAttrCount(void *aPtr) const override
Definition WsfPProxyStructType.cpp:290
WsfParseStruct * GetParseStruct()
Definition WsfPProxyStructType.hpp:89
Definition WsfPProxyStructValue.hpp:23
WsfPProxyType(WsfProxy::ValueKind aKind)
Definition WsfPProxyType.hpp:39
std::string mTypeName
Definition WsfPProxyType.hpp:59
Definition WsfPProxyValue.hpp:33
Definition WsfParseRule.hpp:527
@ cCOPY_ALL
Definition WsfPProxyCommon.hpp:104
Definition WsfSensorErrorModel.hpp:21
Definition WsfPProxyStructType.hpp:36
size_t mOffset
Definition WsfPProxyStructType.hpp:43
WsfPProxyType * mTypePtr
Definition WsfPProxyStructType.hpp:42
AttrData(WsfPProxyType *aTypePtr=nullptr)
Definition WsfPProxyStructType.hpp:37