)]}'
{
  "commit": "b6513a137b381e535d3a34a367c598e2692b67f0",
  "tree": "2f7b432b3de973067ced97847e4bc25d9fa80038",
  "parents": [
    "96c84d368634020a23adfa89241235d609fba56d"
  ],
  "author": {
    "name": "Alex Vakulenko",
    "email": "avakulenko@chromium.org",
    "time": "Mon May 05 17:23:40 2014 -0700"
  },
  "committer": {
    "name": "chrome-internal-fetch",
    "email": "chrome-internal-fetch@google.com",
    "time": "Mon Jun 09 22:20:59 2014 +0000"
  },
  "message": "buffet: add C++ variant type (Any).\n\nAny is the class that adds support for native variant types.\n\nAny can store any C++ type which is copyable. Moveable-only\ntypes (such as std::unique_ptr) cannot be stored directly,\nhowever you can store pointers (or references) to such types.\n\nAny stores small data embedded into the class itself without\nhaving to allocate a separate storage for it. Larger data\n(roughly, larger than 8 bytes) or non trivially-copyable types\nare stored in a separate memory block and the pointer to that\nblock is stored in the Any class itself.\n\nAny supports move semantics. You can move the stored value\nfrom one Any into another without copying it.\n\nAt this point, there is no support for comparing the Any class\n(equal or less than), so you cannot use it as a key in a map,\nhowever you still can store it as a value.\n\nThe code that extracts the data from Any must know the exact\ntype stored. Calling Any::Get\u003cT\u003e() for incompatible type is\nnot supported. However you can use Any::TryGet\u003cT\u003e() instead\nand provide a default value, which will be returned if Any\ndoes not contain the expected data.\n\nYou can also inspect the type of the contained data by\nusing Any::GetType() and Any::IsTypeCompatible\u003cT\u003e() methods.\n\nBUG\u003dchromium:366709\nTEST\u003dAll existing and new unit tests pass.\n\nChange-Id: Ic47529935ddd39c792dff1db8667c76db91b16d4\nReviewed-on: https://chromium-review.googlesource.com/198590\nReviewed-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nCommit-Queue: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\nTested-by: Alex Vakulenko \u003cavakulenko@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9ce0ce27248a135c333b06a55fa0d4509f627d7f",
      "new_mode": 33188,
      "new_path": "buffet/any.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5ab249cd13b0f281d41c07914ed0f0f5247724cd",
      "new_mode": 33188,
      "new_path": "buffet/any.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cbf0bb88aa602cff138cdd1f4baddd6c75b0eae8",
      "new_mode": 33188,
      "new_path": "buffet/any_internal_impl.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fbc56fcf8035ee4fd2c1f3ae33a0ddd8343785c7",
      "new_mode": 33188,
      "new_path": "buffet/any_internal_impl_unittest.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "48df826d548570d56d892531dd9c0cfa67d7aa7e",
      "new_mode": 33188,
      "new_path": "buffet/any_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "7e5c71a93b0ec79507522c07769c3edb444f7b5b",
      "old_mode": 33188,
      "old_path": "buffet/buffet.gyp",
      "new_id": "f997532b701cd2fa0cf2108853da826b11d1f9a3",
      "new_mode": 33188,
      "new_path": "buffet/buffet.gyp"
    }
  ]
}
