{"id":17984040,"url":"https://github.com/weirdnox/generic-grafcet","last_synced_at":"2025-08-16T23:31:25.143Z","repository":{"id":88916042,"uuid":"133583721","full_name":"weirdNox/Generic-Grafcet","owner":"weirdNox","description":"Generic Grafcet implementation, in C, using metaprogramming.","archived":false,"fork":false,"pushed_at":"2018-05-19T11:47:32.000Z","size":76,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-10-29T18:30:57.113Z","etag":null,"topics":["c","generic","grafcet","macros","metaprogramming","preprocessor","system"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/weirdNox.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.org","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-15T23:23:16.000Z","updated_at":"2023-12-23T11:35:22.000Z","dependencies_parsed_at":"2023-06-13T03:30:48.066Z","dependency_job_id":null,"html_url":"https://github.com/weirdNox/Generic-Grafcet","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/weirdNox%2FGeneric-Grafcet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weirdNox%2FGeneric-Grafcet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weirdNox%2FGeneric-Grafcet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weirdNox%2FGeneric-Grafcet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/weirdNox","download_url":"https://codeload.github.com/weirdNox/Generic-Grafcet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230066590,"owners_count":18167540,"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":["c","generic","grafcet","macros","metaprogramming","preprocessor","system"],"created_at":"2024-10-29T18:19:17.872Z","updated_at":"2024-12-17T04:43:04.376Z","avatar_url":"https://github.com/weirdNox.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"* Generic Grafcet\nThis is a program that implements generic Grafcet systems with the help of very simple\nmacros. It is not provided as a library, but it should be easy to adapt it and embed it in\nother programs.\n\nIt works by having the source be fed to a preprocessor, which generates custom functions\nand enums in another file (preprocessor_output.h) that will be included by the original\none. This is a technique called [[https://en.wikipedia.org/wiki/Metaprogramming][metaprogramming]].\n\n[[https://youtu.be/t8XrhOiZT2E][Watch a screencast here!]]\n\n** Features\n- Generic grafcet system, with a variable number of grafcets, states and transitions\n- Customizable inputs and outputs\n  - With rising and falling edges\n- Colorful, automatic debug information\n- State timers\n- Supervising\n  - Hierarchy (grafcets with lower index are updated first)\n  - Grafcet freeze function\n\n** The preprocessor\nIt was based on the simple preprocessor made on [[https://handmadehero.org/][Handmade Hero]] (which is a huge inspiration\nfor me!). It uses a pseudo [[https://en.wikipedia.org/wiki/Recursive_descent_parser][Recursive Descent]] which only parses some tokens of interest,\nfrom all that are scanned.\n\n** Some things missing\n- Grafcet reset utility (set it to the starting point)\n- Grafcet pausing\n\n** License\nThis is made available in the MIT License, with some third party code documented as such.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweirdnox%2Fgeneric-grafcet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweirdnox%2Fgeneric-grafcet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweirdnox%2Fgeneric-grafcet/lists"}