{"action":"created","comment":{"url":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/comments/205738014","pull_request_review_id":141050759,"id":205738014,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNTczODAxNA==","diff_hunk":"@@ -0,0 +1,341 @@\n+/*\n+ * Copyright 2018, Intel Corporation\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions\n+ * are met:\n+ *\n+ *     * Redistributions of source code must retain the above copyright\n+ *       notice, this list of conditions and the following disclaimer.\n+ *\n+ *     * Redistributions in binary form must reproduce the above copyright\n+ *       notice, this list of conditions and the following disclaimer in\n+ *       the documentation and/or other materials provided with the\n+ *       distribution.\n+ *\n+ *     * Neither the name of the copyright holder nor the names of its\n+ *       contributors may be used to endorse or promote products derived\n+ *       from this software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ */\n+\n+/**\n+ * @file\n+ * Iterators for pmem::obj::array\n+ */\n+\n+#ifndef PMEMOBJ_ARRAY_ITERATOR_HPP\n+#define PMEMOBJ_ARRAY_ITERATOR_HPP\n+\n+#include <algorithm>\n+#include <functional>\n+\n+namespace pmem\n+{\n+\n+namespace obj\n+{\n+\n+/*\n+ * Base class for array iterators which satisfies RandomAccessIterator\n+ */\n+template <typename Iterator, typename Reference, typename Pointer>\n+struct base_iterator {\n+\t/**\n+\t* Constructor taking a pointer\n+\t*/\n+\tconstexpr base_iterator(Pointer begin) : ptr(begin)\n+\t{\n+\t}\n+\n+\t/**\n+\t* Dereference operator\n+\t*/\n+\tconstexpr Reference operator*() const\n+\t{\n+\t\treturn *ptr;\n+\t}\n+\n+\t/**\n+\t* Arrow operator\n+\t*/\n+\tconstexpr Pointer operator->() const\n+\t{\n+\t\treturn ptr;\n+\t}\n+\n+\t/**\n+\t* Prefix increment operator\n+\t*/\n+\tIterator &operator++()\n+\t{\n+\t\tstatic_cast<Iterator *>(this)->change_by(1);\n+\t\treturn *static_cast<Iterator *>(this);\n+\t}\n+\n+\t/**\n+\t* Postfix increment operator\n+\t*/\n+\tIterator operator++(int)\n+\t{\n+\t\tIterator tmp(*static_cast<Iterator *>(this));\n+\t\tstatic_cast<Iterator *>(this)->change_by(1);\n+\t\treturn tmp;\n+\t}\n+\n+\t/**\n+\t* Prefix decrement operator\n+\t*/\n+\tIterator &operator--()\n+\t{\n+\t\tstatic_cast<Iterator *>(this)->change_by(-1);\n+\t\treturn *static_cast<Iterator *>(this);\n+\t}\n+\n+\t/**\n+\t* Postfix decrement operator\n+\t*/\n+\tIterator operator--(int)\n+\t{\n+\t\tIterator tmp(*static_cast<Iterator *>(this));\n+\t\tstatic_cast<Iterator *>(this)->change_by(-1);\n+\t\treturn tmp;\n+\t}\n+\n+\t/**\n+\t * Addition assignment operator.\n+\t */\n+\tIterator &\n+\toperator+=(std::ptrdiff_t n)\n+\t{\n+\t\tstatic_cast<Iterator *>(this)->change_by(n);\n+\t\treturn *static_cast<Iterator *>(this);\n+\t}\n+\n+\t/**\n+\t* Subtraction assignment operator.\n+\t*/\n+\tIterator &\n+\toperator-=(std::ptrdiff_t n)\n+\t{\n+\t\tstatic_cast<Iterator *>(this)->change_by(-n);\n+\t\treturn *static_cast<Iterator *>(this);\n+\t}\n+\n+\t/**\n+\t * Addition operator\n+\t */\n+\tIterator\n+\toperator+(std::ptrdiff_t n)\n+\t{\n+\t\tIterator tmp(*static_cast<Iterator *>(this));\n+\t\ttmp += n;\n+\t\treturn tmp;\n+\t}\n+\n+\t/**\n+\t * Subtraction operator overload for integral type\n+\t */\n+\tIterator\n+\toperator-(std::ptrdiff_t n)\n+\t{\n+\t\tIterator tmp(*static_cast<Iterator *>(this));\n+\t\ttmp -= n;\n+\t\treturn tmp;\n+\t}\n+\n+\t/**\n+\t * Subtraction operator overload Iterator type\n+\t */\n+\tfriend std::ptrdiff_t\n+\toperator-(const Iterator &lhs, const Iterator &rhs)\n+\t{\n+\t\treturn lhs.ptr - rhs.ptr;\n+\t}\n+\n+\t/**\n+\t * Element access operator\n+\t */\n+\tReference operator[](std::ptrdiff_t n)\n+\t{\n+\t\treturn ptr[n];\n+\t}\n+\n+\t/**\n+\t * Non-member equal operator\n+\t */\n+\tconstexpr friend bool\n+\toperator==(const Iterator &lhs, const Iterator &rhs)\n+\t{\n+\t\treturn lhs.ptr == rhs.ptr;\n+\t}\n+\n+\t/**\n+\t * Non-member not equal operator\n+\t */\n+\tconstexpr friend bool\n+\toperator!=(const Iterator &lhs, const Iterator &rhs)\n+\t{\n+\t\treturn !(lhs == rhs);\n+\t}\n+\n+\t/**\n+     * Non-member less than operator\n+     */\n+\tconstexpr friend bool\n+\toperator<(const Iterator &lhs, const Iterator &rhs)\n+\t{\n+\t\treturn lhs.ptr < rhs.ptr;\n+\t}\n+\n+\t/**\n+\t * Non-member greater than operator\n+\t */\n+\tconstexpr friend bool\n+\toperator>(const Iterator &lhs, const Iterator &rhs)\n+\t{\n+\t\treturn lhs.ptr > rhs.ptr;\n+\t}\n+\n+\t/**\n+\t * Non-member less or equal operator\n+\t */\n+\tconstexpr friend bool\n+\toperator<=(const Iterator &lhs, const Iterator &rhs)\n+\t{\n+\t\treturn !(lhs > rhs);\n+\t}\n+\n+\t/**\n+\t * Non-member greater or equal operator\n+\t */\n+\tconstexpr friend bool\n+\toperator>=(const Iterator &lhs, const Iterator &rhs)\n+\t{\n+\t\treturn !(lhs < rhs);\n+\t}\n+\n+protected:\n+\t/*\n+\t * Function for changing underlying pointer.\n+\t * Non-const iterator may override it and snapshot data if necessary.\n+\t */\n+\tvoid\n+\tchange_by(std::ptrdiff_t n)\n+\t{\n+\t\tptr += n;\n+\t}\n+\n+\tPointer ptr;\n+};\n+\n+template <typename T>\n+struct const_array_iterator;\n+\n+template <typename T>\n+struct array_iterator : public base_iterator<array_iterator<T>, T &, T *> {","path":"include/libpmemobj++/array_iterator.hpp","position":247,"original_position":247,"commit_id":"354976d425d8e5f6709afb928c7bbe08cbbeeb7f","original_commit_id":"354976d425d8e5f6709afb928c7bbe08cbbeeb7f","user":{"login":"pbalcer","id":8775610,"node_id":"MDQ6VXNlcjg3NzU2MTA=","avatar_url":"https://avatars1.githubusercontent.com/u/8775610?v=4","gravatar_id":"","url":"https://api.github.com/users/pbalcer","html_url":"https://github.com/pbalcer","followers_url":"https://api.github.com/users/pbalcer/followers","following_url":"https://api.github.com/users/pbalcer/following{/other_user}","gists_url":"https://api.github.com/users/pbalcer/gists{/gist_id}","starred_url":"https://api.github.com/users/pbalcer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pbalcer/subscriptions","organizations_url":"https://api.github.com/users/pbalcer/orgs","repos_url":"https://api.github.com/users/pbalcer/repos","events_url":"https://api.github.com/users/pbalcer/events{/privacy}","received_events_url":"https://api.github.com/users/pbalcer/received_events","type":"User","site_admin":false},"body":"I thought the entire point of using the snapshot closure is to generalize this interface so that it does not assume that the objects are laid out contiguously.\r\n\r\nWhy is this `array_iterator`? Will we have a `vector_iterator` for vector? If we must do so, I'd prefer to put this iterator in the `pmem::obj:array::iterator` class.","created_at":"2018-07-27T10:57:15Z","updated_at":"2018-07-27T10:59:45Z","html_url":"https://github.com/pmem/libpmemobj-cpp/pull/38#discussion_r205738014","pull_request_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/38","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/comments/205738014"},"html":{"href":"https://github.com/pmem/libpmemobj-cpp/pull/38#discussion_r205738014"},"pull_request":{"href":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/38"}}},"pull_request":{"url":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/38","id":202586656,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAyNTg2NjU2","html_url":"https://github.com/pmem/libpmemobj-cpp/pull/38","diff_url":"https://github.com/pmem/libpmemobj-cpp/pull/38.diff","patch_url":"https://github.com/pmem/libpmemobj-cpp/pull/38.patch","issue_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/issues/38","number":38,"state":"open","locked":false,"title":"Introduce pmem::obj::array","user":{"login":"igchor","id":29300828,"node_id":"MDQ6VXNlcjI5MzAwODI4","avatar_url":"https://avatars0.githubusercontent.com/u/29300828?v=4","gravatar_id":"","url":"https://api.github.com/users/igchor","html_url":"https://github.com/igchor","followers_url":"https://api.github.com/users/igchor/followers","following_url":"https://api.github.com/users/igchor/following{/other_user}","gists_url":"https://api.github.com/users/igchor/gists{/gist_id}","starred_url":"https://api.github.com/users/igchor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/igchor/subscriptions","organizations_url":"https://api.github.com/users/igchor/orgs","repos_url":"https://api.github.com/users/igchor/repos","events_url":"https://api.github.com/users/igchor/events{/privacy}","received_events_url":"https://api.github.com/users/igchor/received_events","type":"User","site_admin":false},"body":"To do:\r\n- more tests\r\n\r\n<!-- Reviewable:start -->\r\n---\r\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/pmem/libpmemobj-cpp/38)\r\n<!-- Reviewable:end -->\r\n","created_at":"2018-07-19T14:52:01Z","updated_at":"2018-07-27T10:59:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c6dbe6804cec6a0bbae0a0b97a67e09219bcb8b8","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/38/commits","review_comments_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/38/comments","review_comment_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/issues/38/comments","statuses_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/statuses/354976d425d8e5f6709afb928c7bbe08cbbeeb7f","head":{"label":"igchor:init_array","ref":"init_array","sha":"354976d425d8e5f6709afb928c7bbe08cbbeeb7f","user":{"login":"igchor","id":29300828,"node_id":"MDQ6VXNlcjI5MzAwODI4","avatar_url":"https://avatars0.githubusercontent.com/u/29300828?v=4","gravatar_id":"","url":"https://api.github.com/users/igchor","html_url":"https://github.com/igchor","followers_url":"https://api.github.com/users/igchor/followers","following_url":"https://api.github.com/users/igchor/following{/other_user}","gists_url":"https://api.github.com/users/igchor/gists{/gist_id}","starred_url":"https://api.github.com/users/igchor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/igchor/subscriptions","organizations_url":"https://api.github.com/users/igchor/orgs","repos_url":"https://api.github.com/users/igchor/repos","events_url":"https://api.github.com/users/igchor/events{/privacy}","received_events_url":"https://api.github.com/users/igchor/received_events","type":"User","site_admin":false},"repo":{"id":133518413,"node_id":"MDEwOlJlcG9zaXRvcnkxMzM1MTg0MTM=","name":"libpmemobj-cpp","full_name":"igchor/libpmemobj-cpp","owner":{"login":"igchor","id":29300828,"node_id":"MDQ6VXNlcjI5MzAwODI4","avatar_url":"https://avatars0.githubusercontent.com/u/29300828?v=4","gravatar_id":"","url":"https://api.github.com/users/igchor","html_url":"https://github.com/igchor","followers_url":"https://api.github.com/users/igchor/followers","following_url":"https://api.github.com/users/igchor/following{/other_user}","gists_url":"https://api.github.com/users/igchor/gists{/gist_id}","starred_url":"https://api.github.com/users/igchor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/igchor/subscriptions","organizations_url":"https://api.github.com/users/igchor/orgs","repos_url":"https://api.github.com/users/igchor/repos","events_url":"https://api.github.com/users/igchor/events{/privacy}","received_events_url":"https://api.github.com/users/igchor/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/igchor/libpmemobj-cpp","description":"C++ bindings for libpmemobj","fork":true,"url":"https://api.github.com/repos/igchor/libpmemobj-cpp","forks_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/forks","keys_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/teams","hooks_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/hooks","issue_events_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/issues/events{/number}","events_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/events","assignees_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/assignees{/user}","branches_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/branches{/branch}","tags_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/tags","blobs_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/git/refs{/sha}","trees_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/statuses/{sha}","languages_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/languages","stargazers_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/stargazers","contributors_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/contributors","subscribers_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/subscribers","subscription_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/subscription","commits_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/commits{/sha}","git_commits_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/git/commits{/sha}","comments_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/comments{/number}","issue_comment_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/issues/comments{/number}","contents_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/contents/{+path}","compare_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/merges","archive_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/downloads","issues_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/issues{/number}","pulls_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/pulls{/number}","milestones_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/milestones{/number}","notifications_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/labels{/name}","releases_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/releases{/id}","deployments_url":"https://api.github.com/repos/igchor/libpmemobj-cpp/deployments","created_at":"2018-05-15T13:14:37Z","updated_at":"2018-07-26T12:26:01Z","pushed_at":"2018-07-27T08:45:56Z","git_url":"git://github.com/igchor/libpmemobj-cpp.git","ssh_url":"git@github.com:igchor/libpmemobj-cpp.git","clone_url":"https://github.com/igchor/libpmemobj-cpp.git","svn_url":"https://github.com/igchor/libpmemobj-cpp","homepage":null,"size":2808,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"pmem:master","ref":"master","sha":"9aa424650610ef6820ad4549881c63a1b65d6461","user":{"login":"pmem","id":4894933,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ4OTQ5MzM=","avatar_url":"https://avatars1.githubusercontent.com/u/4894933?v=4","gravatar_id":"","url":"https://api.github.com/users/pmem","html_url":"https://github.com/pmem","followers_url":"https://api.github.com/users/pmem/followers","following_url":"https://api.github.com/users/pmem/following{/other_user}","gists_url":"https://api.github.com/users/pmem/gists{/gist_id}","starred_url":"https://api.github.com/users/pmem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pmem/subscriptions","organizations_url":"https://api.github.com/users/pmem/orgs","repos_url":"https://api.github.com/users/pmem/repos","events_url":"https://api.github.com/users/pmem/events{/privacy}","received_events_url":"https://api.github.com/users/pmem/received_events","type":"Organization","site_admin":false},"repo":{"id":133517380,"node_id":"MDEwOlJlcG9zaXRvcnkxMzM1MTczODA=","name":"libpmemobj-cpp","full_name":"pmem/libpmemobj-cpp","owner":{"login":"pmem","id":4894933,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ4OTQ5MzM=","avatar_url":"https://avatars1.githubusercontent.com/u/4894933?v=4","gravatar_id":"","url":"https://api.github.com/users/pmem","html_url":"https://github.com/pmem","followers_url":"https://api.github.com/users/pmem/followers","following_url":"https://api.github.com/users/pmem/following{/other_user}","gists_url":"https://api.github.com/users/pmem/gists{/gist_id}","starred_url":"https://api.github.com/users/pmem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pmem/subscriptions","organizations_url":"https://api.github.com/users/pmem/orgs","repos_url":"https://api.github.com/users/pmem/repos","events_url":"https://api.github.com/users/pmem/events{/privacy}","received_events_url":"https://api.github.com/users/pmem/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pmem/libpmemobj-cpp","description":"C++ bindings for libpmemobj","fork":false,"url":"https://api.github.com/repos/pmem/libpmemobj-cpp","forks_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/forks","keys_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/teams","hooks_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/hooks","issue_events_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/issues/events{/number}","events_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/events","assignees_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/assignees{/user}","branches_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/branches{/branch}","tags_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/tags","blobs_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/git/refs{/sha}","trees_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/statuses/{sha}","languages_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/languages","stargazers_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/stargazers","contributors_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/contributors","subscribers_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/subscribers","subscription_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/subscription","commits_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/commits{/sha}","git_commits_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/git/commits{/sha}","comments_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/comments{/number}","issue_comment_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/issues/comments{/number}","contents_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/contents/{+path}","compare_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/merges","archive_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/downloads","issues_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/issues{/number}","pulls_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls{/number}","milestones_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/milestones{/number}","notifications_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/labels{/name}","releases_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/releases{/id}","deployments_url":"https://api.github.com/repos/pmem/libpmemobj-cpp/deployments","created_at":"2018-05-15T13:06:34Z","updated_at":"2018-07-19T14:05:00Z","pushed_at":"2018-07-27T08:46:02Z","git_url":"git://github.com/pmem/libpmemobj-cpp.git","ssh_url":"git@github.com:pmem/libpmemobj-cpp.git","clone_url":"https://github.com/pmem/libpmemobj-cpp.git","svn_url":"https://github.com/pmem/libpmemobj-cpp","homepage":null,"size":705,"stargazers_count":1,"watchers_count":1,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":7,"mirror_url":null,"archived":false,"open_issues_count":4,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":7,"open_issues":4,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/38"},"html":{"href":"https://github.com/pmem/libpmemobj-cpp/pull/38"},"issue":{"href":"https://api.github.com/repos/pmem/libpmemobj-cpp/issues/38"},"comments":{"href":"https://api.github.com/repos/pmem/libpmemobj-cpp/issues/38/comments"},"review_comments":{"href":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/38/comments"},"review_comment":{"href":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pmem/libpmemobj-cpp/pulls/38/commits"},"statuses":{"href":"https://api.github.com/repos/pmem/libpmemobj-cpp/statuses/354976d425d8e5f6709afb928c7bbe08cbbeeb7f"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"pbalcer"}}