nl:: बुना::प्रोफ़ाइलें::DataManagement_current::TraitSchemaEngine

#include <src/lib/profiles/data-management/Current/TraitData.h>

स्कीमा इंजन एक खास विशेषता से जुड़ी स्कीमा जानकारी लेता है और उसे पार्स करने और WDM मशीन से इस्तेमाल किए जाने लायक फ़ॉर्म में अनुवाद करने की सुविधाएं देता है.

खास जानकारी

इसमें पाथ हैंडल्स से WDM पाथ में बदलना (और इसके उलट), स्कीमा को समझने/समझने के तरीके और TLV को/से डेटा पढ़ने/लिखने में मदद करने के तरीके शामिल हैं.

स्कीमा खुद को टेबल फ़ॉर्मैट में स्टोर किया जाता है. इसकी जानकारी देने के लिए किसी खास विशेषता के लिए WDM पाथ/डेटा को सामान्य पार्सिंग/कंपोज़िशन की अनुमति दी जाती है. ये टेबल, 'code-gen' का अंतिम आउटपुट क्या होगा; (ऐसा शब्द जो किसी भी जनरेट किए गए कोड :P के मौजूद न होने की वजह से कुछ हद तक गुमराह करने वाला हो)

सार्वजनिक स्टैटिक विशेषताएं

kHandleTableOffset = 2
const uint32_t

सार्वजनिक विशेषताएं

mSchema
const Schema

सार्वजनिक फ़ंक्शन

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
दो प्रॉपर्टी हैंडल देने के लिए, सबसे कम हैंडल की गिनती करें जो इन दोनों हैंडल के लिए पैरंट के तौर पर काम करता है.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
दिए गए हैंडल के लिए स्कीमा ट्री में गहराई का हिसाब लगाएं.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
किसी खास अभिभावक से जुड़े पहले चाइल्ड हैंडल को दिखाता है.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
किसी दिए गए डेटा स्कीमा वर्शन को देखते हुए, ऐसा करने से वह सबसे सही फ़ॉरवर्ड किया गया स्कीमा वर्शन दिखेगा.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
दिए गए डेटा स्कीमा वर्शन को देखते हुए, इससे कम से कम काम करने वाला स्कीमा वर्शन दिखेगा.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
किसी खास पाथ हैंडल की जानकारी देने वाली PropertyInfo स्ट्रक्चर का पॉइंटर दिखाता है.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
किसी मौजूदा बच्चे को हैंडल देने के बाद, किसी खास अभिभावक से जुड़े अगले चाइल्ड हैंडल को दिखाता है.
GetParent(PropertyPathHandle aHandle) const
दिए गए चाइल्ड पाथ हैंडल का पैरंट हैंडल दिखाता है.
GetProfileId(void) const
uint32_t
इससे जुड़ी विशेषता का प्रोफ़ाइल आईडी दिखाता है.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
PropertyPathHandle को संदर्भ टैग की श्रेणी में बदलता है.
GetTag(PropertyPathHandle aHandle) const
uint64_t
पाथ हैंडल से जुड़ा टैग दिखाता है.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
वर्शन रेंज को देखते हुए यह फ़ंक्शन जांच करता है कि इस स्कीमा इंजन का इस्तेमाल करने वाले स्कीमा के साथ कम्पैटिबिलिटी इंटरसेक्शन मौजूद है या नहीं.
IsDictionary(PropertyPathHandle aHandle) const
bool
अगर हैंडल शब्दकोश में है (और शब्दकोश में नहीं है), तो 'सही' दिखाता है. नीचे दिया गया तरीका देखें.
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
अगर हैंडल किसी शब्दकोश के शब्दकोश (अंदरूनी) है, तो 'सही' दिखाता है.
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
अगर हैंडल स्कीमा पेड़ के पत्ती नोड के बारे में बताता है, तो यह 'सही' दिखाता है.
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
जांच करता है कि दिया गया हैंडल किसी दूसरे हैंडल का चाइल्ड है या नहीं.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
पाथ हैंडल को TLV पाथ में बदलें.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
रीडर को WDM पाथ एलिमेंट के रूट में रखते हुए, काम के टैग पढ़ें और उसी तरह का पाथ हैंडल दें.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
WDM पाथ के स्ट्रिंग प्रतिनिधित्व को देखते हुए संबंधित टैग को पढ़ें और समान पाथ हैंडल दें.
MatchesProfileId(uint32_t aProfileId) const
bool
अगर प्रोफ़ाइल में दिया गया पास, स्कीमा में सेव किए गए मान से मेल खाता है, तो 'सही' दिखाता है.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
संबंधित डेटा एलिमेंट पर पाथ के हैंडल और लेखक की स्थिति को देखते हुए, स्रोत से लीफ़ के डेटा को फिर से पाएं और उसे बफ़र की तरफ़ लिखें, जिसमें लेखक का स्कीमा तरीके से पालन करने का ज़िक्र किया गया है.
RetrieveUpdatableDictionaryData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom) const
StoreData(PropertyPathHandle aHandle, nl::Weave::TLV::TLVReader & aReader, ISetDataDelegate *aDelegate, IPathFilter *aPathFilter) const
पाथ हैंडल और एक रीडर को संबंधित डेटा एलिमेंट पर रखने की वजह से, रीडर में दिए गए डेटा बफ़र की प्रोसेस करें और जब भी लीफ़ डेटा आइटम मिलता है, तब setLeafData कॉल का अनुरोध करके उसे सिंक में सेव करें.

