Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

nl ::織り:: TLV :: TLVUpdater

#include <src/lib/core/WeaveTLV.h>

要素追加/削除/編集するための統一されたリーダ/ライタインターフェース提供TLVがエンコーディングを。

概要

TLVUpdaterは、の和集合であるTLVReaderTLVWriterは、符号化データを削除するだけでなく、新しい要素を追加/編集するためのインタフェースメソッドオブジェクトおよび提供のTLVエンコーディングを。 TLVUpdaterのオブジェクトは、本質的に2つのカーソル、既存の(いずれかの既存のデータ上にコピーするか、新しいデータを書き込むため)を書き込むためのコードと他を読み取るための1つのように作用します。

意味的に、 TLVUpdaterのの労働組合のようなオブジェクト機能TLVReaderTLVWriterTLVUpdaterの方法はTLVReader / TLVWriterで同様の名前のカウンターパートとして、多かれ少なかれ同様の意味を持ちます。セマンティクスに違いがある場合には、違いが明確で、関数のコメントセクションに記載されていWeaveTLVUpdater.cpp

約特に重要音符TLVUpdaterのPutBytes()とPutString()メソッドは、オーバーフローが発生したときに、それが書かれた唯一の要素ヘッダで破損した状態で符号化を残すことができることです。アプリケーションは、エンコーディングを書き込むための十分な空き容量があることを確認する)(GetRemainingFreeLengthを呼び出すことができます。 GetRemainingFreeLength()でのみ、使用可能な空きバイトを告げると、アプリケーションが書き込まれますエンコードされたデータの長さを知るための方法がないことに注意してください。オーバーフローが発生した場合、PutBytes()とPutString()の両方がWEAVE_ERROR_BUFFER_TOO_SMALLを呼び出し元に返します。

また、なお、 次に()メソッドは、現在の要素を省略しても次の要素に内部読み取りを進めるために、両方のオーバーロードされています。既に符号化要素をスキップすると(スキップすることで利用可能となる)新しい解放された空間のための口座に内部作家の空き領域の状態変数を変更する必要があるため、アプリケーションを呼び出すことが予想される次の()値が、それはdoesnのget()メソッドの後にアップデータのを書き戻したくない(これは現在の要素をスキップするのと同じです)。

公の行事

CopyElement (TLVReader & reader)
CopyElement (uint64_t tag,TLVReader & reader)
DupBytes (uint8_t *& buf, uint32_t & dataLen)
DupString (char *& buf)
EndContainer ( TLVType outerContainerType)
EnterContainer ( TLVType & outerContainerType)
準備TLVUpdaterのコンテナの要素を読み取るためのオブジェクト。
ExitContainer ( TLVType outerContainerType)
読み取り完了TLVのコンテナ要素の端コードTLVの出力に要素をTLV
Finalize (void)
Get (bool & v)
Get (int8_t & v)
Get (int16_t & v)
Get (int32_t & v)
Get (int64_t & v)
Get (uint8_t & v)
Get (uint16_t & v)
Get (uint32_t & v)
Get (uint64_t & v)
Get (float & v)
Get (double & v)
GetBytes (uint8_t *buf, uint32_t bufSize)
GetContainerType (void) const
GetDataPtr (const uint8_t *& data)
GetImplicitProfileId (void)
uint32_t
GetLength (void) const
uint32_t
GetLengthRead (void) const
uint32_t
GetLengthWritten (void)
uint32_t
GetReader (TLVReader & containerReader)
void
GetRemainingFreeLength (void)
uint32_t
GetRemainingLength (void) const
uint32_t
GetString (char *buf, uint32_t bufSize)
GetTag (void) const
uint64_t
GetType (void) const
Init (uint8_t *buf, uint32_t dataLen, uint32_t maxLen)
初期化TLVUpdaterの編集へのオブジェクトの単一の入力バッファを。
Init (TLVReader & aReader, uint32_t freeLen)
初期化TLVUpdaterの使用してオブジェクトをTLVReaderを
Move (void)
コピー入力から現在の要素TLV出力するTLV
MoveUntilEnd (void)
void
すべてを動かしTLVUpdater入力の終わりまでの現在の読み取りポイントTLV出力にオーバーバッファリング。
Next (void)
現在の要素をスキップして前進TLVUpdaterの入力における次の要素にオブジェクトをTLV
Put (uint64_t tag, int8_t v)
Put (uint64_t tag, int16_t v)
Put (uint64_t tag, int32_t v)
Put (uint64_t tag, int64_t v)
Put (uint64_t tag, uint8_t v)
Put (uint64_t tag, uint16_t v)
Put (uint64_t tag, uint32_t v)
Put (uint64_t tag, uint64_t v)
Put (uint64_t tag, int8_t v, bool preserveSize)
Put (uint64_t tag, int16_t v, bool preserveSize)
Put (uint64_t tag, int32_t v, bool preserveSize)
Put (uint64_t tag, int64_t v, bool preserveSize)
Put (uint64_t tag, uint8_t v, bool preserveSize)
Put (uint64_t tag, uint16_t v, bool preserveSize)
Put (uint64_t tag, uint32_t v, bool preserveSize)
Put (uint64_t tag, uint64_t v, bool preserveSize)
Put (uint64_t tag, float v)
Put (uint64_t tag, double v)
PutBoolean (uint64_t tag, bool v)
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len)
PutNull (uint64_t tag)
PutString (uint64_t tag, const char *buf)
PutString (uint64_t tag, const char *buf, uint32_t len)
SetImplicitProfileId (uint32_t profileId)
void
以下のための暗黙のプロファイルIDを設定しTLVUpdaterのオブジェクトを。
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType)
VerifyEndOfContainer (void)

