)]}'
{
  "commit": "a31bdae5a76ecc060c1eb8a66be1896072c1e8b2",
  "tree": "f09410fa5d0fbdb196e461be8662c57ec4e9ff6f",
  "parents": [
    "bc2256c4ae86308a1521c89456b599d441119418"
  ],
  "author": {
    "name": "Daniel P. Berrange",
    "email": "berrange@redhat.com",
    "time": "Wed May 13 17:14:06 2015 +0100"
  },
  "committer": {
    "name": "Andreas Färber",
    "email": "afaerber@suse.de",
    "time": "Fri Jun 19 18:42:18 2015 +0200"
  },
  "message": "qom: Add object_new_with_props() / object_new_withpropv() helpers\n\nIt is reasonably common to want to create an object, set a\nnumber of properties, register it in the hierarchy and then\nmark it as complete (if a user creatable type). This requires\nquite a lot of error prone, verbose, boilerplate code to achieve.\n\nFirst a pair of functions object_set_props() / object_set_propv()\nare added which allow for a list of objects to be set in\none single API call.\n\nThen object_new_with_props() / object_new_with_propv() constructors\nare added which simplify the sequence of calls to create an\nobject, populate properties, register in the object composition\ntree and mark the object complete, into a single method call.\n\nUsage would be:\n\n   Error *err \u003d NULL;\n   Object *obj;\n   obj \u003d object_new_with_propv(TYPE_MEMORY_BACKEND_FILE,\n                               object_get_objects_root(),\n                               \"hostmem0\",\n                               \u0026err,\n                               \"share\", \"yes\",\n                               \"mem-path\", \"/dev/shm/somefile\",\n                               \"prealloc\", \"yes\",\n                               \"size\", \"1048576\",\n                               NULL);\n\nNote all property values are passed in string form and will\nbe parsed into their required data types, using normal QOM\nsemantics for parsing from string format.\n\nSigned-off-by: Daniel P. Berrange \u003cberrange@redhat.com\u003e\nReviewed-by: Eric Blake \u003ceblake@redhat.com\u003e\nSigned-off-by: Andreas Färber \u003cafaerber@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ac7c4c441e4d7815b82c62325542032c98e677e4",
      "old_mode": 33188,
      "old_path": "include/qemu/compiler.h",
      "new_id": "df9dd514f103ff650c912082c9b6c69d6f39740d",
      "new_mode": 33188,
      "new_path": "include/qemu/compiler.h"
    },
    {
      "type": "modify",
      "old_id": "b03ede032da6b16abf572dcfa398c74dd4547dc0",
      "old_mode": 33188,
      "old_path": "include/qom/object.h",
      "new_id": "018e27eb0c4dc3800f825fbdb3562ebd9917857a",
      "new_mode": 33188,
      "new_path": "include/qom/object.h"
    },
    {
      "type": "modify",
      "old_id": "69b7077c2b44c7fa4aa7354811d0fcbfd5be6eba",
      "old_mode": 33188,
      "old_path": "qom/object.c",
      "new_id": "dd82287a57cf49368d392da7e632c62d25f10a50",
      "new_mode": 33188,
      "new_path": "qom/object.c"
    },
    {
      "type": "modify",
      "old_id": "0dcb61829c1f18164a4a0db0d2114e47d175e4e1",
      "old_mode": 33188,
      "old_path": "tests/.gitignore",
      "new_id": "dc813c2713b1e2bf1a7c504c7e2948659d880b6e",
      "new_mode": 33188,
      "new_path": "tests/.gitignore"
    },
    {
      "type": "modify",
      "old_id": "4de40deb2f2c04efd574dd7a20b3fea04458bd45",
      "old_mode": 33188,
      "old_path": "tests/Makefile",
      "new_id": "af22fd9bfb98517926610b49ad40730dc399ce68",
      "new_mode": 33188,
      "new_path": "tests/Makefile"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e82532e1f253417e712052e7c0ef7e518a9c4bcc",
      "new_mode": 33188,
      "new_path": "tests/check-qom-proplist.c"
    }
  ]
}
