nl::Weave::Hồ sơ::DataManagement_Current::TraitSchemaengine

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

Công cụ giản đồ lấy thông tin giản đồ liên kết với một đặc điểm cụ thể và cung cấp các cơ sở để phân tích cú pháp và dịch thông tin đó thành một biểu mẫu có thể được sử dụng bởi máy móc WDM.

Tóm tắt

Phương thức này bao gồm việc chuyển đổi từ PathPathles sang đường dẫn WDM (và ngược lại), các phương thức để diễn giải/truy vấn chính giản đồ và các phương thức giúp đọc/ghi dữ liệu vào/từ TLV được xử lý.

Bản thân giản đồ được lưu trữ ở dạng bảng, được mô tả đầy đủ để cho phép phân tích/tạo thành dữ liệu/đường dẫn WDM chung cho bất kỳ đặc điểm nhất định nào. Các bảng này sẽ là đầu ra cuối cùng của ' code-gen (# 39; (Bản thân thuật ngữ hơi gây hiểu lầm do không có bất kỳ mã nào được tạo :P)

Thuộc tính tĩnh công khai

kHandleTableOffset = 2
const uint32_t

Thuộc tính công khai

mSchema
const Schema

Hàm công khai

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
Với hai ô điều khiển thuộc tính, hãy tính toán ô điều khiển thấp nhất phân phát dưới dạng phần tử mẹ cho cả hai ô điều khiển này.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
Tính toán chiều sâu trong cây giản đồ cho một tên người dùng cụ thể.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
Trả về tên người dùng con đầu tiên liên kết với một cha mẹ cụ thể.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
Trong một phiên bản giản đồ dữ liệu được cung cấp, phiên bản này sẽ trả về phiên bản giản đồ tương thích cao nhất.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Phiên bản giản đồ dữ liệu được cung cấp sẽ trả về phiên bản giản đồ tương thích tối thiểu.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
Trả về con trỏ đến cấu trúc PropertyInfo mô tả xử lý đường dẫn cụ thể.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Đã cung cấp một tên người dùng cho một tài khoản con hiện có, trả về tên người dùng con tiếp theo được liên kết với một nhà xuất bản mẹ cụ thể.
GetParent(PropertyPathHandle aHandle) const
Trả về tên người dùng mẹ của một tên người dùng con cho một đường dẫn con nhất định.
GetProfileId(void) const
uint32_t
Trả về mã hồ sơ của đặc điểm được liên kết.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
Chuyển đổi PropertyPathhandle thành một mảng thẻ ngữ cảnh.
GetTag(PropertyPathHandle aHandle) const
uint64_t
Trả về thẻ được liên kết với một trình xử lý đường dẫn.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
Dựa trên một phạm vi phiên bản, hàm này sẽ kiểm tra xem liệu có sự tương quan giữa khả năng tương thích giữa phiên bản đó và yếu tố nào được hỗ trợ bởi giản đồ đang hỗ trợ công cụ giản đồ này hay không.
IsDictionary(PropertyPathHandle aHandle) const
bool
Trả về true nếu tên người dùng là từ điển (không phải trong từ điển – hãy xem phương pháp bên dưới).
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Trả về true nếu ô điều khiển nằm bên trong từ điển (phần tử từ điển).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
Trả về true nếu ô điều khiển tham chiếu đến một nút lá trong cây giản đồ.
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
Kiểm tra xem một tên người dùng cụ thể có phải là con của tên người dùng khác không.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Chuyển đổi ô điều khiển đường dẫn thành một đường dẫn TLV.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Khi trình đọc nằm ở gốc của phần tử đường dẫn WDM, hãy đọc các thẻ có liên quan và cung cấp tên người dùng tương đương.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
Do biểu diễn dạng chuỗi của đường dẫn WDM, hãy đọc các thẻ liên quan và cung cấp tên người dùng tương đương.
MatchesProfileId(uint32_t aProfileId) const
bool
Trả về true nếu itemId được chuyển vào khớp với dữ liệu được lưu trữ trong giản đồ.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
Do một trình xử lý đường dẫn và vị trí người viết trên phần tử dữ liệu tương ứng, hãy truy xuất dữ liệu lá từ nguồn và ghi dữ liệu đó vào bộ đệm mà người viết đã trỏ đến theo cách tuân thủ giản đồ.
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
Với một trình xử lý đường dẫn và trình đọc vị trí trên phần tử dữ liệu tương ứng, hãy xử lý bộ đệm dữ liệu mà trình đọc trỏ đến và lưu vào bộ chứa bằng cách gọi lệnh gọi SetLeafData bất cứ khi nào gặp mục dữ liệu chi tiết.