क्लास

nl:: बुनाई::प्रोफ़ाइल::DataManagement_current::TraitSchemaEngine::IGetDataDelegate
nl:: बुनाई::प्रोफ़ाइल::DataManagement_current::TraitSchemaEngine::ISetDataDelegate

स्ट्रक्चर

nl:: बुनाई::प्रोफ़ाइल::DataManagement_current::TraitSchemaEngine::PropertyInfo
nl:: बुनाई::प्रोफ़ाइल::DataManagement_current::TraitSchemaEngine::स्कीमा

मुख्य स्कीमा स्ट्रक्चर जिसमें स्कीमा की जानकारी होती है.

सार्वजनिक स्टैटिक विशेषताएं

KHandleTableOffset

const uint32_t kHandleTableOffset = 2

सार्वजनिक विशेषताएं

mSchema

const Schema mSchema

सार्वजनिक फ़ंक्शन

फ़ाॅन्डकॉमनकॉमेस्टर्स

PropertyPathHandle FindLowestCommonAncestor(
  PropertyPathHandle aHandle1,
  PropertyPathHandle aHandle2,
  PropertyPathHandle *aHandle1BranchChild,
  PropertyPathHandle *aHandle2BranchChild
) const 

दो प्रॉपर्टी हैंडल देने के लिए, सबसे कम हैंडल की गिनती करें जो इन दोनों हैंडल के लिए पैरंट के तौर पर काम करता है.

इसके अलावा, दोनों चाइल्ड ब्रांच दिखाएं, जिनमें दोनों में से हर हैंडल शामिल हो, भले ही वे एक जैसे हों.

ब्यौरा
सामान लौटाने की वैल्यू
PropertyPathHandle
सबसे कम पैरंट खाते को हैंडल करें.

GetChildHandle पाएं

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

गेटडेप्थ

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

दिए गए हैंडल के लिए स्कीमा ट्री में गहराई का हिसाब लगाएं.

ब्यौरा
सामान लौटाने की वैल्यू
int32_t
पेड़ की गहराई

Get शब्दकोश आइटमहैंडल

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

किसी खास अभिभावक से जुड़े पहले चाइल्ड हैंडल को दिखाता है.

ब्यौरा
सामान लौटाने की वैल्यू
PropertyPathHandle
पहले बच्चे को हैंडल करें.

सबसे आगे का वर्शन पाएं

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

किसी दिए गए डेटा स्कीमा वर्शन को देखते हुए, ऐसा करने से वह सबसे सही फ़ॉरवर्ड किया गया स्कीमा वर्शन दिखेगा.

Get यह सबसे कम काम का वर्शन

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

दिए गए डेटा स्कीमा वर्शन को देखते हुए, इससे कम से कम काम करने वाला स्कीमा वर्शन दिखेगा.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

किसी खास पाथ हैंडल की जानकारी देने वाली PropertyInfo स्ट्रक्चर का पॉइंटर दिखाता है.

ब्यौरा
सामान लौटाने की वैल्यू
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

अगला बच्चा पाएं

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

किसी मौजूदा बच्चे को हैंडल देने के बाद, किसी खास अभिभावक से जुड़े अगले चाइल्ड हैंडल को दिखाता है.

