{"action":"created","issue":{"url":"https://api.github.com/repos/Wohlstand/libADLMIDI/issues/192","repository_url":"https://api.github.com/repos/Wohlstand/libADLMIDI","labels_url":"https://api.github.com/repos/Wohlstand/libADLMIDI/issues/192/labels{/name}","comments_url":"https://api.github.com/repos/Wohlstand/libADLMIDI/issues/192/comments","events_url":"https://api.github.com/repos/Wohlstand/libADLMIDI/issues/192/events","html_url":"https://github.com/Wohlstand/libADLMIDI/pull/192","id":379453300,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI5OTA4NDIw","number":192,"title":"Std structures","user":{"login":"jpcima","id":17614485,"node_id":"MDQ6VXNlcjE3NjE0NDg1","avatar_url":"https://avatars0.githubusercontent.com/u/17614485?v=4","gravatar_id":"","url":"https://api.github.com/users/jpcima","html_url":"https://github.com/jpcima","followers_url":"https://api.github.com/users/jpcima/followers","following_url":"https://api.github.com/users/jpcima/following{/other_user}","gists_url":"https://api.github.com/users/jpcima/gists{/gist_id}","starred_url":"https://api.github.com/users/jpcima/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpcima/subscriptions","organizations_url":"https://api.github.com/users/jpcima/orgs","repos_url":"https://api.github.com/users/jpcima/repos","events_url":"https://api.github.com/users/jpcima/events{/privacy}","received_events_url":"https://api.github.com/users/jpcima/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-11-10T19:26:01Z","updated_at":"2018-11-13T16:31:55Z","closed_at":null,"author_association":"COLLABORATOR","pull_request":{"url":"https://api.github.com/repos/Wohlstand/libADLMIDI/pulls/192","html_url":"https://github.com/Wohlstand/libADLMIDI/pull/192","diff_url":"https://github.com/Wohlstand/libADLMIDI/pull/192.diff","patch_url":"https://github.com/Wohlstand/libADLMIDI/pull/192.patch"},"body":"Here is a work in progress for generic internal data structures.\r\n\r\n- [X] the preallocated linked-list container `pl_list`\r\n- [X] users\r\n- [X] active notes\r\n- [X] **unit tests** (updated on libOPNMIDI side)\r\n\r\nThe `pl_list` is a generic container with STL-like behavior, with particularities.\r\n- the `value_type` is the linked-list cell `pl_cell<T>` (it is not `T`)\r\n- the cell consists of a pair of link pointers and value\r\n- the wrapped value is obtained by `mycell->value`\r\n- the list has a sentinel element to mark the end of list.\r\n  1. it's the cell refered by the `end()` iterator\r\n  2. it's the only case of cell which does not contain value\r\n  3. it can be navigated back from it, meaning you can safely do `operator--` on the end iterator\r\n- the end element has `next` to null, so end of list can be checked on this condition `iterator.is_end()`, it's not needed the inconvenience of comparing to `end()`\r\n- (supports external buffering policy. but currently unused)\r\n\r\nIt's the Boost license tag on these sources of containers I made, because I find these sources valuable for general reuse. (ok to discuss license if you want another)\r\n"},"comment":{"url":"https://api.github.com/repos/Wohlstand/libADLMIDI/issues/comments/438338330","html_url":"https://github.com/Wohlstand/libADLMIDI/pull/192#issuecomment-438338330","issue_url":"https://api.github.com/repos/Wohlstand/libADLMIDI/issues/192","id":438338330,"node_id":"MDEyOklzc3VlQ29tbWVudDQzODMzODMzMA==","user":{"login":"jpcima","id":17614485,"node_id":"MDQ6VXNlcjE3NjE0NDg1","avatar_url":"https://avatars0.githubusercontent.com/u/17614485?v=4","gravatar_id":"","url":"https://api.github.com/users/jpcima","html_url":"https://github.com/jpcima","followers_url":"https://api.github.com/users/jpcima/followers","following_url":"https://api.github.com/users/jpcima/following{/other_user}","gists_url":"https://api.github.com/users/jpcima/gists{/gist_id}","starred_url":"https://api.github.com/users/jpcima/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpcima/subscriptions","organizations_url":"https://api.github.com/users/jpcima/orgs","repos_url":"https://api.github.com/users/jpcima/repos","events_url":"https://api.github.com/users/jpcima/events{/privacy}","received_events_url":"https://api.github.com/users/jpcima/received_events","type":"User","site_admin":false},"created_at":"2018-11-13T16:31:55Z","updated_at":"2018-11-13T16:31:55Z","author_association":"COLLABORATOR","body":"This change has worked pretty robustly on my side for both of plugins.\r\n\r\nFor some remarks on double-note support which can be made after this:\r\n- instead of \"find or create\" a note onto the list, it can just push the second. (but it must check for capacity remaining)\r\n- the notes insert at the back; removal takes from the front. it means note on/off would operate as FIFO, the old note keys-off first."}}
{"actor":{"display_login":"jpcima"}}