)]}'
{
  "commit": "80c6ee51d4ea0a8eb67e2b0a330f30bd3a4eb03e",
  "tree": "12036046cca9ceb239ab4e6e9ec26a896ab3dd80",
  "parents": [
    "b8b01e3a5e21af7dbef199b0faecefa29671acc9"
  ],
  "author": {
    "name": "Wyatt Hepler",
    "email": "hepler@google.com",
    "time": "Fri Jan 03 09:54:58 2020 -0800"
  },
  "committer": {
    "name": "Wyatt Hepler",
    "email": "hepler@google.com",
    "time": "Thu Jan 09 14:26:14 2020 -0800"
  },
  "message": "pw_tokenizer: Replace string literals with tokens\n\npw_tokenizer provides macros that replace printf-style string literals\nwith 32-bit hashes at compile time. The string literals are removed\nfrom the resulting binary, which dramatically reduces the binary size.\nLike any printf-style string, binary versions of the strings can be\nformatted with arguments and then transmitted or stored.\n\nThe pw_tokenizer module is general purpose, but its most common use case\nis binary logging. In binary logging, human-readable text logs are\nreplaced with binary tokens. These are decoded off-device.\n\nThis commit includes the C and C++ code for tokenizing strings. It also\nincludes a C++ library for decoding tokenized strings.\n\nChange-Id: I6d5737ab2d6dfdd76dcf70c852b547fdcd68d683\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c30696b8240346817cebf62b79ac4f7345b36ca9",
      "old_mode": 33188,
      "old_path": "BUILD.gn",
      "new_id": "b7acdeab3166f6d2bea2d84f6726752e3cbd0400",
      "new_mode": 33188,
      "new_path": "BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "d4c37671762abab174c776e45b25ce8285cea948",
      "old_mode": 33188,
      "old_path": "docs/BUILD.gn",
      "new_id": "050b3266e842405589eccacb12ba0aba1d9a1a20",
      "new_mode": 33188,
      "new_path": "docs/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "59faf736232300f7d1457213f9035e00b0164313",
      "old_mode": 33188,
      "old_path": "modules.gni",
      "new_id": "fbbee69afbc33b4daa29a0d5a2f8b9b18ed332e7",
      "new_mode": 33188,
      "new_path": "modules.gni"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "59883fc336f60442515bfc1edaea7a5a5dd3bbe2",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5567a7ac3f5ee68002164a109ddf7df5987689b4",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "08ec027cedefb6c16eba471f4362024ec99d60d3",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/argument_types_test.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a4d26766e93e17216e4a3bfb9ccbbd232d78908a",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/argument_types_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "22ce61a5bfe966b14d9e8ad1c72101a4b0197325",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/decode.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d379060fdae6c409501af04e1e14b85847c1c719",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/decode_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ef462694e3436191c29e9cd4364815ab5c53b1a1",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/detokenize.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "688cf7a5cedec9b87837c0514e6c4fa6dac802b5",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/detokenize_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "71abfeb27960f35e39358ffba6903297ad447cf9",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/docs.rst"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bc9c5958c01bd5c3e25eda3ee898c6644175411a",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/generate_decoding_test_data.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8392437dbbbe6f62ee547486a67e25762f244cf8",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/hash_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "01a21e1df69917e13b4276cc999c574bbf80498f",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/java/dev/pigweed/tokenizer/Detokenizer.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b2c8f33290f70f6dd10265ee68da93715f296c00",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/java/dev/pigweed/tokenizer/detokenizer.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d9798d02476268e81c5e503199101cfc6e1b76b9",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/config.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "745024987007d50956acb1d87233d84f314a9df9",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/detokenize.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4ceea40262e5afe86ccdee092c3942ab5ba59daa",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/internal/argument_types.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dbb49fd03d8bfdb5c58366832aa963dc7ef64380",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/internal/argument_types_macro_4_byte.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1a83256aee31133e029219700b229103680db19d",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/internal/argument_types_macro_8_byte.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8cdf690816a19f44db1877b0314c22dd00173c63",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/internal/decode.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1c4eb820c1490e20bd19f9194b1f0790b05a8dd6",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_128_hash_macro.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "857c61f9cec014336671e452a36c0685cfb4f980",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_80_hash_macro.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "799044cd5f1a629af17ec87ae2f99ab4c424df91",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/internal/pw_tokenizer_65599_fixed_length_96_hash_macro.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "40e51506d05643f384fb2866dccb597ec51f6d3d",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/internal/tokenize_string.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bd4a140af64c3277beb08e426aad91cb208d0177",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/pw_tokenizer_65599_fixed_length_hash.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ae1ebafc54b41d953968ca2fa39a1f8ad6ec318f",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/token_database.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e793d16be1b3beef161899c2eb3c04663e9a01e3",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/public/pw_tokenizer/tokenize.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "52ac6c9566a89101c3358dde53874ea56ac998cd",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/pw_tokenizer_private/argument_types_test.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d7667fb4f937c6534b15fea22fe7534e9a80ac80",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/pw_tokenizer_private/generated_hash_test_cases.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7ed6f159bfb847b71d062733af3820aba8d3a405",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/pw_tokenizer_private/tokenize_test.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "03d2021b3d0928bff876ad0a239455a711323328",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/pw_tokenizer_private/tokenized_string_decoding_test_data.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8835f0cb3b20e5154db192e7ff2331438ae10c4c",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/pw_tokenizer_private/varint_decoding_test_data.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "42c145b67674b01dec68c7e0bf931fb259b41d1d",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/token_database.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0dccfb6a41025be95394a05086cdd0a1221102ff",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/token_database_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "18bf88d1baf4349a019544930f4b3b3632d63521",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/tokenize.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1574451d3b614f8ccf0059ec9e7252e2e52ad02b",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/tokenize_test.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "73ffaabbb552d184f6b2da99395a5bbd429368c8",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/tokenize_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "db084814e3c10362d4b1a177749e89cdab968ef6",
      "new_mode": 33188,
      "new_path": "pw_tokenizer/tokenizer_linker_sections.ld"
    }
  ]
}
