{"action":"created","issue":{"url":"https://api.github.com/repos/H-uru/libhsplasma/issues/85","repository_url":"https://api.github.com/repos/H-uru/libhsplasma","labels_url":"https://api.github.com/repos/H-uru/libhsplasma/issues/85/labels{/name}","comments_url":"https://api.github.com/repos/H-uru/libhsplasma/issues/85/comments","events_url":"https://api.github.com/repos/H-uru/libhsplasma/issues/85/events","html_url":"https://github.com/H-uru/libhsplasma/pull/85","id":199333222,"number":85,"title":"Python refactor 2","user":{"login":"zrax","id":714191,"avatar_url":"https://avatars.githubusercontent.com/u/714191?v=3","gravatar_id":"","url":"https://api.github.com/users/zrax","html_url":"https://github.com/zrax","followers_url":"https://api.github.com/users/zrax/followers","following_url":"https://api.github.com/users/zrax/following{/other_user}","gists_url":"https://api.github.com/users/zrax/gists{/gist_id}","starred_url":"https://api.github.com/users/zrax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zrax/subscriptions","organizations_url":"https://api.github.com/users/zrax/orgs","repos_url":"https://api.github.com/users/zrax/repos","events_url":"https://api.github.com/users/zrax/events{/privacy}","received_events_url":"https://api.github.com/users/zrax/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-01-07T02:06:03Z","updated_at":"2017-01-07T03:51:48Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/H-uru/libhsplasma/pulls/85","html_url":"https://github.com/H-uru/libhsplasma/pull/85","diff_url":"https://github.com/H-uru/libhsplasma/pull/85.diff","patch_url":"https://github.com/H-uru/libhsplasma/pull/85.patch"},"body":"This refactor shouldn't have too many behavior changes, but significantly reduces the boilerplate and complexity for adding new bindings.\r\n* Use macros for declaring trivial property get/set methods\r\n* Use macros for declaring (and in some cases defining) common methods, including the signature cast.\r\n  * This means the function declarations are now type-matched and don't need to be manually cast in the type tables.\r\n* Use macros for method declarations, which forces consistency with the method flags and method declaration, and also places the documentation strings adjacent to the method itself.\r\n* Use a macro for adding constants to a class declaration\r\n* **DROP TABLES** -- that is, replace the large tables full of mostly nulls with (mostly) empty macro-initialized tables, and initialize the fields in the init function instead.\r\n  * Side note: This means it's no longer unreasonable to place multiple class bindings for trivial classes in the same source file.\r\n\r\nThis set does NOT move all the get/set properties to using the new macros yet.  I used those as sentinels for properties that I needed to revisit, which will come in python_refactor_3 (the part with potentially breaking changes).  Most notably, most properties which deal with lists/tuples are left out of this PR."},"comment":{"url":"https://api.github.com/repos/H-uru/libhsplasma/issues/comments/271060581","html_url":"https://github.com/H-uru/libhsplasma/pull/85#issuecomment-271060581","issue_url":"https://api.github.com/repos/H-uru/libhsplasma/issues/85","id":271060581,"user":{"login":"Hoikas","id":714455,"avatar_url":"https://avatars.githubusercontent.com/u/714455?v=3","gravatar_id":"","url":"https://api.github.com/users/Hoikas","html_url":"https://github.com/Hoikas","followers_url":"https://api.github.com/users/Hoikas/followers","following_url":"https://api.github.com/users/Hoikas/following{/other_user}","gists_url":"https://api.github.com/users/Hoikas/gists{/gist_id}","starred_url":"https://api.github.com/users/Hoikas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Hoikas/subscriptions","organizations_url":"https://api.github.com/users/Hoikas/orgs","repos_url":"https://api.github.com/users/Hoikas/repos","events_url":"https://api.github.com/users/Hoikas/events{/privacy}","received_events_url":"https://api.github.com/users/Hoikas/received_events","type":"User","site_admin":false},"created_at":"2017-01-07T03:51:48Z","updated_at":"2017-01-07T03:51:48Z","body":"Compilation errors on MSVC++2015:\r\n```\r\nError\tC2910\t'pyPlasma_get' : cannot be explicitly specialized\tPyHSPlasma\td:\\plasma\\libhsplasma\\python\\PRP\\Audio\\pySoundBuffer.h\t35\t\r\nError\tC2989\t'plWAVHeader' : class template has already been declared as a non-class template\tPyHSPlasma\td:\\plasma\\libhsplasma\\python\\prp\\audio\\pySoundBuffer.h\t36\t\r\nError\tC2910\t'pyPlasma_get' : cannot be explicitly specialized\tPyHSPlasma\td:\\plasma\\libhsplasma\\python\\prp\\audio\\pySoundBuffer.h\t35\t\r\nError\tC1903\tunable to recover from previous error(s); stopping compilation\tPyHSPlasma\td:\\plasma\\libhsplasma\\python\\prp\\audio\\pySoundBuffer.h\t38\t\r\nError\tC2989\t'plWAVHeader' : class template has already been declared as a non-class template\tPyHSPlasma\td:\\plasma\\libhsplasma\\python\\prp\\audio\\pySoundBuffer.h\t36\t\r\nError\tC2910\t'pyPlasma_get' : cannot be explicitly specialized\tPyHSPlasma\td:\\plasma\\libhsplasma\\python\\prp\\audio\\pySoundBuffer.h\t35\t\r\nError\tC1903\tunable to recover from previous error(s); stopping compilation\tPyHSPlasma\td:\\plasma\\libhsplasma\\python\\prp\\audio\\pySoundBuffer.h\t38\t\r\nError\tC2440\t'initializing' : cannot convert from 'hashfunc' to 'long (__cdecl *)(PyObject *)'\tPyHSPlasma\tD:\\Plasma\\libhsplasma\\Python\\PRP\\KeyedObject\\pyKey.cpp\t34\t\r\nError\tC2440\t'=' : cannot convert from 'long (__cdecl *)(PyObject *)' to 'hashfunc'\tPyHSPlasma\tD:\\Plasma\\libhsplasma\\Python\\PRP\\KeyedObject\\pyKey.cpp\t276\t\r\nError\tC2440\t'initializing' : cannot convert from 'hashfunc' to 'long (__cdecl *)(PyObject *)'\tPyHSPlasma\tD:\\Plasma\\libhsplasma\\Python\\PRP\\KeyedObject\\pyLocation.cpp\t44\t\r\nError\tC2440\t'=' : cannot convert from 'long (__cdecl *)(PyObject *)' to 'hashfunc'\tPyHSPlasma\tD:\\Plasma\\libhsplasma\\Python\\PRP\\KeyedObject\\pyLocation.cpp\t204\t\r\nError\tC2989\t'plWAVHeader' : class template has already been declared as a non-class template\tPyHSPlasma\tD:\\Plasma\\libhsplasma\\Python\\PRP\\Audio\\pySoundBuffer.h\t36\t\r\nError\tC2910\t'pyPlasma_get' : cannot be explicitly specialized\tPyHSPlasma\tD:\\Plasma\\libhsplasma\\Python\\PRP\\Audio\\pySoundBuffer.h\t35\t\r\nError\tC1903\tunable to recover from previous error(s); stopping compilation\tPyHSPlasma\tD:\\Plasma\\libhsplasma\\Python\\PRP\\Audio\\pySoundBuffer.h\t38\t\r\nError\tC2989\t'plWAVHeader' : class template has already been declared as a non-class template\tPyHSPlasma\td:\\plasma\\libhsplasma\\python\\PRP\\Audio\\pySoundBuffer.h\t36\t\r\n```"}}
{"actor":{"display_login":"Hoikas"}}