{"id":13419352,"url":"https://github.com/ddinu/observable","last_synced_at":"2025-03-15T05:30:59.528Z","repository":{"id":44784693,"uuid":"66405755","full_name":"ddinu/observable","owner":"ddinu","description":"Generic observable objects and reactive expressions for C++","archived":false,"fork":false,"pushed_at":"2022-01-24T23:37:33.000Z","size":1233,"stargazers_count":293,"open_issues_count":8,"forks_count":31,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-07-31T22:47:14.568Z","etag":null,"topics":["cplusplus","observer-pattern","reactive-programming"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ddinu.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-23T21:45:22.000Z","updated_at":"2024-07-31T14:34:59.000Z","dependencies_parsed_at":"2022-09-04T23:20:19.184Z","dependency_job_id":null,"html_url":"https://github.com/ddinu/observable","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddinu%2Fobservable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddinu%2Fobservable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddinu%2Fobservable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ddinu%2Fobservable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ddinu","download_url":"https://codeload.github.com/ddinu/observable/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221541866,"owners_count":16840113,"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":["cplusplus","observer-pattern","reactive-programming"],"created_at":"2024-07-30T22:01:14.762Z","updated_at":"2024-10-26T14:31:30.848Z","avatar_url":"https://github.com/ddinu.png","language":"C++","funding_links":[],"categories":["TODO scan for Android support in followings"],"sub_categories":[],"readme":"Observable: Generic observable objects for C++\n==============================================\n\nWrite declarative, reactive expressions or just implement the observer pattern.\n\nObservable is a self-contained, header-only library that has no depencencies.\nDrop it somewhere in your include path and you're good to go.\n\nQuick start\n-----------\n\nExample:\n\n.. code:: C++\n\n    #include \u003ciostream\u003e\n    #include \u003cobservable/observable.hpp\u003e\n\n    using namespace std;\n    using namespace observable;\n\n    int main()\n    {\n        auto sub = subject\u003cvoid(string)\u003e { };\n        sub.subscribe([](auto const \u0026 msg) { cout \u003c\u003c msg \u003c\u003c endl; });\n\n        // \"Hello, world!\" will be printed to stdout.\n        sub.notify(\"Hello, world!\");\n\n        auto a = value\u003cint\u003e { 5 };\n        auto b = value\u003cint\u003e { 5 };\n        auto avg = observe(\n                        (a + b) / 2.0f\n                   );\n        auto eq_msg = observe(\n                        select(a == b, \"equal\", \"not equal\")\n                       );\n\n        avg.subscribe([](auto val) { cout \u003c\u003c val \u003c\u003c endl; });\n        eq_msg.subscribe([](auto const \u0026 msg) { cout \u003c\u003c msg \u003c\u003c endl; });\n\n        // \"10\" and \"not equal\" will be printed to stdout in an\n        // unspecified order.\n        b = 15;\n\n        return 0;\n    }\n\nDocumentation\n-------------\n\nYou can `access the documentation \u003chttps://danieldinu.com/observable/\u003e`_ here:\nhttps://danieldinu.com/observable/.\n\nWhat's with the CMake files?\n----------------------------\n\nThe library uses CMake to build the tests, benchmarks and documentation. You\ndo not need CMake if you don't plan on running the tests or benchmarks.\n\nContributing\n------------\n\nBug reports, feature requests, documentation and code contributions are welcome \nand highly appreciated. Please open an issue or feature request before you\nstart working on any pull request.\n\nLegal and Licensing\n-------------------\n\nThe library is licensed under the `Apache License version 2.0 \u003cLICENSE.txt\u003e`_.\n\nAll contributions must be provided under the terms of this license.\n\nSupported compilers\n-------------------\n\nAny relatively recent compiler with C++14 support should work.\n\nThe code has been tested with the following compilers:\n\n* MSVC 15 (Visual Studio 2017)\n* MSVC 14 (Visual Studio 2015)\n* GCC 5, 6, 7\n* Clang 3.6, 3.8\n* AppleClang 9.1\n\nBuild status\n------------\n\nVisual Studio 2017 builds:\n\n * |win32 15 build C++14|_ (32 bit, C++14)\n * |win64 15 build C++14|_ (64 bit, C++14)\n * |win32 15 build C++17|_ (32 bit, C++17)\n * |win64 15 build C++17|_ (64 bit, C++17)\n\n.. |win32 15 build C++14| image:: https://ci.appveyor.com/api/projects/status/sgomsxwri8wknode?svg=true\n.. _win32 15 build C++14: https://ci.appveyor.com/project/ddinu/observable-crrsf\n\n.. |win64 15 build C++14| image:: https://ci.appveyor.com/api/projects/status/tpr4qem5gxo7dntb?svg=true\n.. _win64 15 build C++14: https://ci.appveyor.com/project/ddinu/observable-uyjd7\n\n.. |win32 15 build C++17| image:: https://ci.appveyor.com/api/projects/status/296i1mvgm7fht0f6?svg=true\n.. _win32 15 build C++17: https://ci.appveyor.com/project/ddinu/observable-2lmia\n\n.. |win64 15 build C++17| image:: https://ci.appveyor.com/api/projects/status/i948buecj8j51by0?svg=true\n.. _win64 15 build C++17: https://ci.appveyor.com/project/ddinu/observable-ha4xx\n\nVisual Studio 2015 builds:\n\n * |win32 14 build|_ (32 bit, C++14)\n * |win64 14 build|_ (64 bit, C++14)\n\n.. |win32 14 build| image:: https://ci.appveyor.com/api/projects/status/bee1g4nlh25olmct/branch/master?svg=true\n.. _win32 14 build: https://ci.appveyor.com/project/ddinu/observable-xwigk\n\n.. |win64 14 build| image:: https://ci.appveyor.com/api/projects/status/abi5swnpvc2nof3r/branch/master?svg=true\n.. _win64 14 build: https://ci.appveyor.com/project/ddinu/observable\n\nLinux (GCC, Clang) and OS X (Clang) builds:\n\n * |travis build|_ (64 bit)\n\n.. |travis build| image:: https://travis-ci.org/ddinu/observable.svg?branch=master\n.. _travis build: https://travis-ci.org/ddinu/observable\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddinu%2Fobservable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fddinu%2Fobservable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fddinu%2Fobservable/lists"}