O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

nl :: Tecer:: TLV :: TLVUpdater

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

Fornece uma interface de leitor / gravador unificada para editar / adicionar / excluir elementos em TLV codificação.

Resumo

O TLVUpdater é uma união doTLVReader eTLVWriter objetos e fornece métodos de interface para editar / exclusão de dados em uma codificação, bem como a adição de novos elementos para o TLV codificação. O TLVUpdater objeto essencialmente age como dois cursores, um para leitura de codificação existente e outra para escrever (ou para copiar sobre os dados existentes ou escrever novos dados).

Semanticamente, os TLVUpdater funções objeto como uma união doTLVReader eTLVWriter . Os TLVUpdater métodos têm significados mais ou menos semelhantes aos homólogos de nome semelhante, em TLVReader / TLVWriter. Onde existem diferenças na semântica, as diferenças são claramente documentado na seção de comentários da função em WeaveTLVUpdater.cpp .

Uma nota importante em particular sobre o TLVUpdater PutBytes 's () e PutString () métodos é que ele pode deixar a codificação em um estado corrupto apenas com o cabeçalho elemento escrito quando ocorre um estouro. Os aplicativos podem chamar GetRemainingFreeLength () para se certificar de que há espaço livre aproximadamente o suficiente para escrever a codificação. Note-se que GetRemainingFreeLength () só informa os bytes disponíveis e não há nenhuma maneira para que o aplicativo para saber o comprimento dos dados codificados que é escrita. No caso de um estouro, PutBytes () e PutString () retornarão WEAVE_ERROR_BUFFER_TOO_SMALL ao chamador.

Além disso, nota que Próximo () método é sobrecarregado para ambos ignorar o elemento corrente e também avançar o leitor interno para o elemento seguinte. Porque pular elementos já codificados requer mudança gratuitos variáveis de estado espaço do escritor interna para conta para o novo espaço liberado (disponibilizado saltando), está prevista a aplicação de chamar Next () sobre o atualizador depois de um método Get () cujo valor ele doesn não deseja escrever de volta (o que equivale a pular o elemento atual).

Funções públicas

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)
Prepara um TLVUpdater objeto para a leitura de elementos de um recipiente.
ExitContainer ( TLVType outerContainerType)
Completa a leitura de um TLV elemento de recipiente e que codifica uma extremidade de TLV elemento na saída 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)
Inicializar um TLVUpdater objecto para editar um único buffer de entrada.
Init (TLVReader & aReader, uint32_t freeLen)
Inicializar um TLVUpdater objecto utilizando umaTLVReader .
Move (void)
Cópias do elemento de corrente de entrada TLV para a saída TLV .
MoveUntilEnd (void)
void
Mover tudo, desde o TLVUpdater ponto de leitura atual 's até final da entrada TLV tampão sobre a saída.
Next (void)
Ir o elemento atual e avançar o TLVUpdater objeto para o próximo elemento na entrada 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
Defina o ID perfil implícita para o TLVUpdater objeto.
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType)
VerifyEndOfContainer (void)

Funções públicas

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
)

Prepara um TLVUpdater objeto para a leitura de elementos de um recipiente.

É também codifica um início de objecto recipiente na saída TLV .

O EnterContainer () método prepara-se o atual TLVUpdater objecto para começar a ler os elementos de membro de uma TLV recipiente (uma estrutura, de matriz ou de caminho). Para cada chamada para EnterContainer () aplicações deve fazer uma chamada correspondente a ExitContainer () .

Quando EnterContainer () é chamado o TLVUpdater leitor 's devem ser posicionados sobre o elemento de recipiente. O método toma como argumento uma referência a um valor TLVType que será usado para salvar o contexto do atualizador enquanto ele está lendo o contêiner.

Quando os EnterContainer () método retorna, o programa de actualização é posicionado imediatamente antes do primeiro membro do recipiente. Repetidamente chamando Next () vai avançar o atualizador através dos membros da coleção até o fim é alcançado, altura em que o atualizador irá retornar WEAVE_END_OF_TLV.

Uma vez que o pedido tenha terminado de ler um recipiente que pode continuar lendo os elementos após o contêiner chamando o ExitContainer () método.

Detalhes
Parâmetros
[out] outerContainerType
Uma referência a um valor TLVType que receberá o contexto do atualizador.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INCORRECT_STATE
Se o TLVUpdater leitor não é posicionado sobre um elemento de recipiente.
other
Qualquer outro código Weave ou plataforma de erro retornado pelo TLVWriter :: StartContainer () ou TLVReader :: EnterContainer () .

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

