summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Haberman <jhaberman@gmail.com>2019-01-26 19:14:16 -0800
committerJosh Haberman <jhaberman@gmail.com>2019-01-26 19:14:16 -0800
commit0dbbfd1f8041f863f8f4c6ada33c4102520d406f (patch)
tree683774976841f5c9ee966000170272c6e82bc45d
parentc4327e55ac186383f909d52ddd363971a2c60562 (diff)
Added missing functions.
-rw-r--r--tests/test_cpp.cc20
-rw-r--r--upb/def.c10
2 files changed, 30 insertions, 0 deletions
diff --git a/tests/test_cpp.cc b/tests/test_cpp.cc
index 86d7bc5..f1badc4 100644
--- a/tests/test_cpp.cc
+++ b/tests/test_cpp.cc
@@ -893,6 +893,26 @@ void TestHandlerDataDestruction() {
ASSERT(x == 0);
}
+void TestIteration() {
+ upb::SymbolTable symtab;
+ upb::MessageDefPtr md(upb_test_TestMessage_getmsgdef(symtab.ptr()));
+
+ // Test range-based for on both fields and oneofs (with the iterator adaptor).
+ int field_count = 0;
+ for (auto field : md.fields()) {
+ UPB_UNUSED(field);
+ field_count++;
+ }
+ ASSERT(field_count == md.field_count());
+
+ int oneof_count = 0;
+ for (auto oneof : md.oneofs()) {
+ UPB_UNUSED(oneof);
+ oneof_count++;
+ }
+ ASSERT(oneof_count == md.oneof_count());
+}
+
extern "C" {
int run_tests(int argc, char *argv[]) {
diff --git a/upb/def.c b/upb/def.c
index 4d4fea9..6d653ca 100644
--- a/upb/def.c
+++ b/upb/def.c
@@ -745,6 +745,11 @@ void upb_msg_field_iter_setdone(upb_msg_field_iter *iter) {
upb_inttable_iter_setdone(iter);
}
+bool upb_msg_field_iter_isequal(const upb_msg_field_iter * iter1,
+ const upb_msg_field_iter * iter2) {
+ return upb_inttable_iter_isequal(iter1, iter2);
+}
+
void upb_msg_oneof_begin(upb_msg_oneof_iter *iter, const upb_msgdef *m) {
upb_strtable_begin(iter, &m->ntof);
/* We need to skip past any initial fields. */
@@ -774,6 +779,11 @@ void upb_msg_oneof_iter_setdone(upb_msg_oneof_iter *iter) {
upb_strtable_iter_setdone(iter);
}
+bool upb_msg_oneof_iter_isequal(const upb_msg_oneof_iter *iter1,
+ const upb_msg_oneof_iter *iter2) {
+ return upb_strtable_iter_isequal(iter1, iter2);
+}
+
/* upb_oneofdef ***************************************************************/
const char *upb_oneofdef_name(const upb_oneofdef *o) {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback