{"push_id":814573347,"size":12,"distinct_size":12,"ref":"refs/heads/master","head":"4a2a00f4b2a8bf6f194d81a8575786d10fd8f278","before":"f963a19edaf29f6b678663a2b9bd3788961be9ac","commits":[{"sha":"9061e30bd14dd00fdfe8ecf2183e675f122fb630","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"util: introduce PyCSDL2_PyModuleAddConstants()\n\nWe often add constants to a module by doing something like:\n\n    static const PyCSDL2_Constant constants[] = {\n        ...\n    };\n    const PyCSDL2_Constant *c;\n    for (c = constants; c->name; c++)\n        if (PyModule_AddIntConstant(module, c->name, c->value))\n            return 0;\n\nwhich contains a lot of boilerplate code. Move the boilerplate into a\nutility function PyCSDL2_PyModuleAddConstants(), so we can just do:\n\n    static const PyCSDL2_Constant constants[] = {\n        ...\n    };\n    if (PyCSDL2_PyModuleAddConstants(module, constants) < 0)\n        return 0;","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/9061e30bd14dd00fdfe8ecf2183e675f122fb630"},{"sha":"97a229a03cc8a07a088b7d6c9fbb45160a11d388","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"util: introduce PyCSDL2_PyModuleAddType()\n\nWe often do the following to add a type object to the module:\n\n    if (PyType_Ready(&type)) { return 0; }\n    Py_INCREF(&type);\n    if (PyModule_AddObject(module, \"The_Type_Name\", (PyObject *)&type))\n        return 0;\n\nThis contains a lot of boilerplate -- we need to repeat the type name\nmultiple times.\n\nInstead, move the boilerplate to the utility function\nPyCSDL2_PyModuleAddType(), so we just need to write the following:\n\n    if (PyCSDL2_PyModuleAddType(module, &type) < 0)\n        return 0;\n\nwhich is a lot shorter and succinct.","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/97a229a03cc8a07a088b7d6c9fbb45160a11d388"},{"sha":"834a745d1d2a08bd2f554aff945047de3c0f2523","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"Merge branch 'pyokagan/util-add-constants-types'\n\n* pyokagan/util-add-constants-types:\n  util: introduce PyCSDL2_PyModuleAddType()\n  util: introduce PyCSDL2_PyModuleAddConstants()","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/834a745d1d2a08bd2f554aff945047de3c0f2523"},{"sha":"3e652625622c1a0ccebdd45c451f8cb3f02edf0e","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"audio: implement SDL_GetNumAudioDrivers()","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/3e652625622c1a0ccebdd45c451f8cb3f02edf0e"},{"sha":"14d470855a0ea689647d7370bb53bbc92175275a","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"audio: implement SDL_GetAudioDriver()","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/14d470855a0ea689647d7370bb53bbc92175275a"},{"sha":"6dd72b8acb680dacb58a598cca20a719ff44bff1","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"audio: implement SDL_GetCurrentAudioDriver()","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/6dd72b8acb680dacb58a598cca20a719ff44bff1"},{"sha":"c48f3f3898c7eaf0253663621e0a6f7fccd0d9da","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"audio: implement SDL_AudioInit()","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/c48f3f3898c7eaf0253663621e0a6f7fccd0d9da"},{"sha":"482a7f8e0745d385dcef6b334a9af4bf028249f3","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"audio: implement SDL_AudioQuit()","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/482a7f8e0745d385dcef6b334a9af4bf028249f3"},{"sha":"7731b1a72b5df63712dcf4844f7d496bc1caa315","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"audio: implement SDL_OpenAudio(), SDL_CloseAudio(), SDL_PauseAudio()","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/7731b1a72b5df63712dcf4844f7d496bc1caa315"},{"sha":"f7f7d119c77f02b8161c5635057ea441f33e012d","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"audio: implement SDL_GetNumAudioDevices()","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/f7f7d119c77f02b8161c5635057ea441f33e012d"},{"sha":"26acfbb5cf902f107001b9edf33f5da5a495b320","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"audio: implement SDL_GetAudioDeviceName()","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/26acfbb5cf902f107001b9edf33f5da5a495b320"},{"sha":"4a2a00f4b2a8bf6f194d81a8575786d10fd8f278","author":{"email":"ca5433e1cdd25b4a4001c54525dea593b33edc0c@pyokagan.name","name":"Paul Tan"},"message":"Merge branch 'pyokagan/audio'\n\n* pyokagan/audio:\n  audio: implement SDL_GetAudioDeviceName()\n  audio: implement SDL_GetNumAudioDevices()\n  audio: implement SDL_OpenAudio(), SDL_CloseAudio(), SDL_PauseAudio()\n  audio: implement SDL_AudioQuit()\n  audio: implement SDL_AudioInit()\n  audio: implement SDL_GetCurrentAudioDriver()\n  audio: implement SDL_GetAudioDriver()\n  audio: implement SDL_GetNumAudioDrivers()","distinct":true,"url":"https://api.github.com/repos/pyokagan/pycsdl2/commits/4a2a00f4b2a8bf6f194d81a8575786d10fd8f278"}]}