nl::Weave::الملفات الشخصية::DataManagement_Current::TraitSchemaEngine

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

ويستند محرِّك المخطط إلى معلومات المخططات المرتبطة بسمة معيّنة، ويوفّر منشآت لتحليل ذلك النص وترجمته إلى نموذج يمكن استخدامه من خلال آلية WDM.

الملخّص

ويتضمن ذلك التحويل من PathHandles إلى مسارات 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
عرض true إذا كان المقبض قاموسًا (وليس قاموسًا، راجع الطريقة أدناه).
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
عرض true إذا كان المقبض هو داخل قاموس (عنصر في القاموس).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
عرض true إذا كان المقبض يشير إلى عقدة ورقة شجر في شجرة المخطط.
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
عرض true إذا كانت قيمة الملف الشخصي التي تم تمريرها في رقم التعريف متطابقة مع تلك التي تم تخزينها في المخطط.
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::Weave::الملفات الشخصية::DataManagement_Current::TraitSchemaEngine::IGetDataDelegate
nl::Weave::الملفات الشخصية::DataManagement_Current::TraitSchemaEngine::ISetDataDelegate

الهياكل

nl::Weave::الملفات الشخصية::DataManagement_Current::TraitSchemaEngine::PropertyInfo
nl::Weave::الملفات الشخصية::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
العمق في الشجرة

مقبض GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

لعرض أول حساب ثانوي مرتبط بعنصر رئيسي معيّن.

التفاصيل
قيم الإرجاع
PropertyPathHandle
اسم الطفل الأول

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

بالنظر إلى إصدار مخطط البيانات المتوفر، سيؤدي هذا إلى عرض أعلى إصدار من المخططات المتوافقة.

الحصول على أقل إصدار متوافق

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

بالنظر إلى إصدار مخطط بيانات متوفر، سيؤدي هذا إلى عرض الحد الأدنى لإصدار مخطط متوافق.

الحصول على خريطة

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

لعرض مؤشر على بنية PropertyInfo تصف مقبض مسار معيّنًا.

التفاصيل
قيم الإرجاع
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

الحصول على الإصدار

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

بالنسبة إلى حساب فرعي تابع حالي، يتم عرض اسم الحساب الفرعي التالي المرتبط بحساب رئيسي محدَّد.

التفاصيل
قيم الإرجاع
PropertyPathHandle
مقبض الطفل التالي.

الحصول على الوالد

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

لعرض اسم الحساب الرئيسي لمقبض مسار فرعي معيّن.

ويتمّ الاحتفاظ بمفاتيح القاموس في المقبض في حال كان المقبض الرئيسي يمثّل أيضًا عنصرًا في القاموس.

التفاصيل
قيم الإرجاع
PropertyPathHandle
اسم أحد الوالدَين

رقم تعريف الملف الشخصي

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
حجم مصفوفة aTag في عدد العناصر
[out] aNumTags
عدد العلامات المكتوبة في aTag
المرتجعات
WEAVE_NO_ERROR في حالة النجاح؛ WEAVE_ERROR_NO_MEMORY إذا كان aTag صغيرًا جدًا لتخزين المسار بالكامل.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

تعرض العلامة المرتبطة بمقبض المسار.

إذا كان ذلك هو عنصر القاموس، ستعرض هذه الدالة الملف TagTag. وبخلاف ذلك، سيتم عرض علامات السياق.

التفاصيل
قيم الإرجاع
uint64_t

الحصول على تقاطع

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

بالنظر إلى نطاق الإصدار، تتحقّق هذه الدالة مما إذا كان هناك تقاطع توافق بين ذلك وبين ما يتوافق مع المخطط الذي يدعم محرك المخطط هذا.

إذا كان هناك تقاطع، ستعرض الدالة القيمة صحيحة، وتحدّث الوسيطة aIntersection التي تم تمريرها لتعكس نتائج اختبار التقاطع هذا.

قاموس

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

عرض true إذا كان المقبض قاموسًا (وليس قاموسًا، راجع الطريقة أدناه).

Details
قيم الإرجاع
bool

الملف الشخصي المؤقت

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

قاموس قاموس

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

عرض true إذا كان المقبض هو داخل قاموس (عنصر في القاموس).

ويتم تعديل اسم المستخدم الذي تم تمريره (aDictionaryItemHandle) بحيث يشير إلى أعلى عنصر في عنصر القاموس ضمن القاموس.

التفاصيل
قيم الإرجاع
bool

أوراق الشجر

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

عرض true إذا كان المقبض يشير إلى عقدة ورقة شجر في شجرة المخطط.

التفاصيل
قيم الإرجاع
bool

قابل للتقديم

bool IsNullable(
  PropertyPathHandle aHandle
) const 

اختياري

bool IsOptional(
  PropertyPathHandle aHandle
) const 

هو أحد الوالدين

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

للتحقّق مما إذا كان مقبض معيّن يمثّل عنصرًا ثانويًا لمقبض آخر

ويمكن أن يكون أحد الوالدين غير مباشر.

التفاصيل
قيم الإرجاع
bool

مسار MapHandleToPath

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

حوِّل مقبض المسار إلى مسار TLV.

التفاصيل
قيم الإرجاع
WEAVE_NO_ERROR
النجاح.
other
تعذّر تحويل المقبض إلى مسار TLV.

مسار الخريطة

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

بالنظر إلى قارئ موضوع في جذر عنصر مسار WDM، يمكنك قراءة العلامات ذات الصلة وتقديم مقبض المسار المكافئ.

التفاصيل
قيم الإرجاع
WEAVE_NO_ERROR
النجاح.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
تعذّر العثور على مقبض مطابق بسبب مسار مكتوب بصيغة غير صحيحة/غير صحيح.

مسار الخريطة

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
إذا كانت سلسلة المسار غير صالحة

رقم تعريف الملف الشخصي المطابق

bool MatchesProfileId(
  uint32_t aProfileId
) const 

عرض true إذا كانت قيمة الملف الشخصي التي تم تمريرها في رقم التعريف متطابقة مع تلك التي تم تخزينها في المخطط.

التفاصيل
قيم الإرجاع
bool

استرداد البيانات

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

ونظرًا لمقبض المسار وموضع الكاتب على عنصر البيانات ذي الصلة، يمكنك استرداد بيانات الخصائص التفصيلية من المصدر وكتابتها إلى المخزن المؤقت الذي يشير إليه الكاتب بطريقة متوافقة مع المخطط.

التفاصيل
قيم الإرجاع
WEAVE_NO_ERROR
النجاح.
other
حدثت أخطاء أثناء كتابة البيانات.

استرجاع البيانات

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
حدثت أخطاء أثناء تحليل/معالجة البيانات.