)]}'
{
  "commit": "7ea800e6b55efd5294f5b4f59bf3fa6b94397ffb",
  "tree": "3ee0d29395782e6752ff0cf017aa521c8b9b5b04",
  "parents": [
    "adb807fa90db363b224521afa750d3787e623431"
  ],
  "author": {
    "name": "Louis Moureaux",
    "email": "m_louis30@yahoo.com",
    "time": "Sun Dec 29 15:21:58 2024 +0100"
  },
  "committer": {
    "name": "Louis Moureaux",
    "email": "m_louis30@yahoo.com",
    "time": "Sun Dec 29 15:30:32 2024 +0100"
  },
  "message": "Support multiple documentation items with the same name\n\nThe architecture of doxylink was based on a name:item dict, which\ndoesn\u0027t support storing multiple items with the same name. This lead to\nseveral workarounds:\n* To support overloaded functions, function items were turned to\n  name:FunctionList;\n* To prevent friend declarations from conflicting with classes, friends\n  were skipped.\n\nIssues remained nevertheless: C++ allows declaring a class, a function,\nand a variable with the same name:\n\n    int a;\n    void a();\n    class a;\n\nIn addition, a common pattern with Qt is to declare properties with the\nsame name as the getter (Qt itself does this all the time):\n\n    class Foo: public QObject\n    {\n        Q_OBJECT\n\tQ_PROPERTY(int bar READ bar)\n    public:\n        int bar() const;\n    };\n\nIn all the above examples, doxylink was just crashing when parsing the\nDoxygen index.\n\nInstead of adding new exceptions, this commit changes the architecture\nto allow multiple symbols with the same name. Duplicate names may still\nraise an error, but only when one tries to refer to such an entry. This\nmeans that all other symbols in the project can now be used instead of\nfailing during initialisation.\n\nWith this PR, it should be possible to create a domain in the future,\nsupporting much of the same syntax as the built-in [cpp\ndomain](https://www.sphinx-doc.org/en/master/usage/domains/cpp.html#cross-referencing)\n\nSupersedes #31.\nCloses #54.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3591102cfcda619d7acc342bfb2eb4ffe81c094c",
      "old_mode": 33188,
      "old_path": "examples/my_lib.h",
      "new_id": "89c774dbdc82aa7c5d9d8d02a3baf3d582b18923",
      "new_mode": 33188,
      "new_path": "examples/my_lib.h"
    },
    {
      "type": "modify",
      "old_id": "a9ca04be2e292e3f2d3cd2b38f81efdd8ee7328f",
      "old_mode": 33188,
      "old_path": "sphinxcontrib/doxylink/doxylink.py",
      "new_id": "2444d2220a831514a64e83364da89f2dc367587b",
      "new_mode": 33188,
      "new_path": "sphinxcontrib/doxylink/doxylink.py"
    },
    {
      "type": "modify",
      "old_id": "cf21a9d3733c11ba0eacb9a4cddadb52b3c5034f",
      "old_mode": 33188,
      "old_path": "tests/test_doxylink.py",
      "new_id": "a0a79c7023cd8fd09817fa8b8e47cc4c572e108d",
      "new_mode": 33188,
      "new_path": "tests/test_doxylink.py"
    }
  ]
}
