return $offset + $this->bb->getInt($offset) + Constants::SIZEOF_INT;
}
-// protected function __vector_as_bytebuffer($vector_offset, $elem_size)
-// {
-// }
+ protected function __vector_as_bytes($vector_offset, $elem_size=1)
+ {
+ $o = $this->__offset($vector_offset);
+ if ($o == 0) {
+ return null;
+ }
+
+ return substr($this->bb->_buffer, $this->__vector($o), $this->__vector_len($o) * $elem_size);
+ }
/**
* @param Table $table
code += Indent + "}\n\n";
}
+ // Get a [ubyte] vector as a byte array.
+ static void GetUByte(const FieldDef &field,
+ std::string *code_ptr) {
+ std::string &code = *code_ptr;
+
+ code += Indent + "/**\n";
+ code += Indent + " * @return string\n";
+ code += Indent + " */\n";
+ code += Indent + "public function get";
+ code += MakeCamel(field.name) + "Bytes()\n";
+ code += Indent + "{\n";
+ code += Indent + Indent + "return $this->__vector_as_bytes(";
+ code += NumToString(field.value.offset) + ");\n";
+ code += Indent + "}\n\n";
+ }
+
// Get the value of a struct's scalar.
static void GetScalarFieldOfStruct(const FieldDef &field,
std::string *code_ptr) {
");\n";
code += Indent + Indent;
code += "return $o != 0 ? $obj->init(";
- if (field.value.type.struct_def->fixed)
+ if (field.value.type.struct_def->fixed)
{
code += "$o + $this->bb_pos, $this->bb) : ";
} else {
}
if (field.value.type.base_type == BASE_TYPE_VECTOR) {
GetVectorLen(field, code_ptr);
+ if (field.value.type.element == BASE_TYPE_UCHAR) {
+ GetUByte(field, code_ptr);
+ }
}
}
}
/**
+ * @return string
+ */
+ public function getInventoryBytes()
+ {
+ return $this->__vector_as_bytes(14);
+ }
+
+ /**
* @return sbyte
*/
public function getColor()
return $o != 0 ? $this->__vector_len($o) : 0;
}
+ /**
+ * @return string
+ */
+ public function getTestnestedflatbufferBytes()
+ {
+ return $this->__vector_as_bytes(30);
+ }
+
public function getTestempty()
{
$obj = new Stat();
}
$assert->strictEqual($invsum, 10);
+ $assert->strictEqual(bin2hex($monster->GetInventoryBytes()), "0001020304");
$test_0 = $monster->GetTest4(0);
$test_1 = $monster->GetTest4(1);