diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..2f866b4e29 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,7 @@ +## Signing the CLA + +Please sign the [Google Contributor License Agreement +(CLA)](https://cla.developers.google.com/) +before sending pull requests. For any code changes to be +accepted, the CLA must be signed. It's a quick process, I +promise! diff --git a/tests/bindings/googlepb/test_vs_proto2.cc b/tests/bindings/googlepb/test_vs_proto2.cc index 06bea87d5e..ac447e1b0c 100644 --- a/tests/bindings/googlepb/test_vs_proto2.cc +++ b/tests/bindings/googlepb/test_vs_proto2.cc @@ -1,7 +1,4 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011-2012 Google Inc. See LICENSE for details. * * A test that verifies that our results are identical to proto2 for a * given proto type and input protobuf. diff --git a/tests/json/test_json.cc b/tests/json/test_json.cc index cb60bad3e9..8dd4062c95 100644 --- a/tests/json/test_json.cc +++ b/tests/json/test_json.cc @@ -1,7 +1,4 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2014 Google Inc. See LICENSE for details. * * A set of tests for JSON parsing and serialization. */ diff --git a/tests/pb/test_decoder.cc b/tests/pb/test_decoder.cc index c615a3cf4c..6bb53fc99c 100644 --- a/tests/pb/test_decoder.cc +++ b/tests/pb/test_decoder.cc @@ -1,7 +1,4 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011 Google Inc. See LICENSE for details. * * An exhaustive set of tests for parsing both valid and invalid protobuf * input, with buffer breaks in arbitrary places. diff --git a/tests/pb/test_varint.c b/tests/pb/test_varint.c index c80f127677..eff03faab7 100644 --- a/tests/pb/test_varint.c +++ b/tests/pb/test_varint.c @@ -1,8 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011 Google Inc. See LICENSE for details. - */ #include #include "upb/pb/varint.int.h" diff --git a/tests/test_cpp.cc b/tests/test_cpp.cc index c2de6c3dc3..48f0a3f267 100644 --- a/tests/test_cpp.cc +++ b/tests/test_cpp.cc @@ -1,8 +1,4 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011 Google Inc. See LICENSE for details. - * Author: Josh Haberman * * Tests for C++ wrappers. */ diff --git a/tests/test_def.c b/tests/test_def.c index c33d584487..3e92df2cf9 100644 --- a/tests/test_def.c +++ b/tests/test_def.c @@ -1,11 +1,7 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011 Google Inc. See LICENSE for details. - * - * Test of defs and symtab. There should be far more tests of edge conditions - * (like attempts to link defs that don't have required properties set). - */ +** Test of defs and symtab. There should be far more tests of edge conditions +** (like attempts to link defs that don't have required properties set). +*/ #include "upb/def.h" #include "upb/pb/glue.h" diff --git a/tests/test_handlers.c b/tests/test_handlers.c index be95c0ae3f..b591ad2709 100644 --- a/tests/test_handlers.c +++ b/tests/test_handlers.c @@ -1,9 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011 Google Inc. See LICENSE for details. - * - */ #include "upb/handlers.h" #include "upb/descriptor/descriptor.upb.h" diff --git a/tests/test_table.cc b/tests/test_table.cc index 13b2330aa6..8557092bde 100644 --- a/tests/test_table.cc +++ b/tests/test_table.cc @@ -1,7 +1,4 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. * * Tests for upb_table. */ diff --git a/tests/test_util.h b/tests/test_util.h index 73a5c19b8f..d9e8d2525c 100644 --- a/tests/test_util.h +++ b/tests/test_util.h @@ -1,10 +1,6 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2014 Google Inc. See LICENSE for details. - * - * Common functionality for tests. - */ +** Common functionality for tests. +**/ #ifndef UPB_TEST_UTIL_H_ #define UPB_TEST_UTIL_H_ diff --git a/tests/testmain.cc b/tests/testmain.cc index ac0b313f77..97dd7169a4 100644 --- a/tests/testmain.cc +++ b/tests/testmain.cc @@ -1,5 +1,3 @@ -// Copyright 2012 Google Inc. All Rights Reserved. -// Author: haberman@google.com (Josh Haberman) #include #ifdef USE_GOOGLE diff --git a/tests/upb_test.h b/tests/upb_test.h index 76844e5302..d4b06883c3 100644 --- a/tests/upb_test.h +++ b/tests/upb_test.h @@ -1,8 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011 Google Inc. See LICENSE for details. - */ #ifndef UPB_TEST_H_ #define UPB_TEST_H_ diff --git a/upb/bindings/googlepb/bridge.cc b/upb/bindings/googlepb/bridge.cc index 394f7b4c71..c1961407d5 100644 --- a/upb/bindings/googlepb/bridge.cc +++ b/upb/bindings/googlepb/bridge.cc @@ -1,9 +1,4 @@ -// -// upb - a minimalist implementation of protocol buffers. -// -// Copyright (c) 2011-2012 Google Inc. See LICENSE for details. -// Author: Josh Haberman -// + // IMPORTANT NOTE! Inside Google, This file is compiled TWICE, once with // UPB_GOOGLE3 defined and once without! This allows us to provide // functionality against proto2 and protobuf opensource both in a single binary diff --git a/upb/bindings/googlepb/bridge.h b/upb/bindings/googlepb/bridge.h index 98782473bd..ec8ac410ba 100644 --- a/upb/bindings/googlepb/bridge.h +++ b/upb/bindings/googlepb/bridge.h @@ -1,8 +1,7 @@ // -// upb - a minimalist implementation of protocol buffers. -// -// Copyright (c) 2011-2012 Google Inc. See LICENSE for details. -// Author: Josh Haberman +// upb::googlepb::DefBuilder +// upb::googlepb::WriteHandlers +// upb::googlepb::CodeCache // // This file contains functionality for constructing upb Defs and Handlers // corresponding to proto2 messages. Using this functionality, you can use upb diff --git a/upb/bindings/googlepb/proto1.cc b/upb/bindings/googlepb/proto1.cc index 68b572ca2e..fa51f79e80 100644 --- a/upb/bindings/googlepb/proto1.cc +++ b/upb/bindings/googlepb/proto1.cc @@ -1,9 +1,4 @@ // -// upb - a minimalist implementation of protocol buffers. -// -// Copyright (c) 2011-2012 Google Inc. See LICENSE for details. -// Author: Josh Haberman -// // This set of handlers can write into a proto2::Message whose reflection class // is _pi::Proto2Reflection (ie. proto1 messages; while slightly confusing, the // name "Proto2Reflection" indicates that it is a reflection class implementing diff --git a/upb/bindings/googlepb/proto1.int.h b/upb/bindings/googlepb/proto1.int.h index 64ebb2f19d..d5c9cad98f 100644 --- a/upb/bindings/googlepb/proto1.int.h +++ b/upb/bindings/googlepb/proto1.int.h @@ -1,9 +1,3 @@ -// -// upb - a minimalist implementation of protocol buffers. -// -// Copyright (c) 2011-2012 Google Inc. See LICENSE for details. -// Author: Josh Haberman -// // Support for registering field handlers that can write into a legacy proto1 // message. This functionality is only needed inside Google. // diff --git a/upb/bindings/googlepb/proto2.cc b/upb/bindings/googlepb/proto2.cc index 636bb90a57..ee31d34838 100644 --- a/upb/bindings/googlepb/proto2.cc +++ b/upb/bindings/googlepb/proto2.cc @@ -1,9 +1,4 @@ // -// upb - a minimalist implementation of protocol buffers. -// -// Copyright (c) 2011-2012 Google Inc. See LICENSE for details. -// Author: Josh Haberman -// // Note that we have received an exception from c-style-artiters regarding // dynamic_cast<> in this file: // https://groups.google.com/a/google.com/d/msg/c-style/7Zp_XCX0e7s/I6dpzno4l-MJ diff --git a/upb/bindings/googlepb/proto2.int.h b/upb/bindings/googlepb/proto2.int.h index 5ce44c48eb..4f45efb750 100644 --- a/upb/bindings/googlepb/proto2.int.h +++ b/upb/bindings/googlepb/proto2.int.h @@ -1,9 +1,3 @@ -// -// upb - a minimalist implementation of protocol buffers. -// -// Copyright (c) 2011-2012 Google Inc. See LICENSE for details. -// Author: Josh Haberman -// // Support for registering field handlers that can write into a proto2 // message that uses GeneratedMessageReflection (which includes all messages // generated by the proto2 compiler as well as DynamicMessage). diff --git a/upb/bindings/linux/assert.h b/upb/bindings/linux/assert.h index 26d8ab6423..543f7fb143 100644 --- a/upb/bindings/linux/assert.h +++ b/upb/bindings/linux/assert.h @@ -1,9 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #include diff --git a/upb/bindings/linux/errno.h b/upb/bindings/linux/errno.h index f45d939a57..d6c56bcfb2 100644 --- a/upb/bindings/linux/errno.h +++ b/upb/bindings/linux/errno.h @@ -1,8 +1,2 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #include diff --git a/upb/bindings/linux/stdint.h b/upb/bindings/linux/stdint.h index 2524b23a51..2aa51445a6 100644 --- a/upb/bindings/linux/stdint.h +++ b/upb/bindings/linux/stdint.h @@ -1,8 +1,2 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #include diff --git a/upb/bindings/linux/stdio.h b/upb/bindings/linux/stdio.h index 72c1b0df52..dd22e5b232 100644 --- a/upb/bindings/linux/stdio.h +++ b/upb/bindings/linux/stdio.h @@ -1,10 +1,2 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Linux-kernel implementations of some stdlib.h functions. - */ #include // For sprintf and friends. diff --git a/upb/bindings/linux/stdlib.h b/upb/bindings/linux/stdlib.h index 8381b13bbd..5ae674238c 100644 --- a/upb/bindings/linux/stdlib.h +++ b/upb/bindings/linux/stdlib.h @@ -1,11 +1,6 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Linux-kernel implementations of some stdlib.h functions. - */ +** Linux-kernel implementations of some stdlib.h functions. +*/ #include diff --git a/upb/bindings/linux/string.h b/upb/bindings/linux/string.h index 30ebf8aa71..9cfd9b3848 100644 --- a/upb/bindings/linux/string.h +++ b/upb/bindings/linux/string.h @@ -1,9 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #ifndef UPB_LINUX_STRING_H_ #define UPB_LINUX_STRING_H_ diff --git a/upb/bindings/lua/upb.c b/upb/bindings/lua/upb.c index 9629314d6d..2d7b1b3bc4 100644 --- a/upb/bindings/lua/upb.c +++ b/upb/bindings/lua/upb.c @@ -1,27 +1,24 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * A Lua extension for upb. Exposes only the core library - * (sub-libraries are exposed in other extensions). - * - * 64-bit woes: Lua can only represent numbers of type lua_Number (which is - * double unless the user specifically overrides this). Doubles can represent - * the entire range of 64-bit integers, but lose precision once the integers are - * greater than 2^53. - * - * Lua 5.3 is adding support for integers, which will allow for 64-bit - * integers (which can be interpreted as signed or unsigned). - * - * LuaJIT supports 64-bit signed and unsigned boxed representations - * through its "cdata" mechanism, but this is not portable to regular Lua. - * - * Hopefully Lua 5.3 will come soon enough that we can either use Lua 5.3 - * integer support or LuaJIT 64-bit cdata for users that need the entire - * domain of [u]int64 values. - */ +** require("lua") -- A Lua extension for upb. +** +** Exposes only the core library +** (sub-libraries are exposed in other extensions). +** +** 64-bit woes: Lua can only represent numbers of type lua_Number (which is +** double unless the user specifically overrides this). Doubles can represent +** the entire range of 64-bit integers, but lose precision once the integers are +** greater than 2^53. +** +** Lua 5.3 is adding support for integers, which will allow for 64-bit +** integers (which can be interpreted as signed or unsigned). +** +** LuaJIT supports 64-bit signed and unsigned boxed representations +** through its "cdata" mechanism, but this is not portable to regular Lua. +** +** Hopefully Lua 5.3 will come soon enough that we can either use Lua 5.3 +** integer support or LuaJIT 64-bit cdata for users that need the entire +** domain of [u]int64 values. +*/ #include #include diff --git a/upb/bindings/lua/upb.h b/upb/bindings/lua/upb.h index 09ffaa9b3a..6957ec248d 100644 --- a/upb/bindings/lua/upb.h +++ b/upb/bindings/lua/upb.h @@ -1,11 +1,6 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Shared definitions for upb Lua modules. - */ +** Shared definitions for upb Lua modules. +*/ #ifndef UPB_LUA_UPB_H_ #define UPB_LUA_UPB_H_ diff --git a/upb/bindings/lua/upb/pb.c b/upb/bindings/lua/upb/pb.c index b85da1857e..f095a6108e 100644 --- a/upb/bindings/lua/upb/pb.c +++ b/upb/bindings/lua/upb/pb.c @@ -1,14 +1,9 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2014 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * A Lua extension for upb.pb. - * - * Exposes all the types defined in upb/pb/{*}.h - * Also defines a few convenience functions on top. - */ +** require("upb.pb") -- A Lua extension for upb.pb. +** +** Exposes all the types defined in upb/pb/{*}.h +** Also defines a few convenience functions on top. +*/ #include "upb/bindings/lua/upb.h" #include "upb/pb/decoder.h" diff --git a/upb/bindings/lua/upb/table.c b/upb/bindings/lua/upb/table.c index b82b3f8b74..2379342956 100644 --- a/upb/bindings/lua/upb/table.c +++ b/upb/bindings/lua/upb/table.c @@ -1,21 +1,17 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Lua extension that provides access to upb_table. This is an internal-only - * interface and exists for the sole purpose of writing a C code generator in - * Lua that can dump a upb_table as static C initializers. This lets us use - * Lua for convenient string manipulation while saving us from re-implementing - * the upb_table hash function and hash table layout / collision strategy in - * Lua. - * - * Since this is used only as part of the toolchain (and not part of the - * runtime) we do not hold this module to the same stringent requirements as - * the main Lua modules (for example that misbehaving Lua programs cannot - * crash the interpreter). - */ +** require("upb.table") -- a Lua extension for accessing upb_table +** +** This is an internal-only interface and exists for the sole purpose of +** writing a C code generator in Lua that can dump a upb_table as static C +** initializers. This lets us use Lua for convenient string manipulation while +** saving us from re-implementing the upb_table hash function and hash table +** layout / collision strategy in Lua. +** +** Since this is used only as part of the toolchain (and not part of the +** runtime) we do not hold this module to the same stringent requirements as +** the main Lua modules (for example that misbehaving Lua programs cannot +** crash the interpreter). +*/ #include #include diff --git a/upb/bindings/python/upb.c b/upb/bindings/python/upb.c index 6cfc8e9a0d..778b821955 100644 --- a/upb/bindings/python/upb.c +++ b/upb/bindings/python/upb.c @@ -1,12 +1,7 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Python extension exposing the core of upb: definitions, handlers, - * and a message type. - */ +** Python extension exposing the core of upb: definitions, handlers, +** and a message type. +**/ #include #include diff --git a/upb/bindings/ruby/upb.c b/upb/bindings/ruby/upb.c index 961836692d..ea0fcc8a3a 100644 --- a/upb/bindings/ruby/upb.c +++ b/upb/bindings/ruby/upb.c @@ -1,11 +1,6 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2014 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * upb (prototype) extension for Ruby. - */ +** upb (prototype) extension for Ruby. +*/ #include "ruby/ruby.h" #include "ruby/vm.h" diff --git a/upb/bindings/stdc++/string.h b/upb/bindings/stdc++/string.h index 20a08768ce..99efd4f315 100644 --- a/upb/bindings/stdc++/string.h +++ b/upb/bindings/stdc++/string.h @@ -1,7 +1,3 @@ -// Copyright 2014 Google Inc. All Rights Reserved. -// Author: haberman@google.com (Josh Haberman) -// -// upb - a minimalist implementation of protocol buffers. #ifndef UPB_STDCPP_H_ #define UPB_STDCPP_H_ diff --git a/upb/bindings/stdc/error.c b/upb/bindings/stdc/error.c index 85c9ca6cd0..521c1e44ac 100644 --- a/upb/bindings/stdc/error.c +++ b/upb/bindings/stdc/error.c @@ -1,11 +1,6 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Handling of errno. - */ +** Handling of errno. +*/ #include "upb/stdc/error.h" diff --git a/upb/bindings/stdc/error.h b/upb/bindings/stdc/error.h index cfc70258aa..69a2e2bc58 100644 --- a/upb/bindings/stdc/error.h +++ b/upb/bindings/stdc/error.h @@ -1,11 +1,6 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Handling of errno. - */ +** Handling of errno. +*/ #include "upb/upb.h" diff --git a/upb/bindings/stdc/io.c b/upb/bindings/stdc/io.c index 5d36aa567f..a95eb488ab 100644 --- a/upb/bindings/stdc/io.c +++ b/upb/bindings/stdc/io.c @@ -1,9 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #include "upb/stdc/io.h" diff --git a/upb/bindings/stdc/io.h b/upb/bindings/stdc/io.h index 7c6f282c45..b13150040c 100644 --- a/upb/bindings/stdc/io.h +++ b/upb/bindings/stdc/io.h @@ -1,11 +1,6 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * ANSI C file I/O. - */ +** ANSI C file I/O. +*/ #ifndef UPB_STDC_IO_H_ #define UPB_STDC_IO_H_ diff --git a/upb/def.c b/upb/def.c index 528930fa1a..79e7562b97 100644 --- a/upb/def.c +++ b/upb/def.c @@ -1,9 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2008-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #include "upb/def.h" diff --git a/upb/def.h b/upb/def.h index f1f781f7ce..8f0f33bd3d 100644 --- a/upb/def.h +++ b/upb/def.h @@ -1,23 +1,21 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Defs are upb's internal representation of the constructs that can appear - * in a .proto file: - * - * - upb_msgdef: describes a "message" construct. - * - upb_fielddef: describes a message field. - * - upb_enumdef: describes an enum. - * (TODO: definitions of services). - * - * Like upb_refcounted objects, defs are mutable only until frozen, and are - * only thread-safe once frozen. - * - * This is a mixed C/C++ interface that offers a full API to both languages. - * See the top-level README for more information. - */ +** Defs are upb's internal representation of the constructs that can appear +** in a .proto file: +** +** - upb::MessageDef (upb_msgdef): describes a "message" construct. +** - upb::FieldDef (upb_fielddef): describes a message field. +** - upb::EnumDef (upb_enumdef): describes an enum. +** - upb::OneofDef (upb_oneofdef): describes a oneof. +** - upb::Def (upb_def): base class of all the others. +** +** TODO: definitions of services. +** +** Like upb_refcounted objects, defs are mutable only until frozen, and are +** only thread-safe once frozen. +** +** This is a mixed C/C++ interface that offers a full API to both languages. +** See the top-level README for more information. +*/ #ifndef UPB_DEF_H_ #define UPB_DEF_H_ diff --git a/upb/descriptor/reader.c b/upb/descriptor/reader.c index 9ed5d12225..17d6675eb1 100644 --- a/upb/descriptor/reader.c +++ b/upb/descriptor/reader.c @@ -1,15 +1,10 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2008-2009 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * XXX: The routines in this file that consume a string do not currently - * support having the string span buffers. In the future, as upb_sink and - * its buffering/sharing functionality evolve there should be an easy and - * idiomatic way of correctly handling this case. For now, we accept this - * limitation since we currently only parse descriptors from single strings. - */ +** XXX: The routines in this file that consume a string do not currently +** support having the string span buffers. In the future, as upb_sink and +** its buffering/sharing functionality evolve there should be an easy and +** idiomatic way of correctly handling this case. For now, we accept this +** limitation since we currently only parse descriptors from single strings. +*/ #include "upb/descriptor/reader.h" diff --git a/upb/descriptor/reader.h b/upb/descriptor/reader.h index bb9565ca2f..e345f53eb9 100644 --- a/upb/descriptor/reader.h +++ b/upb/descriptor/reader.h @@ -1,12 +1,8 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * upb::descriptor::Reader provides a way of building upb::Defs from - * data in descriptor.proto format. - */ +** upb::descriptor::Reader (upb_descreader) +** +** Provides a way of building upb::Defs from data in descriptor.proto format. +*/ #ifndef UPB_DESCRIPTOR_H #define UPB_DESCRIPTOR_H diff --git a/upb/env.c b/upb/env.c index c42560af82..973472e5c0 100644 --- a/upb/env.c +++ b/upb/env.c @@ -1,9 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2014 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #include "upb/env.h" diff --git a/upb/env.h b/upb/env.h index d5e87d2439..3d3585e625 100644 --- a/upb/env.h +++ b/upb/env.h @@ -1,19 +1,16 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2014 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * A upb::Environment provides a means for injecting malloc and an - * error-reporting callback into encoders/decoders. This allows them to be - * independent of nearly all assumptions about their actual environment. - * - * It is also a container for allocating the encoders/decoders themselves that - * insulates clients from knowing their actual size. This provides ABI - * compatibility even if the size of the objects change. And this allows the - * structure definitions to be in the .c files instead of the .h files, making - * the .h files smaller and more readable. - */ +** upb::Environment (upb_env) +** +** A upb::Environment provides a means for injecting malloc and an +** error-reporting callback into encoders/decoders. This allows them to be +** independent of nearly all assumptions about their actual environment. +** +** It is also a container for allocating the encoders/decoders themselves that +** insulates clients from knowing their actual size. This provides ABI +** compatibility even if the size of the objects change. And this allows the +** structure definitions to be in the .c files instead of the .h files, making +** the .h files smaller and more readable. +*/ #include "upb/upb.h" diff --git a/upb/handlers-inl.h b/upb/handlers-inl.h index 444ca7630f..8cec602941 100644 --- a/upb/handlers-inl.h +++ b/upb/handlers-inl.h @@ -1,12 +1,7 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Inline definitions for handlers.h, which are particularly long and a bit - * tricky. - */ +** Inline definitions for handlers.h, which are particularly long and a bit +** tricky. +*/ #ifndef UPB_HANDLERS_INL_H_ #define UPB_HANDLERS_INL_H_ diff --git a/upb/handlers.c b/upb/handlers.c index 64f85952bb..ead0403ae2 100644 --- a/upb/handlers.c +++ b/upb/handlers.c @@ -1,12 +1,7 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * TODO(haberman): it's unclear whether a lot of the consistency checks should - * assert() or return false. - */ +** TODO(haberman): it's unclear whether a lot of the consistency checks should +** assert() or return false. +*/ #include "upb/handlers.h" #include "upb/structdefs.int.h" diff --git a/upb/handlers.h b/upb/handlers.h index 229d8087b3..8925d4fcf3 100644 --- a/upb/handlers.h +++ b/upb/handlers.h @@ -1,23 +1,20 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2010-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * A upb_handlers is like a virtual table for a upb_msgdef. Each field of the - * message can have associated functions that will be called when we are - * parsing or visiting a stream of data. This is similar to how handlers work - * in SAX (the Simple API for XML). - * - * The handlers have no idea where the data is coming from, so a single set of - * handlers could be used with two completely different data sources (for - * example, a parser and a visitor over in-memory objects). This decoupling is - * the most important feature of upb, because it allows parsers and serializers - * to be highly reusable. - * - * This is a mixed C/C++ interface that offers a full API to both languages. - * See the top-level README for more information. - */ +** upb::Handlers (upb_handlers) +** +** A upb_handlers is like a virtual table for a upb_msgdef. Each field of the +** message can have associated functions that will be called when we are +** parsing or visiting a stream of data. This is similar to how handlers work +** in SAX (the Simple API for XML). +** +** The handlers have no idea where the data is coming from, so a single set of +** handlers could be used with two completely different data sources (for +** example, a parser and a visitor over in-memory objects). This decoupling is +** the most important feature of upb, because it allows parsers and serializers +** to be highly reusable. +** +** This is a mixed C/C++ interface that offers a full API to both languages. +** See the top-level README for more information. +*/ #ifndef UPB_HANDLERS_H #define UPB_HANDLERS_H diff --git a/upb/json/parser.h b/upb/json/parser.h index 2facb4521d..8e608e845d 100644 --- a/upb/json/parser.h +++ b/upb/json/parser.h @@ -1,12 +1,9 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2014 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * upb::json::Parser can parse JSON according to a specific schema. - * Support for parsing arbitrary JSON (schema-less) will be added later. - */ +** upb::json::Parser (upb_json_parser) +** +** Parses JSON according to a specific schema. +** Support for parsing arbitrary JSON (schema-less) will be added later. +*/ #ifndef UPB_JSON_PARSER_H_ #define UPB_JSON_PARSER_H_ diff --git a/upb/json/printer.c b/upb/json/printer.c index 7e52dc23a3..4a6f1adb17 100644 --- a/upb/json/printer.c +++ b/upb/json/printer.c @@ -1,12 +1,7 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2014 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * This currently uses snprintf() to format primitives, and could be optimized - * further. - */ +** This currently uses snprintf() to format primitives, and could be optimized +** further. +*/ #include "upb/json/printer.h" diff --git a/upb/json/printer.h b/upb/json/printer.h index 0b4e19c0a3..84d814ce3e 100644 --- a/upb/json/printer.h +++ b/upb/json/printer.h @@ -1,12 +1,8 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2014 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * upb::json::Printer allows you to create handlers that emit JSON - * according to a specific protobuf schema. - */ +** upb::json::Printer +** +** Handlers that emit JSON according to a specific protobuf schema. +*/ #ifndef UPB_JSON_TYPED_PRINTER_H_ #define UPB_JSON_TYPED_PRINTER_H_ diff --git a/upb/pb/compile_decoder.c b/upb/pb/compile_decoder.c index 83c914b848..28282473e8 100644 --- a/upb/pb/compile_decoder.c +++ b/upb/pb/compile_decoder.c @@ -1,19 +1,16 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2013 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Code to compile a upb::Handlers into bytecode for decoding a protobuf - * according to that specific schema and destination handlers. - * - * Compiling to bytecode is always the first step. If we are using the - * interpreted decoder we leave it as bytecode and interpret that. If we are - * using a JIT decoder we use a code generator to turn the bytecode into native - * code, LLVM IR, etc. - * - * Bytecode definition is in decoder.int.h. - */ +** protobuf decoder bytecode compiler +** +** Code to compile a upb::Handlers into bytecode for decoding a protobuf +** according to that specific schema and destination handlers. +** +** Compiling to bytecode is always the first step. If we are using the +** interpreted decoder we leave it as bytecode and interpret that. If we are +** using a JIT decoder we use a code generator to turn the bytecode into native +** code, LLVM IR, etc. +** +** Bytecode definition is in decoder.int.h. +*/ #include #include "upb/pb/decoder.int.h" diff --git a/upb/pb/compile_decoder_x64.c b/upb/pb/compile_decoder_x64.c index 9b78c65676..88561d681b 100644 --- a/upb/pb/compile_decoder_x64.c +++ b/upb/pb/compile_decoder_x64.c @@ -1,11 +1,6 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2013 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Driver code for the x64 JIT compiler. - */ +** Driver code for the x64 JIT compiler. +*/ /* Needed to ensure we get defines like MAP_ANON. */ #define _GNU_SOURCE diff --git a/upb/pb/decoder.c b/upb/pb/decoder.c index a6240cee6f..905fdd16ea 100644 --- a/upb/pb/decoder.c +++ b/upb/pb/decoder.c @@ -1,22 +1,17 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2008-2013 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * This file implements a VM for the interpreted (bytecode) decoder. - * - * Bytecode must previously have been generated using the bytecode compiler in - * compile_decoder.c. This decoder then walks through the bytecode op-by-op to - * parse the input. - * - * Decoding is fully resumable; we just keep a pointer to the current bytecode - * instruction and resume from there. A fair amount of the logic here is to - * handle the fact that values can span buffer seams and we have to be able to - * be capable of suspending/resuming from any byte in the stream. This - * sometimes requires keeping a few trailing bytes from the last buffer around - * in the "residual" buffer. - */ +** upb::Decoder (Bytecode Decoder VM) +** +** Bytecode must previously have been generated using the bytecode compiler in +** compile_decoder.c. This decoder then walks through the bytecode op-by-op to +** parse the input. +** +** Decoding is fully resumable; we just keep a pointer to the current bytecode +** instruction and resume from there. A fair amount of the logic here is to +** handle the fact that values can span buffer seams and we have to be able to +** be capable of suspending/resuming from any byte in the stream. This +** sometimes requires keeping a few trailing bytes from the last buffer around +** in the "residual" buffer. +*/ #include #include diff --git a/upb/pb/decoder.h b/upb/pb/decoder.h index 6a9e1d478d..f28e5e6ce9 100644 --- a/upb/pb/decoder.h +++ b/upb/pb/decoder.h @@ -1,19 +1,16 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009-2014 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * upb::pb::Decoder implements a high performance, streaming, resumable decoder - * for the binary protobuf format. - * - * This interface works the same regardless of what decoder backend is being - * used. A client of this class does not need to know whether decoding is using - * a JITted decoder (DynASM, LLVM, etc) or an interpreted decoder. By default, - * it will always use the fastest available decoder. However, you can call - * set_allow_jit(false) to disable any JIT decoder that might be available. - * This is primarily useful for testing purposes. - */ +** upb::pb::Decoder +** +** A high performance, streaming, resumable decoder for the binary protobuf +** format. +** +** This interface works the same regardless of what decoder backend is being +** used. A client of this class does not need to know whether decoding is using +** a JITted decoder (DynASM, LLVM, etc) or an interpreted decoder. By default, +** it will always use the fastest available decoder. However, you can call +** set_allow_jit(false) to disable any JIT decoder that might be available. +** This is primarily useful for testing purposes. +*/ #ifndef UPB_DECODER_H_ #define UPB_DECODER_H_ diff --git a/upb/pb/decoder.int.h b/upb/pb/decoder.int.h index ba18771456..2d4485a056 100644 --- a/upb/pb/decoder.int.h +++ b/upb/pb/decoder.int.h @@ -1,11 +1,6 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009-2014 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Internal-only definitions for the decoder. - */ +** Internal-only definitions for the decoder. +*/ #ifndef UPB_DECODER_INT_H_ #define UPB_DECODER_INT_H_ diff --git a/upb/pb/encoder.c b/upb/pb/encoder.c index e704bbdd4e..cf4df9e50b 100644 --- a/upb/pb/encoder.c +++ b/upb/pb/encoder.c @@ -1,61 +1,58 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2014 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Since we are implementing pure handlers (ie. without any out-of-band access - * to pre-computed lengths), we have to buffer all submessages before we can - * emit even their first byte. - * - * Not knowing the size of submessages also means we can't write a perfect - * zero-copy implementation, even with buffering. Lengths are stored as - * varints, which means that we don't know how many bytes to reserve for the - * length until we know what the length is. - * - * This leaves us with three main choices: - * - * 1. buffer all submessage data in a temporary buffer, then copy it exactly - * once into the output buffer. - * - * 2. attempt to buffer data directly into the output buffer, estimating how - * many bytes each length will take. When our guesses are wrong, use - * memmove() to grow or shrink the allotted space. - * - * 3. buffer directly into the output buffer, allocating a max length - * ahead-of-time for each submessage length. If we overallocated, we waste - * space, but no memcpy() or memmove() is required. This approach requires - * defining a maximum size for submessages and rejecting submessages that - * exceed that size. - * - * (2) and (3) have the potential to have better performance, but they are more - * complicated and subtle to implement: - * - * (3) requires making an arbitrary choice of the maximum message size; it - * wastes space when submessages are shorter than this and fails - * completely when they are longer. This makes it more finicky and - * requires configuration based on the input. It also makes it impossible - * to perfectly match the output of reference encoders that always use the - * optimal amount of space for each length. - * - * (2) requires guessing the the size upfront, and if multiple lengths are - * guessed wrong the minimum required number of memmove() operations may - * be complicated to compute correctly. Implemented properly, it may have - * a useful amortized or average cost, but more investigation is required - * to determine this and what the optimal algorithm is to achieve it. - * - * (1) makes you always pay for exactly one copy, but its implementation is - * the simplest and its performance is predictable. - * - * So for now, we implement (1) only. If we wish to optimize later, we should - * be able to do it without affecting users. - * - * The strategy is to buffer the segments of data that do *not* depend on - * unknown lengths in one buffer, and keep a separate buffer of segment pointers - * and lengths. When the top-level submessage ends, we can go beginning to end, - * alternating the writing of lengths with memcpy() of the rest of the data. - * At the top level though, no buffering is required. - */ +** upb::Encoder +** +** Since we are implementing pure handlers (ie. without any out-of-band access +** to pre-computed lengths), we have to buffer all submessages before we can +** emit even their first byte. +** +** Not knowing the size of submessages also means we can't write a perfect +** zero-copy implementation, even with buffering. Lengths are stored as +** varints, which means that we don't know how many bytes to reserve for the +** length until we know what the length is. +** +** This leaves us with three main choices: +** +** 1. buffer all submessage data in a temporary buffer, then copy it exactly +** once into the output buffer. +** +** 2. attempt to buffer data directly into the output buffer, estimating how +** many bytes each length will take. When our guesses are wrong, use +** memmove() to grow or shrink the allotted space. +** +** 3. buffer directly into the output buffer, allocating a max length +** ahead-of-time for each submessage length. If we overallocated, we waste +** space, but no memcpy() or memmove() is required. This approach requires +** defining a maximum size for submessages and rejecting submessages that +** exceed that size. +** +** (2) and (3) have the potential to have better performance, but they are more +** complicated and subtle to implement: +** +** (3) requires making an arbitrary choice of the maximum message size; it +** wastes space when submessages are shorter than this and fails +** completely when they are longer. This makes it more finicky and +** requires configuration based on the input. It also makes it impossible +** to perfectly match the output of reference encoders that always use the +** optimal amount of space for each length. +** +** (2) requires guessing the the size upfront, and if multiple lengths are +** guessed wrong the minimum required number of memmove() operations may +** be complicated to compute correctly. Implemented properly, it may have +** a useful amortized or average cost, but more investigation is required +** to determine this and what the optimal algorithm is to achieve it. +** +** (1) makes you always pay for exactly one copy, but its implementation is +** the simplest and its performance is predictable. +** +** So for now, we implement (1) only. If we wish to optimize later, we should +** be able to do it without affecting users. +** +** The strategy is to buffer the segments of data that do *not* depend on +** unknown lengths in one buffer, and keep a separate buffer of segment pointers +** and lengths. When the top-level submessage ends, we can go beginning to end, +** alternating the writing of lengths with memcpy() of the rest of the data. +** At the top level though, no buffering is required. +*/ #include "upb/pb/encoder.h" #include "upb/pb/varint.int.h" diff --git a/upb/pb/encoder.h b/upb/pb/encoder.h index cb5c79f04b..e8f7425bed 100644 --- a/upb/pb/encoder.h +++ b/upb/pb/encoder.h @@ -1,16 +1,13 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009-2010 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Implements a set of upb_handlers that write protobuf data to the binary wire - * format. - * - * This encoder implementation does not have any access to any out-of-band or - * precomputed lengths for submessages, so it must buffer submessages internally - * before it can emit the first byte. - */ +** upb::pb::Encoder (upb_pb_encoder) +** +** Implements a set of upb_handlers that write protobuf data to the binary wire +** format. +** +** This encoder implementation does not have any access to any out-of-band or +** precomputed lengths for submessages, so it must buffer submessages internally +** before it can emit the first byte. +*/ #ifndef UPB_ENCODER_H_ #define UPB_ENCODER_H_ diff --git a/upb/pb/glue.c b/upb/pb/glue.c index 76c8356f04..d6faeffe38 100644 --- a/upb/pb/glue.c +++ b/upb/pb/glue.c @@ -1,9 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2010-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #include "upb/pb/glue.h" diff --git a/upb/pb/glue.h b/upb/pb/glue.h index 50739682ee..f65753c208 100644 --- a/upb/pb/glue.h +++ b/upb/pb/glue.h @@ -1,27 +1,22 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * upb's core components like upb_decoder and upb_msg are carefully designed to - * avoid depending on each other for maximum orthogonality. In other words, - * you can use a upb_decoder to decode into *any* kind of structure; upb_msg is - * just one such structure. A upb_msg can be serialized/deserialized into any - * format, protobuf binary format is just one such format. - * - * However, for convenience we provide functions here for doing common - * operations like deserializing protobuf binary format into a upb_msg. The - * compromise is that this file drags in almost all of upb as a dependency, - * which could be undesirable if you're trying to use a trimmed-down build of - * upb. - * - * While these routines are convenient, they do not reuse any encoding/decoding - * state. For example, if a decoder is JIT-based, it will be re-JITted every - * time these functions are called. For this reason, if you are parsing lots - * of data and efficiency is an issue, these may not be the best functions to - * use (though they are useful for prototyping, before optimizing). - */ +** upb's core components like upb_decoder and upb_msg are carefully designed to +** avoid depending on each other for maximum orthogonality. In other words, +** you can use a upb_decoder to decode into *any* kind of structure; upb_msg is +** just one such structure. A upb_msg can be serialized/deserialized into any +** format, protobuf binary format is just one such format. +** +** However, for convenience we provide functions here for doing common +** operations like deserializing protobuf binary format into a upb_msg. The +** compromise is that this file drags in almost all of upb as a dependency, +** which could be undesirable if you're trying to use a trimmed-down build of +** upb. +** +** While these routines are convenient, they do not reuse any encoding/decoding +** state. For example, if a decoder is JIT-based, it will be re-JITted every +** time these functions are called. For this reason, if you are parsing lots +** of data and efficiency is an issue, these may not be the best functions to +** use (though they are useful for prototyping, before optimizing). +*/ #ifndef UPB_GLUE_H #define UPB_GLUE_H diff --git a/upb/pb/textprinter.c b/upb/pb/textprinter.c index 4932468a3d..3785d830be 100644 --- a/upb/pb/textprinter.c +++ b/upb/pb/textprinter.c @@ -1,8 +1,5 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009 Google Inc. See LICENSE for details. - * Author: Josh Haberman + * upb::pb::TextPrinter * * OPT: This is not optimized at all. It uses printf() which parses the format * string every time, and it allocates memory for every put. diff --git a/upb/pb/textprinter.h b/upb/pb/textprinter.h index 4b0050fb22..b6ad9c5770 100644 --- a/upb/pb/textprinter.h +++ b/upb/pb/textprinter.h @@ -1,9 +1,8 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ +** upb::pb::TextPrinter (upb_textprinter) +** +** Handlers for writing to protobuf text format. +*/ #ifndef UPB_TEXT_H_ #define UPB_TEXT_H_ diff --git a/upb/pb/varint.c b/upb/pb/varint.c index 04767eb691..25cdd817b6 100644 --- a/upb/pb/varint.c +++ b/upb/pb/varint.c @@ -1,9 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #include "upb/pb/varint.int.h" diff --git a/upb/pb/varint.int.h b/upb/pb/varint.int.h index a394a75d85..735bcbe21e 100644 --- a/upb/pb/varint.int.h +++ b/upb/pb/varint.int.h @@ -1,12 +1,7 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2011 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * A number of routines for varint manipulation (we keep them all around to - * have multiple approaches available for benchmarking). - */ +** A number of routines for varint manipulation (we keep them all around to +** have multiple approaches available for benchmarking). +*/ #ifndef UPB_VARINT_DECODER_H_ #define UPB_VARINT_DECODER_H_ diff --git a/upb/refcounted.c b/upb/refcounted.c index 85b378c3f6..c8162f0c95 100644 --- a/upb/refcounted.c +++ b/upb/refcounted.c @@ -1,22 +1,19 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Our key invariants are: - * 1. reference cycles never span groups - * 2. for ref2(to, from), we increment to's count iff group(from) != group(to) - * - * The previous two are how we avoid leaking cycles. Other important - * invariants are: - * 3. for mutable objects "from" and "to", if there exists a ref2(to, from) - * this implies group(from) == group(to). (In practice, what we implement - * is even stronger; "from" and "to" will share a group if there has *ever* - * been a ref2(to, from), but all that is necessary for correctness is the - * weaker one). - * 4. mutable and immutable objects are never in the same group. - */ +** upb::RefCounted Implementation +** +** Our key invariants are: +** 1. reference cycles never span groups +** 2. for ref2(to, from), we increment to's count iff group(from) != group(to) +** +** The previous two are how we avoid leaking cycles. Other important +** invariants are: +** 3. for mutable objects "from" and "to", if there exists a ref2(to, from) +** this implies group(from) == group(to). (In practice, what we implement +** is even stronger; "from" and "to" will share a group if there has *ever* +** been a ref2(to, from), but all that is necessary for correctness is the +** weaker one). +** 4. mutable and immutable objects are never in the same group. +*/ #include "upb/refcounted.h" diff --git a/upb/refcounted.h b/upb/refcounted.h index 40139060bf..aaa2f600ee 100644 --- a/upb/refcounted.h +++ b/upb/refcounted.h @@ -1,20 +1,17 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * A refcounting scheme that supports circular refs. It accomplishes this by - * partitioning the set of objects into groups such that no cycle spans groups; - * we can then reference-count the group as a whole and ignore refs within the - * group. When objects are mutable, these groups are computed very - * conservatively; we group any objects that have ever had a link between them. - * When objects are frozen, we compute strongly-connected components which - * allows us to be precise and only group objects that are actually cyclic. - * - * This is a mixed C/C++ interface that offers a full API to both languages. - * See the top-level README for more information. - */ +** upb::RefCounted (upb_refcounted) +** +** A refcounting scheme that supports circular refs. It accomplishes this by +** partitioning the set of objects into groups such that no cycle spans groups; +** we can then reference-count the group as a whole and ignore refs within the +** group. When objects are mutable, these groups are computed very +** conservatively; we group any objects that have ever had a link between them. +** When objects are frozen, we compute strongly-connected components which +** allows us to be precise and only group objects that are actually cyclic. +** +** This is a mixed C/C++ interface that offers a full API to both languages. +** See the top-level README for more information. +*/ #ifndef UPB_REFCOUNTED_H_ #define UPB_REFCOUNTED_H_ diff --git a/upb/shim/shim.c b/upb/shim/shim.c index 2f7f215f45..42bdb10cc6 100644 --- a/upb/shim/shim.c +++ b/upb/shim/shim.c @@ -1,9 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2013 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #include "upb/shim/shim.h" diff --git a/upb/shim/shim.h b/upb/shim/shim.h index 0ccd6fb293..935f085ce5 100644 --- a/upb/shim/shim.h +++ b/upb/shim/shim.h @@ -1,19 +1,14 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2013 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * For handlers that do very tiny, very simple operations, the function call - * overhead of calling a handler can be significant. This file allows the - * user to define handlers that do something very simple like store the value - * to memory and/or set a hasbit. JIT compilers can then special-case these - * handlers and emit specialized code for them instead of actually calling the - * handler. - * - * The functionality is very simple/limited right now but may expand to be able - * to call another function. - */ +** For handlers that do very tiny, very simple operations, the function call +** overhead of calling a handler can be significant. This file allows the +** user to define handlers that do something very simple like store the value +** to memory and/or set a hasbit. JIT compilers can then special-case these +** handlers and emit specialized code for them instead of actually calling the +** handler. +** +** The functionality is very simple/limited right now but may expand to be able +** to call another function. +*/ #ifndef UPB_SHIM_H #define UPB_SHIM_H diff --git a/upb/sink.h b/upb/sink.h index f7d2611163..e7d4960480 100644 --- a/upb/sink.h +++ b/upb/sink.h @@ -1,21 +1,19 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2010-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * A upb_sink is an object that binds a upb_handlers object to some runtime - * state. It is the object that can actually receive data via the upb_handlers - * interface. - * - * Unlike upb_def and upb_handlers, upb_sink is never frozen, immutable, or - * thread-safe. You can create as many of them as you want, but each one may - * only be used in a single thread at a time. - * - * If we compare with class-based OOP, a you can think of a upb_def as an - * abstract base class, a upb_handlers as a concrete derived class, and a - * upb_sink as an object (class instance). - */ +** upb::Sink (upb_sink) +** upb::BytesSink (upb_bytessink) +** +** A upb_sink is an object that binds a upb_handlers object to some runtime +** state. It is the object that can actually receive data via the upb_handlers +** interface. +** +** Unlike upb_def and upb_handlers, upb_sink is never frozen, immutable, or +** thread-safe. You can create as many of them as you want, but each one may +** only be used in a single thread at a time. +** +** If we compare with class-based OOP, a you can think of a upb_def as an +** abstract base class, a upb_handlers as a concrete derived class, and a +** upb_sink as an object (class instance). +*/ #ifndef UPB_SINK_H #define UPB_SINK_H diff --git a/upb/structdefs.int.h b/upb/structdefs.int.h index b3dcfa02a9..e650c326af 100644 --- a/upb/structdefs.int.h +++ b/upb/structdefs.int.h @@ -1,23 +1,18 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2015 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * This file contains definitions of structs that should be considered private - * and NOT stable across versions of upb. - * - * The only reason they are declared here and not in .c files is to allow upb - * and the application (if desired) to embed statically-initialized instances - * of structures like defs. - * - * If you include this file, all guarantees of ABI compatibility go out the - * window! Any code that includes this file needs to recompile against the - * exact same version of upb that they are linking against. - * - * You also need to recompile if you change the value of the UPB_DEBUG_REFS - * flag. - */ +** This file contains definitions of structs that should be considered private +** and NOT stable across versions of upb. +** +** The only reason they are declared here and not in .c files is to allow upb +** and the application (if desired) to embed statically-initialized instances +** of structures like defs. +** +** If you include this file, all guarantees of ABI compatibility go out the +** window! Any code that includes this file needs to recompile against the +** exact same version of upb that they are linking against. +** +** You also need to recompile if you change the value of the UPB_DEBUG_REFS +** flag. +*/ #include "upb/def.h" diff --git a/upb/symtab.c b/upb/symtab.c index 0ce3e18355..de936e44e8 100644 --- a/upb/symtab.c +++ b/upb/symtab.c @@ -1,9 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2008-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #include "upb/structdefs.int.h" #include "upb/symtab.h" diff --git a/upb/symtab.h b/upb/symtab.h index f9a0a95f72..ffe9f73e52 100644 --- a/upb/symtab.h +++ b/upb/symtab.h @@ -1,17 +1,14 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * A symtab (symbol table) stores a name->def map of upb_defs. Clients could - * always create such tables themselves, but upb_symtab has logic for resolving - * symbolic references, and in particular, for keeping a whole set of consistent - * defs when replacing some subset of those defs. This logic is nontrivial. - * - * This is a mixed C/C++ interface that offers a full API to both languages. - * See the top-level README for more information. - */ +** upb::SymbolTable (upb_symtab) +** +** A symtab (symbol table) stores a name->def map of upb_defs. Clients could +** always create such tables themselves, but upb_symtab has logic for resolving +** symbolic references, and in particular, for keeping a whole set of consistent +** defs when replacing some subset of those defs. This logic is nontrivial. +** +** This is a mixed C/C++ interface that offers a full API to both languages. +** See the top-level README for more information. +*/ #ifndef UPB_SYMTAB_H_ #define UPB_SYMTAB_H_ diff --git a/upb/table.c b/upb/table.c index 943290e0c6..790a20b7de 100644 --- a/upb/table.c +++ b/upb/table.c @@ -1,11 +1,8 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * Implementation is heavily inspired by Lua's ltable.c. - */ +** upb_table Implementation +** +** Implementation is heavily inspired by Lua's ltable.c. +*/ #include "upb/table.int.h" diff --git a/upb/table.int.h b/upb/table.int.h index 28e2cffd3f..4874e3c14e 100644 --- a/upb/table.int.h +++ b/upb/table.int.h @@ -1,24 +1,21 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * This header is INTERNAL-ONLY! Its interfaces are not public or stable! - * This file defines very fast int->upb_value (inttable) and string->upb_value - * (strtable) hash tables. - * - * The table uses chained scatter with Brent's variation (inspired by the Lua - * implementation of hash tables). The hash function for strings is Austin - * Appleby's "MurmurHash." - * - * The inttable uses uintptr_t as its key, which guarantees it can be used to - * store pointers or integers of at least 32 bits (upb isn't really useful on - * systems where sizeof(void*) < 4). - * - * The table must be homogenous (all values of the same type). In debug - * mode, we check this on insert and lookup. - */ +** upb_table +** +** This header is INTERNAL-ONLY! Its interfaces are not public or stable! +** This file defines very fast int->upb_value (inttable) and string->upb_value +** (strtable) hash tables. +** +** The table uses chained scatter with Brent's variation (inspired by the Lua +** implementation of hash tables). The hash function for strings is Austin +** Appleby's "MurmurHash." +** +** The inttable uses uintptr_t as its key, which guarantees it can be used to +** store pointers or integers of at least 32 bits (upb isn't really useful on +** systems where sizeof(void*) < 4). +** +** The table must be homogenous (all values of the same type). In debug +** mode, we check this on insert and lookup. +*/ #ifndef UPB_TABLE_H_ #define UPB_TABLE_H_ diff --git a/upb/upb.c b/upb/upb.c index cee7f56a4a..9e44cf8b92 100644 --- a/upb/upb.c +++ b/upb/upb.c @@ -1,9 +1,3 @@ -/* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009-2012 Google Inc. See LICENSE for details. - * Author: Josh Haberman - */ #include #include diff --git a/upb/upb.h b/upb/upb.h index 294b2fad75..01d8646e84 100644 --- a/upb/upb.h +++ b/upb/upb.h @@ -1,14 +1,9 @@ /* - * upb - a minimalist implementation of protocol buffers. - * - * Copyright (c) 2009 Google Inc. See LICENSE for details. - * Author: Josh Haberman - * - * This file contains shared definitions that are widely used across upb. - * - * This is a mixed C/C++ interface that offers a full API to both languages. - * See the top-level README for more information. - */ +** This file contains shared definitions that are widely used across upb. +** +** This is a mixed C/C++ interface that offers a full API to both languages. +** See the top-level README for more information. +*/ #ifndef UPB_H_ #define UPB_H_