nl::Weave::Profiles::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
تعرض القيمة "صحيح" إذا كان رقم تعريف الملف الشخصي الذي تم تمريره يتطابق مع المعرّف الذي تم تخزينه في المخطّط.
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::Profiles::DataManagement_Current::TraitSchemaEngine::IGetDataDelegate
nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::ISetDataDelegate

الهياكل

nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::PropertyInfo
nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::Schema

بنية المخطّط الرئيسية التي تضمّ معلومات المخطط

السمات الثابتة العلنية

kHandleTableOffset

const uint32_t kHandleTableOffset = 2

السمات العامة

mSchema

const Schema mSchema

الدوال العامة

FindLowestCommonAncestor

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

باستخدام الاسمَين المعرِّفَين للموقع الإلكتروني، احسب الاسم المعرِّف الأدنى الذي يكون عنصرًا رئيسيًا لكلا الاسمين المعرِّفين.

بالإضافة إلى ذلك، عليك عرض فرعيَين فرعيَّين يحتويان على كلا المؤشرَين (حتى إذا كانا متماثلين).

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

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

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 

استنادًا إلى إصدار مخطط البيانات المقدّم، سيتم عرض أعلى إصدار متوافق من المخطط.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

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

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

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

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

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

بإعطاء اسم معرِّف لطفل حالي، يتم عرض الاسم المعرِّف الثانوي التالي المرتبط بحساب رئيسي معيّن.

التفاصيل
قيم الإرجاع
PropertyPathHandle
الاسم المعرِّف للطفل التالي

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

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

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

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

GetProfileId

uint32_t GetProfileId(
  void
) const 

تعرض معرّف الملف الشخصي للسمة المرتبطة.

التفاصيل
قيم الإرجاع
Trait
معرّف الملف الشخصي

GetRelativePathTags

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

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

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

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

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

GetVersionIntersection

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

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

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

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

يتم عرض true إذا كان الاسم المعرِّف قاموسًا (وليس في قاموسًا - انظر الطريقة أدناه).

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

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

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

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

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

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

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

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

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

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.

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

RetrieveData

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

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

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

RetrieveUpdatableDictionaryData

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

StoreData

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

عند توفّر مؤشر مسار وقارئ موضوع في عنصر البيانات المقابل، يمكنك معالجة المخزن المؤقت للبيانات الذي يشير إليه القارئ وتخزينه في الحوض من خلال طلب استدعاء SetLeafData عند العثور على عنصر بيانات ورقة شجر.

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