ब्यौरा
सामान लौटाने की वैल्यू
PropertyPathHandle
अगले बच्चे को हैंडल करें.

पैरंट पाएं

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

दिए गए चाइल्ड पाथ हैंडल का पैरंट हैंडल दिखाता है.

हैंडल में डिक्शनरी कुंजियों को तब ही रखा जाता है, जब माता-पिता के हैंडल को भी शब्दकोश का एलिमेंट माना जाए.

ब्यौरा
सामान लौटाने की वैल्यू
PropertyPathHandle
अभिभावक हैंडल करें.

GetProfileId

uint32_t GetProfileId(
  void
) const 

इससे जुड़ी विशेषता का प्रोफ़ाइल आईडी दिखाता है.

ब्यौरा
सामान लौटाने की वैल्यू
Trait
प्रोफ़ाइल आईडी

मिलता-जुलता पाथ टैग पाएं

WEAVE_ERROR GetRelativePathTags(
  const PropertyPathHandle aCandidateHandle,
  uint64_t *aTags,
  const uint32_t aTagsSize,
  uint32_t & aNumTags
) const 

PropertyPathHandle को संदर्भ टैग की श्रेणी में बदलता है.

ब्यौरा
पैरामीटर
[in] aCandidateHandle
कन्वर्ट किया जाने वाला PropertyPathHandle.
[in] aTags
आउटपुट श्रेणी की ओर इशारा करें.
[in] aTagsSize
टैग की श्रेणी, एलिमेंट की संख्या.
[out] aNumTags
टैग में लिखे गए टैग की संख्या
लौटाए गए सामान
सफलता की स्थिति में WEAVE_NO_ERROR; अगर टैग का पूरा पाथ संग्रहित करने के लिए बहुत छोटा है तो WEAVE_ERROR_NO_MEMRY.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

पाथ हैंडल से जुड़ा टैग दिखाता है.

अगर यह एक डिक्शनरी एलिमेंट है, तो यह ProfileTag टैग दिखाता है. ऐसा न होने पर, वह संदर्भ टैग को दिखाता है.

ब्यौरा
सामान लौटाने की वैल्यू
uint64_t

GetVersionIntersection

bool GetVersionIntersection(
  SchemaVersionRange & aVersion,
  SchemaVersionRange & aIntersection
) const 

वर्शन रेंज को देखते हुए यह फ़ंक्शन जांच करता है कि इस स्कीमा इंजन का इस्तेमाल करने वाले स्कीमा के साथ कम्पैटिबिलिटी इंटरसेक्शन मौजूद है या नहीं.

अगर कोई चौराहा है, तो फ़ंक्शन सही रिटर्न करेगा और उस इंटेजर की जांच के नतीजों को दिखाने के लिए, पास किए गए aIntersection तर्क को अपडेट करेगा.

इज़ शब्दकोश

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

अगर हैंडल शब्दकोश में है (और शब्दकोश में नहीं है), तो 'सही' दिखाता है. नीचे दिया गया तरीका देखें.

ब्यौरा
सामान लौटाने की वैल्यू
bool

इफ़ेमरल

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsIn शब्दकोश

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

अगर हैंडल किसी शब्दकोश के शब्दकोश (अंदरूनी) है, तो 'सही' दिखाता है.

हैंडल (a शब्दकोश आइटमHandle) में पास किए गए उपयोगकर्ता को डिक्शनरी में सबसे ऊपर दिए गए डिक्शनरी एलिमेंट हैंडल पर ले जाने के लिए अपडेट किया गया है.

ब्यौरा
सामान लौटाने की वैल्यू
bool

इसलीफ़

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

अगर हैंडल स्कीमा पेड़ के पत्ती नोड के बारे में बताता है, तो यह 'सही' दिखाता है.

ब्यौरा
सामान लौटाने की वैल्यू
bool

शून्य नहीं है

bool IsNullable(
  PropertyPathHandle aHandle
) const 

ज़रूरी नहीं है

bool IsOptional(
  PropertyPathHandle aHandle
) const 

अभिभावक हैं

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

जांच करता है कि दिया गया हैंडल किसी दूसरे हैंडल का चाइल्ड है या नहीं.

यह ऐक्सेस सीधे तौर पर नहीं होने वाला हो सकता है.

ब्यौरा
सामान लौटाने की वैल्यू
bool

