Add support for triming vectors in json

Sometimes (we have images we want to print) we don't want to print out
all the data from long arrays in JSON.  That can be too slow.

Add an option which lets us limit the number of elements to print before
printing out a "... xxx elements ..." message instead.

Change-Id: I95ad6ea3e9e2fe1767005be8f53c8ba8d4371ace
diff --git a/aos/flatbuffer_introspection_test.cc b/aos/flatbuffer_introspection_test.cc
index 893b402..9da705f 100644
--- a/aos/flatbuffer_introspection_test.cc
+++ b/aos/flatbuffer_introspection_test.cc
@@ -314,5 +314,23 @@
   EXPECT_EQ(out, "{\"foo_string\": \"\\\"\\\\\\b\\f\\n\\r\\t\"}");
 }
 
+TEST_F(FlatbufferIntrospectionTest, TrimmedVector) {
+  flatbuffers::FlatBufferBuilder builder;
+
+  std::vector<int32_t> contents;
+  for (int i = 0; i < 101; ++i) {
+    contents.push_back(i);
+  }
+  const auto contents_offset = builder.CreateVector(contents);
+
+  ConfigurationBuilder config_builder(builder);
+  config_builder.add_vector_foo_int(contents_offset);
+
+  builder.Finish(config_builder.Finish());
+
+  std::string out = FlatbufferToJson(schema_, builder.GetBufferPointer(), 100);
+  EXPECT_EQ(out, "{\"vector_foo_int\": [ ... 101 elements ... ]}");
+}
+
 }  // namespace testing
 }  // namespace aos