{"id":21432083,"url":"https://github.com/KrutoiMag/TurboINI","last_synced_at":"2025-10-04T12:33:10.544Z","repository":{"id":262258610,"uuid":"886695442","full_name":"HotWizard/TurboINI","owner":"HotWizard","description":"Стараюсь написать максимально быстродействующую библиотеку C++ для чтения файлов \".ini\" формата.","archived":false,"fork":false,"pushed_at":"2024-11-25T22:23:47.000Z","size":499,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-23T08:42:33.094Z","etag":null,"topics":["cpp","cpp17","fast","ini","ini-parser","xmake"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HotWizard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-11-11T12:46:19.000Z","updated_at":"2024-11-25T22:23:51.000Z","dependencies_parsed_at":"2024-11-11T13:38:24.368Z","dependency_job_id":"74117c9c-1636-429a-bb1e-bf1d0cab95dc","html_url":"https://github.com/HotWizard/TurboINI","commit_stats":null,"previous_names":["hotwizard/turboini"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HotWizard%2FTurboINI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HotWizard%2FTurboINI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HotWizard%2FTurboINI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HotWizard%2FTurboINI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HotWizard","download_url":"https://codeload.github.com/HotWizard/TurboINI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235253684,"owners_count":18960473,"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":["cpp","cpp17","fast","ini","ini-parser","xmake"],"created_at":"2024-11-22T23:16:13.823Z","updated_at":"2025-10-04T12:33:05.254Z","avatar_url":"https://github.com/HotWizard.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CodeQL Advanced](https://github.com/HotWizard/TurboINI/actions/workflows/codeql.yml/badge.svg)](https://github.com/HotWizard/TurboINI/actions/workflows/codeql.yml)\n# TurboINI\n### Примечания\n- Версия C++ \u003e= 17.\n- [xmake](https://xmake.io/#/)\n### Построение и запуск тестовых программ\n```shell\n# Построение и запуск tests/0.cpp и tests/1.cpp программ.\nxmake \u0026\u0026 xmake run 0 \u0026\u0026 xmake run 1\n```\n### Документация\nДокументацию можете посмотреть в файле [DOCUMENTATION.md](DOCUMENTATION.md)\n### Пример кода C++, не требующий \\\"INI\\\" файла\n```cpp\n#include \"TurboINI.hpp\"\n\n#include \u003ccstdlib\u003e\n#include \u003ciostream\u003e\n#include \u003cmemory\u003e\n\nusing TIT = TurboINI::types;\n\ninline std::unique_ptr\u003cTurboINI::parser\u003e parser;\n\nconst inline void InitParser(const std::string \u0026raw)\n{\n    parser = std::make_unique\u003cTurboINI::parser\u003e(raw);\n}\n\nint main(void)\n{\n    InitParser(\"\\\"integer\\\"=324\");\n\n    if (parser-\u003eexists(TIT::INTEGER, \"integer\"))\n        std::cout \u003c\u003c parser-\u003eGetInteger(\"integer\") \u003c\u003c std::endl;\n\n    return EXIT_SUCCESS;\n}\n```\n---\n### Пример кода C++, но уже с использованием \\\"INI\\\" файла\n```cpp\n// main.cpp\n#include \"TurboINI.hpp\"\n\n#include \u003ccstdlib\u003e\n#include \u003ciostream\u003e\n\nusing namespace std;\n\nTurboINI::parser parser;\n\nconst inline void init(const std::string \u0026path)\n{\n    if (!parser.open(path))\n        exit(EXIT_FAILURE);\n\n    parser.EnableRefreshing(true);\n}\n\nint main(int argc, char **argv)\n{\n    if (argc == 2)\n    {\n        init(argv[1]);\n\n        if (parser.exists(TurboINI::types::INTEGER, \"integer\"))\n            cout \u003c\u003c parser.GetInteger(\"integer\") \u003c\u003c endl;\n        if (parser.exists(TurboINI::types::STRING, \"string\"))\n            cout \u003c\u003c parser.get(\"string\") \u003c\u003c endl;\n        if (parser.NamespaceExists(\"namespace\"))\n        {\n            if (parser.ExistsInNamespace(TurboINI::types::INTEGER, \"namespace\", \"integer\"))\n                cout \u003c\u003c parser.GetIntegerFromNamespace(\"namespace\", \"integer\") \u003c\u003c endl;\n            if (parser.ExistsInNamespace(TurboINI::types::STRING, \"namespace\", \"string\"))\n                cout \u003c\u003c parser.GetFromNamespace(\"namespace\", \"string\") \u003c\u003c endl;\n        }\n    }\n\n    parser.close();\n\n    return EXIT_SUCCESS;\n}\n```\n```ini\n\"integer\"=1\n\"string\"=\"string\"\n\n[\"namespace\"]\n\"integer\"=1\n\"string\"=\"1\"\n```\n### Пример команды компиляции и запуска тестовой программы с помощью GCC на Unix\n```shell\ng++ -std=c++17 -Wall -Werror -Wpedantic -pedantic-errors -g tools.cpp parser.cpp main.cpp \u0026\u0026 ./a.out test.ini\n```\n### ToDo\n- [x] Добавить возможность чтения значения строки.\n- [x] Добавить возможность чтения пространств имён.\n- [ ] Добавить возможность чтения массивов.\n- [x] Добавить возможность чтения целых чисел.\n- [ ] Добавить возможность чтения вещественных чисел.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKrutoiMag%2FTurboINI","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKrutoiMag%2FTurboINI","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKrutoiMag%2FTurboINI/lists"}