MapHandleToपाथ

WEAVE_ERROR MapHandleToPath(
  PropertyPathHandle aHandle,
  nl::Weave::TLV::TLVWriter & aPathWriter
) const 

पाथ हैंडल को TLV पाथ में बदलें.

ब्यौरा
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
सफल रहा.
other
हैंडल को TLV पाथ में नहीं बदला जा सका

MapPathToHandle

WEAVE_ERROR MapPathToHandle(
  nl::Weave::TLV::TLVReader & aPathReader,
  PropertyPathHandle & aHandle
) const 

रीडर को WDM पाथ एलिमेंट के रूट में रखते हुए, काम के टैग पढ़ें और उसी तरह का पाथ हैंडल दें.

ब्यौरा
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
सफल रहा.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
अगर गलत/गलत तरीके से बताए गए पाथ की वजह से, कोई मिलता-जुलता हैंडल नहीं मिल पाया.

MapPathToHandle

WEAVE_ERROR MapPathToHandle(
  const char *aPathString,
  PropertyPathHandle & aHandle
) const 

WDM पाथ के स्ट्रिंग प्रतिनिधित्व को देखते हुए संबंधित टैग को पढ़ें और समान पाथ हैंडल दें.

WDM पाथ को नीचे दिए गए नियमों का इस्तेमाल करके एक स्ट्रिंग के रूप में दिखाया जाता है:

  • टैग, / से अलग किए गए हैं
  • पाथ की शुरुआत / से होगी. इसमें पीछे का स्लैश नहीं होना चाहिए
  • WDM पाथ में संख्या वाले टैग, स्ट्रिंग एन्कोडिंग के लिए मानक C लाइब्रेरी का इस्तेमाल करके कोड में बदले जाने चाहिए. इसका मतलब है कि दशमलव एन्कोडिंग (डिफ़ॉल्ट) में लीडिंग 0 शामिल नहीं होना चाहिए, हेक्साडेसिमल एन्कोडिंग, 0x से शुरू होना चाहिए, और ऑक्टल एन्कोडिंग में एक अहम 0 होना चाहिए.

ब्यौरा
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
सफल रहा.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
अगर कोई मिलता-जुलता हैंडल नहीं मिल पाया.
WEAVE_ERROR_INVALID_ARGUMENT
अगर पाथ स्ट्रिंग गलत हो

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

अगर प्रोफ़ाइल में दिया गया पास, स्कीमा में सेव किए गए मान से मेल खाता है, तो 'सही' दिखाता है.

ब्यौरा
सामान लौटाने की वैल्यू
bool

डेटा वापस पाएं

WEAVE_ERROR RetrieveData(
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  nl::Weave::TLV::TLVWriter & aWriter,
  IGetDataDelegate *aDelegate,
  IDirtyPathCut *apDirtyPathCut
) const 

संबंधित डेटा एलिमेंट पर पाथ के हैंडल और लेखक की स्थिति को देखते हुए, स्रोत से लीफ़ के डेटा को फिर से पाएं और उसे बफ़र की तरफ़ लिखें, जिसमें लेखक का स्कीमा तरीके से पालन करने का ज़िक्र किया गया है.

ब्यौरा
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
सफल रहा.
other
डेटा लिखते समय गड़बड़ियां मिलीं.

Get Updatable डिक्शनरीData

WEAVE_ERROR RetrieveUpdatableDictionaryData(
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  nl::Weave::TLV::TLVWriter & aWriter,
  IGetDataDelegate *aDelegate,
  PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom
) const 

स्टोर डेटा

WEAVE_ERROR StoreData(
  PropertyPathHandle aHandle,
  nl::Weave::TLV::TLVReader & aReader,
  ISetDataDelegate *aDelegate,
  IPathFilter *aPathFilter
) const 

पाथ हैंडल और एक रीडर को संबंधित डेटा एलिमेंट पर रखने की वजह से, रीडर में दिए गए डेटा बफ़र की प्रोसेस करें और जब भी लीफ़ डेटा आइटम मिलता है, तब setLeafData कॉल का अनुरोध करके उसे सिंक में सेव करें.

ब्यौरा
सामान लौटाने की वैल्यू
WEAVE_NO_ERROR
सफल रहा.
other
डेटा को पार्स/प्रोसेस करते समय गड़बड़ियां मिलीं.