Lớp

nl::Weave::Profiles::DataManagement_Current::TraitSchemaengine::IGetDataDelegate
nl::Weave::Profiles::DataManagement_Current::TraitSchemaengine::ISetDataDelegate

Cấu trúc

nl::Weave::Profiles::DataManagement_Current::TraitSchemaengine::PropertyInfo
nl::Weave::Profiles::DataManagement_Current::TraitSchemaengine::Schema

Cấu trúc giản đồ chính lưu trữ thông tin giản đồ.

Thuộc tính tĩnh công khai

Tập viết khandleTableoffset

const uint32_t kHandleTableOffset = 2

Thuộc tính công khai

Giản đồ

const Schema mSchema

Hàm công khai

FindThấpCommonAncestor

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

Với hai ô điều khiển thuộc tính, hãy tính toán ô điều khiển thấp nhất phân phát dưới dạng phần tử mẹ cho cả hai ô điều khiển này.

Ngoài ra, hãy trả về hai nhánh con chứa từng ô trong hai ô điều khiển (ngay cả khi chúng giống nhau).

Chi tiết
Giá trị trả về
PropertyPathHandle
Chuyển đến vị trí gốc.

Get Sử dụng

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

Tải xuống

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Tính toán chiều sâu trong cây giản đồ cho một tên người dùng cụ thể.

Chi tiết
Giá trị trả về
int32_t
Độ sâu của cây

GetcácItemItemlele

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

Trả về tên người dùng con đầu tiên liên kết với một cha mẹ cụ thể.

Chi tiết
Giá trị trả về
PropertyPathHandle
Tên người dùng đầu tiên của tài khoản.

Phiên bản getGiải chuyển tiếp

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Trong một phiên bản giản đồ dữ liệu được cung cấp, phiên bản này sẽ trả về phiên bản giản đồ tương thích cao nhất.

Phiên bản getthấp tương thích thấp nhất

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Phiên bản giản đồ dữ liệu được cung cấp sẽ trả về phiên bản giản đồ tương thích tối thiểu.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

Trả về con trỏ đến cấu trúc PropertyInfo mô tả xử lý đường dẫn cụ thể.

Chi tiết
Giá trị trả về
PropertyInfo*

Phiên bản GetMax

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

Đã cung cấp một tên người dùng cho một tài khoản con hiện có, trả về tên người dùng con tiếp theo được liên kết với một nhà xuất bản mẹ cụ thể.

Chi tiết
Giá trị trả về
PropertyPathHandle
Tên người dùng tiếp theo của con.

Mua

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

Trả về tên người dùng mẹ của một tên người dùng con cho một đường dẫn con nhất định.

Khóa từ điển trong tên người dùng được giữ nguyên trong trường hợp tên người dùng gốc cũng là một phần tử từ điển.

Chi tiết
Giá trị trả về
PropertyPathHandle
Tên người dùng gốc.

GetProfileId

uint32_t GetProfileId(
  void
) const 

Trả về mã hồ sơ của đặc điểm được liên kết.

Chi tiết
Giá trị trả về
Trait
id hồ sơ

GetTagPathTag

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

Chuyển đổi PropertyPathhandle thành một mảng thẻ ngữ cảnh.

Chi tiết
Các thông số
[in] aCandidateHandle
Sản phẩm PropertyPathhandle sẽ được chuyển đổi.
[in] aTags
Trỏ đến mảng đầu ra.
[in] aTagsSize
Kích thước của mảng aTag, theo số lượng phần tử.
[out] aNumTags
Số thẻ được ghi vào aTag
Trả về
WEAVE_NO_ERROR trong trường hợp thành công; WEAVE_ERROR_NO_MEMORY nếu aTag quá nhỏ để lưu trữ đường dẫn đầy đủ.

Thẻ

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

Trả về thẻ được liên kết với một trình xử lý đường dẫn.

Nếu đó là phần tử từ điển, hàm này sẽ trả về Thẻ hồ sơ. Nếu không, hàm này sẽ trả về các thẻ ngữ cảnh.