Completa a leitura de um TLV elemento de recipiente e que codifica uma extremidade de TLV elemento na saída TLV .

O ExitContainer () método restaura o estado de um TLVUpdater objecto após uma chamada para EnterContainer () . Para cada chamada para EnterContainer () aplicações deve fazer uma chamada correspondente a ExitContainer () , passando o valor de contexto retornado pelo EnterContainer () método.

Quando ExitContainer () retorna, o TLVUpdater leitor está posicionado imediatamente antes do primeiro elemento que segue o recipiente dentro da entrada TLV . A partir deste ponto os aplicativos podem chamar Next () para avançar através quaisquer elementos restantes.

Uma vez EnterContainer () foi chamado, os aplicativos podem chamar ExitContainer () sobre o atualizador em qualquer ponto no tempo, independentemente de todos os elementos no recipiente subjacente foram lidas. Além disso, nota que chamar ExitContainer () antes de ler todos os elementos no recipiente, irá resultar no recipiente atualizados ficar truncado na saída TLV .

Detalhes
Parâmetros
[in] outerContainerType
O valor TLVType que foi devolvido pelo EnterContainer () método.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_TLV_UNDERRUN
Se o subjacente TLV codificando terminada prematuramente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se o atualizador encontrou um inválido ou não suportado TLV tipo de elemento.
WEAVE_ERROR_INVALID_TLV_TAG
Se o atualizador encontrou um TLV tag em um contexto inválido.
other
Qualquer outro código Weave ou plataforma de erro retornado pelo TLVWriter :: EndContainer () ou TLVReader :: ExitContainer () .

Finalizar

WEAVE_ERROR Finalize(
  void
)

Obter

WEAVE_ERROR Get(
  bool & v
)

Obter

WEAVE_ERROR Get(
  int8_t & v
)

Obter

WEAVE_ERROR Get(
  int16_t & v
)

Obter

WEAVE_ERROR Get(
  int32_t & v
)

Obter

WEAVE_ERROR Get(
  int64_t & v
)

Obter

WEAVE_ERROR Get(
  uint8_t & v
)

Obter

WEAVE_ERROR Get(
  uint16_t & v
)

Obter

WEAVE_ERROR Get(
  uint32_t & v
)

Obter

WEAVE_ERROR Get(
  uint64_t & v
)

Obter

WEAVE_ERROR Get(
  float & v
)

Obter

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 

Iniciar

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

Inicializar um TLVUpdater objecto para editar um único buffer de entrada.

Em chamar esse método, o TLV dados no buffer é movido para o final do buffer e uma privadaTLVReader objeto é inicializado neste tampão realocado. A privadaTLVWriter objeto também é inicializado no espaço livre que está agora disponível no início. Os aplicativos podem usar o TLVUpdater objeto para analisar os TLV dados e modificar / apagar elementos existentes ou adicionar novos elementos para a codificação.

Detalhes
Parâmetros
[in] buf
Um apontador para um tampão contendo os TLV de dados a ser editado.
[in] dataLen
O comprimento dos TLV dados na memória intermédia.
[in] maxLen
O comprimento total do buffer.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INVALID_ARGUMENT
Se o endereço do buffer for inválido.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se o buffer for muito pequeno.

Iniciar

WEAVE_ERROR Init(
  TLVReader & aReader,
  uint32_t freeLen
)

Inicializar um TLVUpdater objecto utilizando umaTLVReader .

Na ligando este método, TLV dados na memória intermédia apontada peloTLVReader é movido a partir do ponto de leitura de corrente ao fim da memória intermédia. Um novo privadoTLVReader objeto é inicializado para ler a partir deste novo local, enquanto um novo privadoTLVWriter objeto é inicializado para gravação para o espaço de buffer liberado.

Note-se que se oTLVReader já está posicionada "em" um elemento, ele é apoiado-off para o início desse elemento em primeiro lugar. Note também que esta backing off funciona bem com elementos de contêiner, ou seja, se oTLVReader já foi usado para chamar EnterContainer () , então não há nada para back-off. Mas se oTLVReader foi posicionada sobre o elemento de recipiente e EnterContainer () não foi ainda chamado, em seguida, oTLVReader objecto é apoiado-off para o início da cabeça do recipiente.

A entradaTLVReader objeto será destruído antes de retornar e o aplicativo não deve fazer uso do mesmo no retorno.

Detalhes
Parâmetros
[in,out] aReader
Referência a umTLVReader objeto que será destruído antes de retornar.
[in] freeLen
O comprimento do espaço livre (em bytes) disponível no buffer de dados pré-codificado.
Valores Retornados
WEAVE_NO_ERROR
Se o método for bem-sucedido.
WEAVE_ERROR_INVALID_ARGUMENT
Se o endereço do buffer for inválido.
WEAVE_ERROR_NOT_IMPLEMENTED
Se o leitor foi inicializado em uma cadeia de buffers.

Mover

WEAVE_ERROR Move(
  void
)

Cópias do elemento de corrente de entrada TLV para a saída TLV .

Os caminho () método copia o elemento de corrente em que o TLVUpdater 's leitor está posicionado em, para o TLVUpdater ' s escritor. O aplicativo deve chamar Next () ea posição do TLVUpdater leitor 's em um elemento antes de chamar esse método. Assim como o TLVReader :: Next () método, se o leitor está posicionado em um elemento de recipiente no momento da chamada, todos os membros do recipiente serão copiados. Se o leitor não estiver posicionado em nenhum elemento, nada muda ao chamar este método.

Detalhes
Valores Retornados
WEAVE_NO_ERROR
Se o TLVUpdater leitor foi posicionado com sucesso em um novo elemento.
WEAVE_END_OF_TLV
Se o TLVUpdater leitor 's está a apontar para acabar de recipiente.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Se o leitor do TLVIpdater não está posicionado em um válido TLV elemento.
other
Retorna outros códigos de erro retornados por TLVReader :: SKIP () método.

MoveUntilEnd

void MoveUntilEnd(
  void
)

Mover tudo, desde o TLVUpdater ponto de leitura atual 's até final da entrada TLV tampão sobre a saída.

Este método oferece suporte movendo tudo, desde o TLVUpdater 'ponto de leitura atual s até o final do leitor tampão para o TLVUpdater ' escritor s.

Próximo

WEAVE_ERROR Next(
  void
)

Ir o elemento atual e avançar o TLVUpdater objeto para o próximo elemento na entrada TLV .

O seguinte () método ignora o elemento corrente na entrada TLV e avança o TLVUpdater leitor 's para o elemento seguinte que reside no mesmo contexto de contenção. Em particular, se o leitor está posicionado na parte mais exterior de um nível TLV codificação, chamando Próximo () irá avançar para o próximo, mais alto elemento. Se o leitor está posicionado dentro de um TLV elemento de recipiente (uma estrutura, matriz ou caminho), chamando Próximo () irá avançar para o próximo elemento de membro do recipiente.

Desde Próximo () constrange leitor de movimento para o contexto de contenção corrente, chamando Próximo () quando o leitor está posicionado sobre um elemento de recipiente irá avançar ao longo do recipiente, ignorando os seus elementos de membro (e os membros de quaisquer recipientes aninhados) até que atinge o primeiro elemento após o contêiner.

Quando não há mais elementos dentro de um contexto de confinamento, a seguinte () método retornará uma WEAVE_END_OF_TLV erro e a posição do leitor permanecerá inalterada.

Detalhes
Valores Retornados
WEAVE_NO_ERROR
Se o TLVUpdater leitor foi posicionado com sucesso em um novo elemento.
other
Retorna o Weave ou códigos de erro de plataforma retornados pelo TLVReader :: SKIP () e TLVReader :: Next () método.

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

Colocar

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

Colocar

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

Colocar

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

Colocar

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

Colocar

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

Colocar

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

Colocar

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

Colocar

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

Colocar

WEAVE_ERROR Put(
  uint64_t tag,
  float v
)

Colocar

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

Defina o ID perfil implícita para o objeto TLVUpdater.

Este método define o ID do perfil implícita para o objeto TLVUpdater. Quando o programa de actualização é solicitado para codificar um novo elemento, se a ID do perfil da marca associada com o novo elemento coincide com o valor da profileId, o programa de actualização irá codificar a etiqueta em forma implícita, omitindo, assim, a identificação do perfil no processo.

Detalhes
Parâmetros
[in] profileId
O ID do perfil das tags que devem ser codificadas de forma implícita.

StartContainer

l10n-placeholder = 62

VerifyEndOfContainer

l10n-placeholder = 63