GithubHelp home page GithubHelp logo

silverice / jcontainers Goto Github PK

View Code? Open in Web Editor NEW
41.0 11.0 33.0 21.17 MB

JSON-based data structures for Papyrus (TESV Skyrim scripting language)

License: MIT License

C 4.39% Lua 0.06% Python 1.52% C++ 90.84% CSS 0.01% Perl 0.02% Batchfile 0.05% Shell 0.57% HTML 0.19% Makefile 1.71% Assembly 0.42% Objective-C 0.01% Yacc 0.04% XSLT 0.01% Papyrus 0.12% CMake 0.02% M4 0.04%
json papyrus c-plus-plus data-structures library skyrim skse-plugin skse

jcontainers's Introduction

Build status Discord Chat

JContainers

The main goal of the project is to extend Papyrus with JSON-based data structures (arrays and maps).

Skyrim SE port (by @ryobg) of the project located here.

Why bother?

If you are programmer, sooner or later you'll notice the lack of many, many must-have features in Papyrus. First of all, the only data structure in Papyrus is Array. There is no way to:

  • append, erase values from arrays
  • put an array into an array (e.g. no nested arrays)
  • put multiple value types into a single array

And I didn't mentioned the lack of associative containers or impossibility to load or save a data into a file. Though, Papyrus is a specialized language, we shouldn't expect much.

The solution

There is no easy way to extend existing Array (which would require to change Papyrus VM, which is tricky since we have no source code) or add new data structures into VM, thus JContainers implements its own data structures, garbage collector and other infernal stuff from scratch. Features, offered by JContainers:

  • Data structures (arrays, dictionaries)
  • Import and export data to and from JSON files
  • Embedded Lua - it possible to use powerful Lua
  • C++ API - interaction with JContainers via C++ interface. See "developer resources" archive for usage example.

Links

Latest documentation

Can I help?

Sure! Feel free to do whatever you think is good - post feature requests, report bugs, improve Wiki or source code.

jcontainers's People

Contributors

expired6978 avatar silverice avatar skwerlman avatar waffle-iron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jcontainers's Issues

Skyrim Special Edition 64bit version

Hi, now that SKSE 64bit for Skyrim Special Edition is well and truly on its way to being finished, are you considering recompiling JContainers for Special Edition?

Is there a way to call the serialization/deserialization from C++ to string?

In api_usage_example/Source.cpp it looks like it is looking up the handles to the function calls provided to the Papyrus interface. I am not seeing a way to directly call the serialization functions.

I would like to use this plugin to serialize JSON data to be sent over a network connection. So I need byte access to the resulting JSON data. Right now the API reads and writes to file. Is there currently a way to get serialize to a string in the API? I cannot find one.

Any support for SKSE64 v2.1.2 -> SAE v1.6.318.0 ?

i am currently working on a project that requires me to work on some mods that will only work together for the moment on SAE v1.6.318.0 . i am looking for some other solutions but for the moment i am stuck with this, but nevertheless, SAE v1.6.318.0 is / was a major release, so it would be a major miss to not have this version covered with JContainer anyway ¯_(--)/¯.

anyway, hope for the best and that this is a possibility if there is spare time to cover this one aswell.

thx anyway, and much love

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.