Chi tiết
Giá trị trả về
uint64_t

GetVersionIntersection

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

Dựa trên một phạm vi phiên bản, hàm này sẽ kiểm tra xem liệu có sự tương quan giữa khả năng tương thích giữa phiên bản đó và yếu tố nào được hỗ trợ bởi giản đồ đang hỗ trợ công cụ giản đồ này hay không.

Nếu có giao lộ, hàm sẽ trả về true và cập nhật đối số aIntersection được chuyển vào để phản ánh kết quả của quá trình kiểm tra giao điểm đó.

Là từ điển

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

Trả về true nếu tên người dùng là từ điển (không phải trong từ điển – hãy xem phương pháp bên dưới).

Chi tiết
Giá trị trả về
bool

Tạm thời

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

Từ điển liên quan

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

Trả về true nếu ô điều khiển nằm bên trong từ điển (phần tử từ điển).

Người dùng được chuyển vào xử lý (atừItemItemlele) được cập nhật để trỏ đến trình xử lý thành phần từ điển ở trên cùng trong từ điển.

Chi tiết
Giá trị trả về
bool

Lê IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Trả về true nếu ô điều khiển tham chiếu đến một nút lá trong cây giản đồ.

Chi tiết
Giá trị trả về
bool

Có thể tắt

bool IsNullable(
  PropertyPathHandle aHandle
) const 

Không bắt buộc

bool IsOptional(
  PropertyPathHandle aHandle
) const 

Là cha mẹ

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

Kiểm tra xem một tên người dùng cụ thể có phải là con của tên người dùng khác không.

Đây có thể là cha mẹ gián tiếp.

Chi tiết
Giá trị trả về
bool

MaphandleToPath

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

Chuyển đổi ô điều khiển đường dẫn thành một đường dẫn TLV.

Chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Thành công!
other
Không thể chuyển đổi tên người dùng thành đường dẫn TLV

MapPathTohandle

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

Khi trình đọc nằm ở gốc của phần tử đường dẫn WDM, hãy đọc các thẻ có liên quan và cung cấp tên người dùng tương đương.

Chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Thành công!
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Nếu không tìm thấy tên người dùng phù hợp do đường dẫn không được định dạng/chỉ định không chính xác.

MapPathTohandle

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

Do biểu diễn dạng chuỗi của đường dẫn WDM, hãy đọc các thẻ liên quan và cung cấp tên người dùng tương đương.

Đường dẫn WDM được biểu thị dưới dạng một chuỗi bằng các quy tắc sau:

  • phân tách các thẻ bằng /
  • đường dẫn PHẢI bắt đầu bằng / và KHÔNG PHẢI bằng dấu gạch chéo
  • các thẻ số trong đường dẫn WDM PHẢI được mã hóa bằng thư viện C chuẩn cho số nguyên để mã hóa chuỗi, tức là mã hóa thập phân (mặc định) PHẢI chứa mã 0 hàng đầu, mã hóa thập lục phân PHẢI bắt đầu bằng 0x và mã hóa bát phân PHẢI chứa 0 ở đầu.

Chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Thành công!
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Nếu không tìm thấy tên người dùng phù hợp.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu chuỗi đường dẫn không đúng định dạng

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

Trả về true nếu itemId được chuyển vào khớp với dữ liệu được lưu trữ trong giản đồ.

Chi tiết
Giá trị trả về
bool

Truy xuất dữ liệu

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

Do một trình xử lý đường dẫn và vị trí người viết trên phần tử dữ liệu tương ứng, hãy truy xuất dữ liệu lá từ nguồn và ghi dữ liệu đó vào bộ đệm mà người viết đã trỏ đến theo cách tuân thủ giản đồ.

Chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Thành công!
other
Đã xảy ra lỗi khi ghi dữ liệu.

takeoutUpdatableDictionaryData

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

Dữ liệu cửa hàng

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

Với một trình xử lý đường dẫn và trình đọc vị trí trên phần tử dữ liệu tương ứng, hãy xử lý bộ đệm dữ liệu mà trình đọc trỏ đến và lưu vào bộ chứa bằng cách gọi lệnh gọi SetLeafData bất cứ khi nào gặp mục dữ liệu chi tiết.

Chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Thành công!
other
Đã xảy ra lỗi khi phân tích cú pháp/xử lý dữ liệu.