Skip to content

Commit b763783

Browse files
committed
Implement mergeFrom for hhvm
1 parent eeb53ec commit b763783

3 files changed

Lines changed: 39 additions & 28 deletions

File tree

php/ext/google/protobuf/hhvm/ext_protobuf.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public function __construct(): void;
1313
<<__Native>>
1414
public function serializeToString(): string;
1515
<<__Native>>
16+
public function mergeFrom(Message $other): void;
17+
<<__Native>>
1618
public function mergeFromString(string $data): void;
1719
<<__Native>>
1820
public function writeProperty(string $name, mixed $value): void;

php/ext/google/protobuf/hhvm/message_hhvm.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ static Variant Message_unset(const Object& obj, const String& name) {
291291

292292
void HHVM_METHOD(Message, __construct);
293293
String HHVM_METHOD(Message, serializeToString);
294+
void HHVM_METHOD(Message, mergeFrom, const Variant& other);
294295
void HHVM_METHOD(Message, mergeFromString, const String& data);
295296
void HHVM_METHOD(Message, writeProperty, const String& name,
296297
const Variant& value);
@@ -307,6 +308,8 @@ void Message_init() {
307308
__construct, HHVM_MN(Message, __construct));
308309
HHVM_NAMED_ME(Google\\Protobuf\\Internal\\Message,
309310
serializeToString, HHVM_MN(Message, serializeToString));
311+
HHVM_NAMED_ME(Google\\Protobuf\\Internal\\Message,
312+
mergeFrom, HHVM_MN(Message, mergeFrom));
310313
HHVM_NAMED_ME(Google\\Protobuf\\Internal\\Message,
311314
mergeFromString, HHVM_MN(Message, mergeFromString));
312315
HHVM_NAMED_ME(Google\\Protobuf\\Internal\\Message,
@@ -349,6 +352,12 @@ String HHVM_METHOD(Message, serializeToString) {
349352
return return_value;
350353
}
351354

355+
void HHVM_METHOD(Message, mergeFrom, const Variant& other) {
356+
Message* from = Native::data<Message>(other.toObject());
357+
Message* to = Native::data<Message>(this_);
358+
Message_mergeFrom(from, to);
359+
}
360+
352361
void HHVM_METHOD(Message, mergeFromString, const String& data) {
353362
Message* intern = Native::data<Message>(this_);
354363
Message_mergeFromString(intern, data.c_str(), data.length());

php/ext/google/protobuf/hhvm/test.sh

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -34,34 +34,34 @@ run_tests()
3434

3535
PROTOC=../../../../../src/protoc
3636

37-
# # Test HHVM
38-
# echo "****************************"
39-
# echo "* Test HHVM"
40-
# echo "****************************"
41-
# rm -rf generated
42-
# mkdir generated
43-
#
44-
# $PROTOC --php_out=hhvm:generated \
45-
# proto/test.proto \
46-
# proto/test_include.proto \
47-
# proto/test_no_namespace.proto \
48-
# proto/test_prefix.proto \
49-
# proto/test_php_namespace.proto \
50-
# proto/test_empty_php_namespace.proto \
51-
# proto/test_reserved_enum_lower.proto \
52-
# proto/test_reserved_enum_upper.proto \
53-
# proto/test_reserved_enum_value_lower.proto \
54-
# proto/test_reserved_enum_value_upper.proto \
55-
# proto/test_reserved_message_lower.proto \
56-
# proto/test_reserved_message_upper.proto \
57-
# proto/test_service.proto \
58-
# proto/test_service_namespace.proto \
59-
# proto/test_descriptors.proto
60-
#
61-
# # make clean; hphpize; cmake . && make && hhvm -d extension_dir=. -d hhvm.extensions[]=protobuf.so test_hhvm.php
62-
# phpunit --version
63-
# make clean; hphpize; cmake . && TMPDIR=~/tmp make
64-
# run_tests hhvm
37+
# Test HHVM
38+
echo "****************************"
39+
echo "* Test HHVM"
40+
echo "****************************"
41+
rm -rf generated
42+
mkdir generated
43+
44+
$PROTOC --php_out=hhvm:generated \
45+
proto/test.proto \
46+
proto/test_include.proto \
47+
proto/test_no_namespace.proto \
48+
proto/test_prefix.proto \
49+
proto/test_php_namespace.proto \
50+
proto/test_empty_php_namespace.proto \
51+
proto/test_reserved_enum_lower.proto \
52+
proto/test_reserved_enum_upper.proto \
53+
proto/test_reserved_enum_value_lower.proto \
54+
proto/test_reserved_enum_value_upper.proto \
55+
proto/test_reserved_message_lower.proto \
56+
proto/test_reserved_message_upper.proto \
57+
proto/test_service.proto \
58+
proto/test_service_namespace.proto \
59+
proto/test_descriptors.proto
60+
61+
# make clean; hphpize; cmake . && make && hhvm -d extension_dir=. -d hhvm.extensions[]=protobuf.so test_hhvm.php
62+
phpunit --version
63+
make clean; hphpize; cmake . && TMPDIR=~/tmp make
64+
run_tests hhvm
6565

6666
# Test PHP
6767
rm -rf generated

0 commit comments

Comments
 (0)