Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

nl :: 짜다:: TLV :: TLVUpdater

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

/ 편집 / 추가 요소 삭제하기위한 통합 리더 / 라이터 인터페이스를 제공합니다 TLV의 인코딩을.

요약

TLVUpdater는 의 조합이다TLVReaderTLVWriter는 개체 및 편집 / 삭제 데이터를 부호화뿐만 아니라, 새로운 요소를 추가하는 인터페이스 제공 방법이 TLV를 부호화한다. TLVUpdater의 객체는 기본적으로 두 커서, (기존 데이터를 통해 복사하거나 새로운 데이터를 작성하기위한 하나) 작성을위한 기존의 인코딩을 읽기위한 다른 하나 같은 역할을합니다.

의미는 TLVUpdater의 오브젝트 기능의 조합처럼TLVReaderTLVWriter을 . TLVUpdater의 방법은 TLVReader / TLVWriter에서 비슷한 이름의 대응 등 더 많거나 적은 유사한 의미를 가지고있다. 의미의 차이가있는 경우, 그 차이는 명확에서 함수의 코멘트 섹션에 설명되어 있습니다 WeaveTLVUpdater.cpp .

[정보 한 특별히 중요 TLVUpdater 의 PutBytes () 및 PutString는 () 메소드는 오버 플로우가 발생하는 경우에만 기록 소자 헤더 손상된 상태에서 인코딩을 남길 수 있다는 것이다. 응용 프로그램은 반드시 인코딩을 쓸 수있는 충분한 여유 공간이 있도록 GetRemainingFreeLength ()를 호출 할 수 있습니다. GetRemainingFreeLength ()는 당신에게 사용 가능한 바이트를 지시하고 응용 프로그램이 작성됩니다 인코딩 된 데이터의 길이를 알 수있는 방법이 없습니다 있습니다. 오버플로가 발생하면 PutBytes () 및 PutString () 모두 호출자에게 WEAVE_ERROR_BUFFER_TOO_SMALL을 반환합니다.

또한, 참고로 다음 () 메소드는 다음 요소 내부 리더 진전 또한 현재의 구성 요소를 생략하고 모두 과부하. 이미 인코딩 된 요소를 건너 뛰는 것은 (생략에 의해 제공) 새로운 해방 공간에 대한 계정에 내부 작가의 여유 공간 상태 변수를 변경해야하기 때문에 응용 프로그램이 호출 할 것으로 예상된다 다음 () 값이이 아무튼 겟 () 메소드 후 업데이터에를 다시 쓰고 싶지 않습니다 (현재 요소를 건너 뛰는 것과 같습니다).

공공 기능

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)
(A)의 판독 완료 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의 (A)의 부재 요소 읽기 시작하는 개체 TLV의 용기 (a 구조 배열 또는 경로). 호출 할 때마다 들어 EnterContainer () 응용 프로그램에 해당하는 호출해야합니다 ExitContainer을 () .

경우 EnterContainer ()가 호출 될 TLVUpdater 의 리더는 컨테이너 요소 상에 위치되어야한다. 이 메서드는 컨테이너를 읽는 동안 업데이트 프로그램의 컨텍스트를 저장하는 데 사용되는 TLVType 값에 대한 참조를 인수로받습니다.

EnterContainer () 메소드가 복귀은 업데이터는 용기의 제 1 부재의 직전에 배치된다. 반복적으로 호출 다음 () 단부가 업데이터 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
)

(A)의 판독 완료 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
A와 참조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
는 IF TLVUpdater의 독자는 성공적으로 새로운 요소에 배치했다.
WEAVE_END_OF_TLV
는 IF 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
는 IF 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가 profileID가의 값과 일치하는 경우, 새로운 요소를 인코딩하기 위해 요구되는 경우, 갱신 부함으로써 프로세스 프로파일 ID를 생략 암묵적인 형태의 태그들을 인코딩한다.

세부
매개 변수
[in] profileId
암시 적 형식으로 인코딩해야하는 태그의 프로필 ID입니다.

StartContainer

l10n-placeholder = 62

VerifyEndOfContainer

l10n-placeholder = 63