)]}'
{
  "commit": "63d7bee5e35fcc67c4598be5e863f5f38ec06a43",
  "tree": "c7755b80a52bbe06a8f3ce2db6d4fbc3c51b5402",
  "parents": [
    "96770dda92f7ae778dff7e06c071c18231edd71a"
  ],
  "author": {
    "name": "Corentin Wallez",
    "email": "cwallez@chromium.org",
    "time": "Wed Jul 24 11:07:00 2024 +0000"
  },
  "committer": {
    "name": "Dawn LUCI CQ",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Jul 24 11:07:00 2024 +0000"
  },
  "message": "[Kotlin]: Add a KotlinRecord concept, factor struct conversion with it\n\nIn the Dawn code generators, both structures and methods are considered\n\"records\" that have a bunch of named parameter/members with types. The\nconversion of structures and method records from Kotlin to C++ are very\nsimilar. To merge them both, a KotlinRecord concept is added that is a\nC++ structure for a the JNI objects representing the values of the\nKotlin records.\n\nA macro is added that creates the KotlinRecord structure for a record\n(either a structure, or a method).\n\nA macro is added that creates a conversion function from a KotlinRecord\nto a structure.\n\nThese two macros are used to factor out all of the common logic out of\nstructures.cpp. The logic in methods.cpp will be factored out in a\nfollow-up CL.\n\nA few new primitive types are added to dawn_kotlin.json.\n\nHelper CallGetter functions are added in structures.cpp to call the\ncorrect JNIEnv::Call*Method depending on what return type we expect.\n\nA couple hacks for handling the jlong ANativeWindow are added. We should\nremove them with a manually written method.\n\nBug: 352711433\nChange-Id: Iaa89c9e7e85f724aa3fd98136acbad176f68e522\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/198236\nReviewed-by: Sonakshi Saxena \u003cnexa@google.com\u003e\nReviewed-by: Jim Blackler \u003cjimblackler@google.com\u003e\nCommit-Queue: Corentin Wallez \u003ccwallez@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "856bef99079cd86da90ff23d1b8d5ed0cd7f77a7",
      "old_mode": 33188,
      "old_path": "generator/dawn_json_generator.py",
      "new_id": "4a1d466b69744a6e509e95e80715328a7a9f5bcf",
      "new_mode": 33188,
      "new_path": "generator/dawn_json_generator.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e118ce65c61ea306341c6d0cd3629e621d6fefa6",
      "new_mode": 33188,
      "new_path": "generator/templates/art/kotlin_record_conversion.cpp"
    },
    {
      "type": "modify",
      "old_id": "e2b565a319e927f1e304e9cb1ad56350e0e4aea6",
      "old_mode": 33188,
      "old_path": "generator/templates/art/structures.cpp",
      "new_id": "f40f7d669adcc390e65ed09a898ff93b2c0f9d57",
      "new_mode": 33188,
      "new_path": "generator/templates/art/structures.cpp"
    },
    {
      "type": "modify",
      "old_id": "3db8ed3eb40459465ad207854f196f1bbca35567",
      "old_mode": 33188,
      "old_path": "src/dawn/dawn_kotlin.json",
      "new_id": "086045251348a378e3152471c85eae0a71c8adc8",
      "new_mode": 33188,
      "new_path": "src/dawn/dawn_kotlin.json"
    }
  ]
}
