Adding a method to get the file identifier from a flatbuffer.
authorWouter van Oortmerssen <aardappel@gmail.com>
Fri, 16 Jun 2017 19:30:36 +0000 (12:30 -0700)
committerWouter van Oortmerssen <aardappel@gmail.com>
Fri, 16 Jun 2017 19:30:36 +0000 (12:30 -0700)
Change-Id: Ie28fd1f0b463aac23647d38921600f15c8b7c10a

include/flatbuffers/flatbuffers.h

index 4ca8295..1f45668 100644 (file)
@@ -1516,9 +1516,21 @@ template<typename T> const T *GetTemporaryPointer(FlatBufferBuilder &fbb,
   return GetMutableTemporaryPointer<T>(fbb, offset);
 }
 
+
+/// @brief Get a pointer to the the file_identifier section of the buffer.
+/// @return Returns a const char pointer to the start of the file_identifier
+/// characters in the buffer.  The returned char * has length
+/// 'flatbuffers::FlatBufferBuilder::kFileIdentifierLength'.
+/// This function is UNDEFINED for FlatBuffers whose schema does not include
+/// a file_identifier (likely points at padding or the start of a the root
+/// vtable).
+inline const char *GetBufferIdentifier(const void *buf) {
+  return reinterpret_cast<const char *>(buf) + sizeof(uoffset_t);
+}
+
 // Helper to see if the identifier in a buffer has the expected value.
 inline bool BufferHasIdentifier(const void *buf, const char *identifier) {
-  return strncmp(reinterpret_cast<const char *>(buf) + sizeof(uoffset_t),
+  return strncmp(GetBufferIdentifier(buf),
                  identifier, FlatBufferBuilder::kFileIdentifierLength) == 0;
 }