ONE - On-device Neural Engine
Loading...
Searching...
No Matches
flexbuffers::Map Class Reference

#include <flexbuffers.h>

Collaboration diagram for flexbuffers::Map:

Public Member Functions

 Map (const uint8_t *data, uint8_t byte_width)
 
Reference operator[] (const char *key) const
 
Reference operator[] (const std::string &key) const
 
Vector Values () const
 
TypedVector Keys () const
 
bool IsTheEmptyMap () const
 
- Public Member Functions inherited from flexbuffers::Vector
 Vector (const uint8_t *data, uint8_t byte_width)
 
Reference operator[] (size_t i) const
 
bool IsTheEmptyVector () const
 
- Public Member Functions inherited from flexbuffers::Sized
 Sized (const uint8_t *data, uint8_t byte_width)
 
 Sized (const uint8_t *data, uint8_t byte_width, size_t sz)
 
size_t size () const
 
size_t read_size () const
 
- Public Member Functions inherited from flexbuffers::Object
 Object (const uint8_t *data, uint8_t byte_width)
 

Static Public Member Functions

static Map EmptyMap ()
 
- Static Public Member Functions inherited from flexbuffers::Vector
static Vector EmptyVector ()
 

Additional Inherited Members

- Protected Attributes inherited from flexbuffers::Sized
size_t size_
 
- Protected Attributes inherited from flexbuffers::Object
const uint8_t * data_
 
uint8_t byte_width_
 

Detailed Description

Definition at line 335 of file flexbuffers.h.

Constructor & Destructor Documentation

◆ Map()

flexbuffers::Map::Map ( const uint8_t *  data,
uint8_t  byte_width 
)
inline

Definition at line 337 of file flexbuffers.h.

337: Vector(data, byte_width) {}

Member Function Documentation

◆ EmptyMap()

static Map flexbuffers::Map::EmptyMap ( )
inlinestatic

Definition at line 353 of file flexbuffers.h.

353 {
354 static const uint8_t empty_map[] = {
355 0 /*keys_len*/, 0 /*keys_offset*/, 1 /*keys_width*/, 0 /*len*/
356 };
357 return Map(empty_map + 4, 1);
358 }
Map(const uint8_t *data, uint8_t byte_width)

Referenced by flexbuffers::Reference::AsMap(), and IsTheEmptyMap().

◆ IsTheEmptyMap()

bool flexbuffers::Map::IsTheEmptyMap ( ) const
inline

Definition at line 360 of file flexbuffers.h.

360{ return data_ == EmptyMap().data_; }
static Map EmptyMap()
const uint8_t * data_

References flexbuffers::Object::data_, and EmptyMap().

◆ Keys()

TypedVector flexbuffers::Map::Keys ( ) const
inline

Definition at line 344 of file flexbuffers.h.

344 {
345 const size_t num_prefixed_fields = 3;
346 auto keys_offset = data_ - byte_width_ * num_prefixed_fields;
347 return TypedVector(Indirect(keys_offset, byte_width_),
348 static_cast<uint8_t>(
349 ReadUInt64(keys_offset + byte_width_, byte_width_)),
350 FBT_KEY);
351 }
uint64_t ReadUInt64(const uint8_t *data, uint8_t byte_width)
const uint8_t * Indirect(const uint8_t *offset, uint8_t byte_width)

References flexbuffers::Object::byte_width_, flexbuffers::Object::data_, flexbuffers::FBT_KEY, flexbuffers::Indirect(), and flexbuffers::ReadUInt64().

Referenced by operator[](), circledump::CustomOpPrinter::options(), and tfldump::CustomOpPrinter::options().

◆ operator[]() [1/2]

Reference flexbuffers::Map::operator[] ( const char *  key) const
inline

Definition at line 863 of file flexbuffers.h.

863 {
864 auto keys = Keys();
865 // We can't pass keys.byte_width_ to the comparison function, so we have
866 // to pick the right one ahead of time.
867 int (*comp)(const void *, const void *) = nullptr;
868 switch (keys.byte_width_) {
869 case 1: comp = KeyCompare<uint8_t>; break;
870 case 2: comp = KeyCompare<uint16_t>; break;
871 case 4: comp = KeyCompare<uint32_t>; break;
872 case 8: comp = KeyCompare<uint64_t>; break;
873 default: FLATBUFFERS_ASSERT(false); return Reference();
874 }
875 auto res = std::bsearch(key, keys.data_, keys.size(), keys.byte_width_, comp);
876 if (!res) return Reference(nullptr, 1, NullPackedType());
877 auto i = (reinterpret_cast<uint8_t *>(res) - keys.data_) / keys.byte_width_;
878 return (*static_cast<const Vector *>(this))[i];
879}
#define FLATBUFFERS_ASSERT
Definition base.h:21
TypedVector Keys() const
uint8_t NullPackedType()

References FLATBUFFERS_ASSERT, Keys(), and flexbuffers::NullPackedType().

◆ operator[]() [2/2]

Reference flexbuffers::Map::operator[] ( const std::string &  key) const
inline

Definition at line 881 of file flexbuffers.h.

881 {
882 return (*this)[key.c_str()];
883}

◆ Values()

Vector flexbuffers::Map::Values ( ) const
inline

Definition at line 342 of file flexbuffers.h.

342{ return Vector(data_, byte_width_); }

References flexbuffers::Object::byte_width_, and flexbuffers::Object::data_.


The documentation for this class was generated from the following file: