{"id":13420128,"url":"https://github.com/jll63/yomm11","last_synced_at":"2025-05-15T13:32:21.596Z","repository":{"id":9692824,"uuid":"11640666","full_name":"jll63/yomm11","owner":"jll63","description":"Open multi-methods for C++11","archived":false,"fork":false,"pushed_at":"2018-01-15T20:01:41.000Z","size":586,"stargazers_count":117,"open_issues_count":0,"forks_count":17,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-07-31T22:53:23.254Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.yorel.be/mm/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jll63.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-07-24T17:20:19.000Z","updated_at":"2024-05-29T16:00:11.000Z","dependencies_parsed_at":"2022-08-25T23:21:11.748Z","dependency_job_id":null,"html_url":"https://github.com/jll63/yomm11","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jll63%2Fyomm11","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jll63%2Fyomm11/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jll63%2Fyomm11/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jll63%2Fyomm11/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jll63","download_url":"https://codeload.github.com/jll63/yomm11/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254349497,"owners_count":22056359,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T22:01:27.006Z","updated_at":"2025-05-15T13:32:17.080Z","avatar_url":"https://github.com/jll63.png","language":"C++","funding_links":[],"categories":["TODO scan for Android support in followings","Frameworks","框架"],"sub_categories":[],"readme":"# YOMM11 IS DEPRECATED\n\nThank you for the stars and the feedback!\n\nIn 2017 I learned the D language, and I\nimplemented\n[an open method library for D](https://github.com/jll63/openmethods.d).  In the\nprocess I had a few fresh ideas, some of which are applicable to C++. Also, my\ncolleague David Goffredo educated me on the power of modern preprocessor\nmacros.\n\nConsequently, I set out to re-implement Yomm11 from scratch. The result\nis [Yomm2](https://github.com/jll63/yomm2), which I feel is a much better\nlibrary. Read about the\nimprovements\n[here](https://github.com/jll63/yomm2/blob/master/yomm11-yomm2.md).\n\nI will no longer actively develop Yomm11 but I will consider PRs. I strongly\nrecommend switching to Yomm2 though.\n\n## Old content:\n\nThis library implements open multi-methods for C++11.\n\nSalient features are:\n\n* syntax: is relatively uncluttered. There are no limitations on the\n  number of virtual arguments. Virtual and non-virtual arguments can\n  be arbitrarily mixed. Virtual and multiple inheritance are\n  supported.\n\n* speed: close to a virtual function call when the hierarchies\n  involved in the virtual arguments collaborate with the\n  library. Calling a method that does nothing, with a single virtual\n  argument in a single inheritance hierarchy is 33% slower than the\n  equivalent virtual function call. The difference becomes\n  unnoticeable if the functions perform a few simple maths\n  operations. See tests/benchmarks.cpp.\n\n* size: dispatch tables are constructed in terms of class groups. This\n  results in a tables devoid of redundancies.\n\n* support for \"foreign\" class hierarchies: the library can be used\n  without modifications to existing classes, at the cost of lower\n  performance. Collaborating and foreign arguments can be freely\n  mixed. Performance is still quite good, see the benchmarks.\n\n* next: a pointer to the next most specialized method is available\n  inside method specializations - see examples/next.cpp.\n  Alternatively, it is possible to call a specialization directly.\n\nDocumentation: http://www.yorel.be/mm/ - see also the articles on Code\nProject http://tinyurl.com/m8kg2y3\n\nSupport and discussions: yomm11 on Google Groups\n(https://groups.google.com/forum/#!forum/yomm11)\n\nAuthor: Jean-Louis Leroy - jl@yorel.be\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjll63%2Fyomm11","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjll63%2Fyomm11","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjll63%2Fyomm11/lists"}