nl:: بافت:: پروفایل ها:: 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
اگر مقدار ارسال شده در profileId با آنچه در طرح ذخیره شده است مطابقت داشته باشد، مقدار 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:: بافت:: پروفایل ها:: 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

توابع عمومی

FindLowestCommon Ancestor

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 اگر aTags برای ذخیره کامل مسیر بسیار کوچک باشد.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

تگ مرتبط با دسته مسیر را برمی گرداند.

اگر یک عنصر فرهنگ لغت باشد، این تابع ProfileTag را برمی گرداند. در غیر این صورت، تگ های زمینه را برمی گرداند.

جزئیات
ارزش های بازگشتی
uint64_t

GetVersion Intersection

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

با توجه به یک محدوده نسخه، این تابع بررسی می کند که آیا یک تقاطع سازگاری بین آن و آنچه توسط طرحی که پشتیبان این موتور طرحواره است، وجود دارد یا خیر.

اگر یک تقاطع وجود داشته باشد، تابع true را برمی‌گرداند و آرگومان aIntersection ارسال شده را به‌روزرسانی می‌کند تا نتایج آن تست تقاطع را منعکس کند.

دیکشنری است

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

اگر دسته یک فرهنگ لغت باشد (و نه در فرهنگ لغت - روش زیر را ببینید) true برمی‌گرداند.

جزئیات
ارزش های بازگشتی
bool

زودگذر است

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

دیکشنری است

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

اگر دستگیره داخل دیکشنری (عنصر فرهنگ لغت) باشد، true را برمی‌گرداند.

یک کاربر در دسته (aDictionaryItemHandle) به روز می شود تا به بالاترین دسته عنصر فرهنگ لغت در فرهنگ لغت اشاره کند.

جزئیات
ارزش های بازگشتی
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

اگر دسته به یک گره برگ در درخت طرحواره اشاره داشته باشد، true برمی‌گرداند.

جزئیات
ارزش های بازگشتی
bool

قابل حذف است

bool IsNullable(
  PropertyPathHandle aHandle
) const 

اختیاری است

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
اگر یک رشته مسیر بد شکل باشد

MachesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

اگر مقدار ارسال شده در profileId با آنچه در طرح ذخیره شده است مطابقت داشته باشد، مقدار true را برمی گرداند.

جزئیات
ارزش های بازگشتی
bool

بازیابی داده ها

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
در تجزیه/پردازش داده ها با خطا مواجه شد.