Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
flatbuffers
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
flatbuffers
Commits
2f7f50b8
Commit
2f7f50b8
authored
Mar 30, 2016
by
Wouter van Oortmerssen
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3816 from armen/master
Implement __vector_as_bytes and methods to get [ubyte] efficiently
parents
a1633055
28a3c939
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
46 additions
and
4 deletions
+46
-4
Table.php
php/Table.php
+9
-3
idl_gen_php.cpp
src/idl_gen_php.cpp
+20
-1
Monster.php
tests/MyGame/Example/Monster.php
+16
-0
phpTest.php
tests/phpTest.php
+1
-0
No files found.
php/Table.php
View file @
2f7f50b8
...
@@ -89,9 +89,15 @@ abstract class Table
...
@@ -89,9 +89,15 @@ abstract class Table
return
$offset
+
$this
->
bb
->
getInt
(
$offset
)
+
Constants
::
SIZEOF_INT
;
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
* @param Table $table
...
...
src/idl_gen_php.cpp
View file @
2f7f50b8
...
@@ -165,6 +165,22 @@ namespace php {
...
@@ -165,6 +165,22 @@ namespace php {
code
+=
Indent
+
"}
\n\n
"
;
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.
// Get the value of a struct's scalar.
static
void
GetScalarFieldOfStruct
(
const
FieldDef
&
field
,
static
void
GetScalarFieldOfStruct
(
const
FieldDef
&
field
,
std
::
string
*
code_ptr
)
{
std
::
string
*
code_ptr
)
{
...
@@ -250,7 +266,7 @@ namespace php {
...
@@ -250,7 +266,7 @@ namespace php {
");
\n
"
;
");
\n
"
;
code
+=
Indent
+
Indent
;
code
+=
Indent
+
Indent
;
code
+=
"return $o != 0 ? $obj->init("
;
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) : "
;
code
+=
"$o + $this->bb_pos, $this->bb) : "
;
}
else
{
}
else
{
...
@@ -690,6 +706,9 @@ namespace php {
...
@@ -690,6 +706,9 @@ namespace php {
}
}
if
(
field
.
value
.
type
.
base_type
==
BASE_TYPE_VECTOR
)
{
if
(
field
.
value
.
type
.
base_type
==
BASE_TYPE_VECTOR
)
{
GetVectorLen
(
field
,
code_ptr
);
GetVectorLen
(
field
,
code_ptr
);
if
(
field
.
value
.
type
.
element
==
BASE_TYPE_UCHAR
)
{
GetUByte
(
field
,
code_ptr
);
}
}
}
}
}
...
...
tests/MyGame/Example/Monster.php
View file @
2f7f50b8
...
@@ -98,6 +98,14 @@ class Monster extends Table
...
@@ -98,6 +98,14 @@ class Monster extends Table
return
$o
!=
0
?
$this
->
__vector_len
(
$o
)
:
0
;
return
$o
!=
0
?
$this
->
__vector_len
(
$o
)
:
0
;
}
}
/**
* @return string
*/
public
function
getInventoryBytes
()
{
return
$this
->
__vector_as_bytes
(
14
);
}
/**
/**
* @return sbyte
* @return sbyte
*/
*/
...
@@ -210,6 +218,14 @@ class Monster extends Table
...
@@ -210,6 +218,14 @@ class Monster extends Table
return
$o
!=
0
?
$this
->
__vector_len
(
$o
)
:
0
;
return
$o
!=
0
?
$this
->
__vector_len
(
$o
)
:
0
;
}
}
/**
* @return string
*/
public
function
getTestnestedflatbufferBytes
()
{
return
$this
->
__vector_as_bytes
(
30
);
}
public
function
getTestempty
()
public
function
getTestempty
()
{
{
$obj
=
new
Stat
();
$obj
=
new
Stat
();
...
...
tests/phpTest.php
View file @
2f7f50b8
...
@@ -128,6 +128,7 @@ function test_buffer(Assert $assert, Google\FlatBuffers\ByteBuffer $bb) {
...
@@ -128,6 +128,7 @@ function test_buffer(Assert $assert, Google\FlatBuffers\ByteBuffer $bb) {
}
}
$assert
->
strictEqual
(
$invsum
,
10
);
$assert
->
strictEqual
(
$invsum
,
10
);
$assert
->
strictEqual
(
bin2hex
(
$monster
->
GetInventoryBytes
()),
"0001020304"
);
$test_0
=
$monster
->
GetTest4
(
0
);
$test_0
=
$monster
->
GetTest4
(
0
);
$test_1
=
$monster
->
GetTest4
(
1
);
$test_1
=
$monster
->
GetTest4
(
1
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment