{"id":13831594,"url":"https://github.com/ryobg/JContainers","last_synced_at":"2025-07-09T15:32:22.103Z","repository":{"id":45103520,"uuid":"120419205","full_name":"ryobg/JContainers","owner":"ryobg","description":"JSON-based data structures for Papyrus - the TESV Skyrim SE scripting language","archived":false,"fork":true,"pushed_at":"2024-07-28T16:40:38.000Z","size":24107,"stargazers_count":106,"open_issues_count":12,"forks_count":22,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-08-05T10:17:47.539Z","etag":null,"topics":["json","plugin","skse","skyrim-special-edition"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"SilverIce/JContainers","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ryobg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-02-06T07:41:19.000Z","updated_at":"2024-07-22T21:51:38.000Z","dependencies_parsed_at":"2023-01-31T03:00:44.362Z","dependency_job_id":null,"html_url":"https://github.com/ryobg/JContainers","commit_stats":null,"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryobg%2FJContainers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryobg%2FJContainers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryobg%2FJContainers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryobg%2FJContainers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryobg","download_url":"https://codeload.github.com/ryobg/JContainers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225565870,"owners_count":17489273,"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":["json","plugin","skse","skyrim-special-edition"],"created_at":"2024-08-04T10:01:32.426Z","updated_at":"2024-11-20T13:30:58.503Z","avatar_url":"https://github.com/ryobg.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"[![Build status](https://ci.appveyor.com/api/projects/status/r8kex3xnxmktn1sq?svg=true)](https://ci.appveyor.com/project/ryobg/jcontainers)\n[![Latest release](https://img.shields.io/github/release/ryobg/jcontainers/all.svg)](https://github.com/ryobg/jcontainers/releases)\n\n\u003cimg src=\"logo.png?raw=true\" height=\"256\"\u003e\n\n# JContainers (64-bit)\n\nA project to extend [Skyrim's Papyrus\nscripting](https://www.creationkit.com/index.php?title=Category:Papyrus) with\n[JSON formatted](https://json.org/) serializable data structures.\n\n\u003e **Important**\n\u003e\n\u003e This project is fork of the original [JContainers](https://github.com/SilverIce/JContainers). It\n\u003e strives to convert and mash it up to the new Skyrim Special 64-bit edition. Cudos to the original\n\u003e author and all of his supporters!\n\n### Why?\n\nIf you are programmer, sooner or later you'll notice the lack of many useful features in Papyrus.\nThere is no way to:\n\n- Append or erase values from arrays\n- Put an array into an array (i.e. no nested arrays)\n- Put multiple value types into a single array\n- Have associative containers \n- Be able to load or save a data into a file\n\n### Solution\n\nSince there is no source code of the Papyrus virtual machine, it is tricky and no easy to extend the\nexisting Papyrus Array type or add new data structure types. JContainers implements from scratch its\nown data structures, garbage collector and other infernals. Features offered:\n\n- Data structures: arrays and associative containers (a.k.a. maps or dictionaries)\n- Import and export data to and from JSON files\n- Embedded, lightweight scripting with [Lua](https://www.lua.org/)\n- Interaction with JContainers via C++ interface.\n\n### Full documentation\n\n[Latest documentation](https://github.com/ryobg/jcontainers/wiki)\n\n### Can I help?\n\nSure! Feel free to do whatever you think is good - post feature requests, report bugs, improve Wiki\nor source code.\n\n# Building from source\n\n### Prerequisites\n\n* [Microsoft Visual Studio 2019](https://www.visualstudio.com/downloads/) \n  Community Edition with Visual C++ support would suffice. All project files are of that version,\n  but with a bit of manual work they may be converted to older versions too (e.g. 2013, though\n  issues most certainly will arrise).\n* A [Python](https://www.python.org/downloads/) environment for Windows, version 3.4 or later.\n  This is needed to run some helper scripts for testing, building distributions and any other small\n  helpful tasks. Its `python.exe` should be available on the PATH variable.\n* The GIT revisioning system and/or GitHub account may help if you want to contribute or work more\n  easily with the public repository of this project.\n\n### First time setup\n\n1. Run `git submodule update --init --recursive` so that all dependencies like Jannson, Google Test\n   and etc. get downloaded and linked to the correct revisions.\n2. Run the JContainer's `tools\\build_boost.bat` file. It should manage to download, unpack,\n   bootstrap and build the neccessary libraries from Boost (version 1.67 currently). If you encounter\n   boost linking errors later on, you can attempt to specify the msvc version when running the batch\n   file, e.g. `tools\\build_boost.bat vc141`.\n3. Run also the `tools\\merge_skse.bat` file. It should extract the stripped down and bundled SKSE64\n   and SKSE VR distributions into the local source tree.\n4. Open the `JContainers.sln` file with Visual Studio and Rebuild the whole solution. It will take\n   some time.\n5. After successfull build, run from the command line `python tools\\install.py x64\\Release 64`.\n   Eventually swap `Release` for `Debug` - depending on what kind of distribution was build and\n   actually is wanted in the `dist\\` folder. The last argument, `64` could be also `VR`, but then\n   the configuration should be either `ReleaseVR` or `DebugVR`.\n6. Optionaly, run `python tools\\test.py x64\\Release\\Data\\SKSE\\Plugins\\JContainers64.dll`. Again it\n   depends whether `Release` or `Debug` (or `ReleaseVR` and `DebugVR`) builds should be tested. Note\n   however that step 4, must be ran first!\n\nThat's it!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryobg%2FJContainers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryobg%2FJContainers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryobg%2FJContainers/lists"}