公の行事

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

DupBytes

WEAVE_ERROR DupBytes(
  uint8_t *& buf,
  uint32_t & dataLen
)

DupString

WEAVE_ERROR DupString(
  char *& buf
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

準備TLVUpdaterのコンテナの要素を読み取るためのオブジェクト。

また、出力にコンテナオブジェクトの開始をコード化TLV

EnterContainer()メソッドは、現在準備TLVUpdaterのメンバー要素読み込みを開始することを目的とTLVの容器(構造、配列またはパス)。すべての呼び出しについてEnterContainer()アプリケーションがへの対応コールしなければなりませんExitContainerを() 。

場合EnterContainer()が呼び出されTLVUpdaterのリーダがコンテナ要素の上に配置されなければなりません。このメソッドは、コンテナーの読み取り中にアップデーターのコンテキストを保存するために使用されるTLVType値への参照を引数として取ります。

場合EnterContainer()メソッド戻り、アップデータは、容器の最初のメンバーの直前に配置されます。繰り返し呼び出す次は()最後に到達するまでのアップデータがWEAVE_END_OF_TLVを返します。その時点で、コレクションの部材を介してアップデータを進めます。

アプリケーションは、コンテナを読み終えた後には、呼び出すことにより、コンテナの後の要素を読み続けることができExitContainer()メソッドを。

詳細
パラメーター
[out] outerContainerType
アップデータのコンテキストを受け取るTLVType値への参照。
戻り値
WEAVE_NO_ERROR
メソッドが成功した場合。
WEAVE_ERROR_INCORRECT_STATE
場合TLVUpdaterのリーダーは、コンテナ要素上に配置されていません。
other
返された任意の他の織り方やプラットフォームエラーコードTLVWriter :: StartContainer()またはTLVReader :: EnterContainer() 。

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

読み取り完了TLVのコンテナ要素の端コードTLVの出力に要素をTLV

ExitContainer()メソッドは、状態復元TLVUpdaterのを呼び出した後、オブジェクトをEnterContainer() 。すべての呼び出しについてEnterContainer()アプリケーションは、に対応するコールしなければなりませんExitContainerを()によって返されたコンテキスト値渡し、 EnterContainer()メソッドを。

ExitContainer()戻り、 TLVUpdaterのリーダーは、入力容器を次の最初の要素の直前に配置されているTLV 。この時点から、アプリケーションを呼び出すことができ次に()を任意の残りの要素を介して前進させます。

いったんEnterContainer()が呼び出されている、アプリケーションを呼び出すことができExitContainerを()にかかわらず、根本的なコンテナ内のすべての要素が読み込まれているかどうかの、いずれかの時点でアップデータに。また、呼び出したことをノートExitContainerを()コンテナ内のすべての要素を読み取る前に、更新された容器になりますが、出力で切り捨て取得TLV

詳細
パラメーター
[in] outerContainerType
返されたTLVType値EnterContainer()メソッド。
戻り値
WEAVE_NO_ERROR
メソッドが成功した場合。
WEAVE_ERROR_TLV_UNDERRUN
基礎となる場合TLVのエンコードが途中で終了しました。
WEAVE_ERROR_INVALID_TLV_ELEMENT
アップデータは無効またはサポートされていない場合に発生したTLVの要素の型を。
WEAVE_ERROR_INVALID_TLV_TAG
アップデータは遭遇した場合はTLVの無効なコンテキスト内のタグを。
other
返された任意の他の織り方やプラットフォームエラーコードTLVWriter :: EndContainer()またはTLVReader :: ExitContainer() 。

ファイナライズ

WEAVE_ERROR Finalize(
  void
)

取得する

WEAVE_ERROR Get(
  bool & v
)

取得する

WEAVE_ERROR Get(
  int8_t & v
)

取得する

WEAVE_ERROR Get(
  int16_t & v
)

取得する

WEAVE_ERROR Get(
  int32_t & v
)

取得する

WEAVE_ERROR Get(
  int64_t & v
)

取得する

WEAVE_ERROR Get(
  uint8_t & v
)

取得する

WEAVE_ERROR Get(
  uint16_t & v
)

取得する

WEAVE_ERROR Get(
  uint32_t & v
)

取得する

WEAVE_ERROR Get(
  uint64_t & v
)

取得する

WEAVE_ERROR Get(
  float & v
)

取得する

WEAVE_ERROR Get(
  double & v
)

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

GetContainerType

TLVType GetContainerType(
  void
) const 

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

GetImplicitProfileId

uint32_t GetImplicitProfileId(
  void
)

GetLength

uint32_t GetLength(
  void
) const 

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

GetReader

void GetReader(
  TLVReader & containerReader
)

GetRemainingFreeLength

uint32_t GetRemainingFreeLength(
  void
)

GetRemainingLength

uint32_t GetRemainingLength(
  void
) const 

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

GetTag

uint64_t GetTag(
  void
) const 

GetType

TLVType GetType(
  void
) const 

初期化

WEAVE_ERROR Init(
  uint8_t *buf,
  uint32_t dataLen,
  uint32_t maxLen
)

初期化TLVUpdaterの編集へのオブジェクトの単一の入力バッファを。

このメソッドを呼び出すには、 TLVのバッファ内のデータがバッファの最後に移動され、プライベートTLVReaderのオブジェクトは、この再配置バッファに初期化されます。プライベートTLVWriterのオブジェクトは、最初に利用可能になりました空き領域に初期化されます。アプリケーションは、使用することができますTLVUpdaterの解析するオブジェクトをTLVのデータを変更し、/既存の要素を削除するか、エンコーディングに新しい要素を追加します。

詳細
パラメーター
[in] buf
含むバッファへのポインタのTLVデータを編集します。
[in] dataLen
長さのTLVバッファ内のデータ。
[in] maxLen
バッファの全長。
戻り値
WEAVE_NO_ERROR
メソッドが成功した場合。
WEAVE_ERROR_INVALID_ARGUMENT
バッファアドレスが無効な場合。
WEAVE_ERROR_BUFFER_TOO_SMALL
バッファが小さすぎる場合。

初期化

WEAVE_ERROR Init(
  TLVReader & aReader,
  uint32_t freeLen
)

初期化TLVUpdaterの使用してオブジェクトをTLVReaderを

このメソッドを呼び出すには、 TLVのバッファ内のデータは、によって指さTLVReaderがバッファの終わりに現在の読み出し位置から移動されます。新しいプライベートTLVReaderの新しいプライベートながらオブジェクトは、この新しい場所からの読み取りに初期化されTLVWriterのオブジェクトが解放されたバッファ空間への書き込みに初期化されます。

場合、その音符TLVReaderが既に要素「の上に」配置され、それは最初のバックオフされた要素の開始。また、場合コンテナ要素、すなわちでうまく動作オフこの裏には、そのノートTLVReaderがすでに呼び出すために使用されたEnterContainerを() 、その後、バックオフには何もありません。しかし、もしTLVReaderがコンテナ要素上に配置したEnterContainer()まだその後、呼び出されなかったTLVReaderのオブジェクトがバックオフされた容器のヘッドの開始。

入力TLVReaderのオブジェクトが返される前に破壊され、アプリケーションがリターンに同じを使用してはなりません。

詳細
パラメーター
[in,out] aReader
参照TLVReaderの戻す前に破棄されるオブジェクト。
[in] freeLen
事前にエンコードされたデータバッファで使用可能な空き領域の長さ(バイト単位)。
戻り値
WEAVE_NO_ERROR
メソッドが成功した場合。
WEAVE_ERROR_INVALID_ARGUMENT
バッファアドレスが無効な場合。
WEAVE_ERROR_NOT_IMPLEMENTED
リーダーがバッファーのチェーンで初期化された場合。

移動

WEAVE_ERROR Move(
  void
)

コピー入力から現在の要素TLV出力するTLV

移動()メソッドをコピーする現在の要素TLVUpdaterの読者がに、上に配置されTLVUpdater S作家。アプリケーションが呼び出す必要が次に()と位置TLVUpdaterこのメソッドを呼び出す前に、要素上のリーダ。同じようTLVReader ::次に()リーダーが呼び出し時にコンテナ要素上に配置される場合、メソッド、コンテナのすべてのメンバーがコピーされます。リーダーがどの要素にも配置されていない場合、このメソッドを呼び出しても何も変わりません。

詳細
戻り値
WEAVE_NO_ERROR
場合TLVUpdaterのリーダーが正常に新しい要素の上に配置しました。
WEAVE_END_OF_TLV
場合TLVUpdaterの読者は、コンテナの終わりを指しています。
WEAVE_ERROR_INVALID_TLV_ELEMENT
TLVIpdaterの読者は、有効な上に配置されていない場合はTLVの要素。
other
で返される他のエラーコードを返しますTLVReader ::スキップ()メソッドを。

MoveUntilEnd

void MoveUntilEnd(
  void
)

すべてを動かしTLVUpdater入力の終わりまでの現在の読み取りポイントTLV出力にオーバーバッファリング。

すべてを移動するこの方法がサポートTLVUpdater 「読者の終わりまでの現在の読み取りポイントがにオーバーバッファTLVUpdaterの作家。

WEAVE_ERROR Next(
  void
)

現在の要素をスキップして前進TLVUpdaterの入力における次の要素にオブジェクトをTLV

次に()メソッドは、入力における現在の要素スキップTLVをと進むTLVUpdater次の要素へのリーダーを同じ包含コンテキストにあること。具体的には、読者はの最も外側のレベルに位置している場合にTLVを呼び出し、エンコーディング次へ()次に、最上位要素にそれを進めます。リーダーが内部に配置されている場合TLVの呼び出し、コンテナ要素(構造、配列またはパス) 次に()を容器の次部材要素にそれを進めます。

以来、 次に()を呼び出して、現在の封じ込めコンテキストにリーダ運動を拘束次へ()が最初に到達するまで、リーダは、コンテナ要素上に配置されたときは、そのメンバー要素(及び任意のネストされたコンテナのメンバー)をスキップし、容器の上に進めますコンテナの後の要素。

特定の封じ込めコンテキスト内のさらなる要素が存在しない場合に次のページ()メソッドは、返されWEAVE_END_OF_TLVの誤差を、リーダの位置は変わりません。

詳細
戻り値
WEAVE_NO_ERROR
場合TLVUpdaterのリーダーが正常に新しい要素の上に配置しました。
other
で返される戻り値織りやプラットフォームのエラーコードTLVReader ::スキップ()TLVReader ::次の()メソッド。

プット

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v,
  bool preserveSize
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v,
  bool preserveSize
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v,
  bool preserveSize
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v,
  bool preserveSize
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v,
  bool preserveSize
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v,
  bool preserveSize
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v,
  bool preserveSize
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v,
  bool preserveSize
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  float v
)

プット

WEAVE_ERROR Put(
  uint64_t tag,
  double v
)

PutBoolean

l10n-placeholder = 56

PutBytes

l10n-placeholder = 57

PutNull

l10n-placeholder = 58

PutString

l10n-placeholder = 59

PutString

l10n-placeholder = 60

SetImplicitProfileId

l10n-placeholder = 61

TLVUpdaterオブジェクトの暗黙のプロファイルIDを設定します。

このメソッドは、TLVUpdaterオブジェクトの暗黙のプロファイルIDを設定します。アップデータは、新しい要素に関連付けられたタグのプロファイルIDは、プロファイルIDの値と一致する場合、新たな要素を符号化するために要求される場合、アップデータは、それによってプロセスのプロファイルIDを省略し、暗黙の形でタグをコードします。

詳細
パラメーター
[in] profileId
暗黙的な形式でエンコードする必要があるタグのプロファイルID。

StartContainer

l10n-placeholder = 62

PreventEndOfContainer

l10n-placeholder = 63