Removed dependency for jansson, using my own json
This commit is contained in:
@ -12,11 +12,11 @@ option(CROSSLANG_ENABLE_BINARIES "Enable Tesses CrossLang binaries" ON)
|
|||||||
option(CROSSLANG_INSTALL_DEVELOPMENT "Enable Tesses CrossLang development files" ON)
|
option(CROSSLANG_INSTALL_DEVELOPMENT "Enable Tesses CrossLang development files" ON)
|
||||||
option(CROSSLANG_ENABLE_THREADING "Enable Tesses CrossLang threading" ON)
|
option(CROSSLANG_ENABLE_THREADING "Enable Tesses CrossLang threading" ON)
|
||||||
option(CROSSLANG_ENABLE_SQLITE "Enable sqlite (Embedded database, supports Wii)" ON)
|
option(CROSSLANG_ENABLE_SQLITE "Enable sqlite (Embedded database, supports Wii)" ON)
|
||||||
option(CROSSLANG_ENABLE_JSON "Enable JSON" ON)
|
|
||||||
option(CROSSLANG_ENABLE_PROCESS "Enable process" ON)
|
option(CROSSLANG_ENABLE_PROCESS "Enable process" ON)
|
||||||
option(CROSSLANG_ENABLE_TERMIOS "Enable termios (For changing terminal options)" ON)
|
option(CROSSLANG_ENABLE_TERMIOS "Enable termios (For changing terminal options)" ON)
|
||||||
option(CROSSLANG_ENABLE_PLATFORM_FOLDERS "Enable platform folders" ON)
|
option(CROSSLANG_ENABLE_PLATFORM_FOLDERS "Enable platform folders" ON)
|
||||||
option(CROSSLANG_SHARED_EXECUTABLES "Link with libcrosslang_shared" ON)
|
option(CROSSLANG_SHARED_EXECUTABLES "Link with libcrosslang_shared" ON)
|
||||||
|
option(CROSSLANG_FETCHCONTENT "Use fetchcontent" ON)
|
||||||
|
|
||||||
option(CROSSLANG_CUSTOM_CONSOLE "Enable custom Console" OFF)
|
option(CROSSLANG_CUSTOM_CONSOLE "Enable custom Console" OFF)
|
||||||
|
|
||||||
@ -27,21 +27,26 @@ set(CROSSLANG_ENABLE_SHARED OFF)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CROSSLANG_OFFLINE_SHELL_PACKAGE "" CACHE FILEPATH "Path to the shell package generated from https://onedev.site.tesses.net/CrossLang/CrossLangExtras")
|
set(CROSSLANG_OFFLINE_SHELL_PACKAGE "" CACHE FILEPATH "Path to the shell package generated from https://onedev.site.tesses.net/CrossLang/CrossLangExtras")
|
||||||
set(JANSSON_DIR "" CACHE PATH "Directory for Jansson")
|
|
||||||
|
if(CROSSLANG_FETCHCONTENT)
|
||||||
|
set(TESSESFRAMEWORK_ENABLE_EXAMPLES OFF)
|
||||||
|
set(TESSESFRAMEWORK_ENABLE_APPS OFF)
|
||||||
|
set(CROSSLANG_ENABLE_SHARED OFF)
|
||||||
|
set(TESSESFRAMEWORK_ENABLE_SHARED OFF)
|
||||||
|
set(CROSSLANG_SHARED_EXECUTABLES OFF)
|
||||||
|
|
||||||
|
include(FetchContent)
|
||||||
|
FetchContent_Declare(
|
||||||
|
TessesFramework
|
||||||
|
GIT_REPOSITORY https://onedev.site.tesses.net/tesses-framework.git
|
||||||
|
)
|
||||||
|
FetchContent_MakeAvailable(TessesFramework)
|
||||||
|
else()
|
||||||
find_package(TessesFramework REQUIRED)
|
find_package(TessesFramework REQUIRED)
|
||||||
|
endif()
|
||||||
function(CROSSLANG_LINK_DEPS CROSSLANG_TARGET_NAME)
|
function(CROSSLANG_LINK_DEPS CROSSLANG_TARGET_NAME)
|
||||||
if(CROSSLANG_ENABLE_PROCESS)
|
if(CROSSLANG_ENABLE_PROCESS)
|
||||||
target_compile_definitions(${CROSSLANG_TARGET_NAME} PUBLIC CROSSLANG_ENABLE_PROCESS)
|
target_compile_definitions(${CROSSLANG_TARGET_NAME} PUBLIC CROSSLANG_ENABLE_PROCESS)
|
||||||
endif()
|
|
||||||
if(CROSSLANG_ENABLE_JSON)
|
|
||||||
target_compile_definitions(${CROSSLANG_TARGET_NAME} PUBLIC CROSSLANG_ENABLE_JSON)
|
|
||||||
if(JANSSON_DIR STREQUAL "")
|
|
||||||
else()
|
|
||||||
target_include_directories(${CROSSLANG_TARGET_NAME} PUBLIC ${JANSSON_DIR}/include)
|
|
||||||
target_link_directories(${CROSSLANG_TARGET_NAME} PUBLIC ${JANSSON_DIR}/lib)
|
|
||||||
endif()
|
|
||||||
target_link_libraries(${CROSSLANG_TARGET_NAME} PUBLIC jansson)
|
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
if(CROSSLANG_ENABLE_THREADING)
|
if(CROSSLANG_ENABLE_THREADING)
|
||||||
target_compile_definitions(${CROSSLANG_TARGET_NAME} PUBLIC CROSSLANG_ENABLE_THREADING)
|
target_compile_definitions(${CROSSLANG_TARGET_NAME} PUBLIC CROSSLANG_ENABLE_THREADING)
|
||||||
@ -141,9 +146,13 @@ include(GNUInstallDirs)
|
|||||||
if(CROSSLANG_ENABLE_STATIC)
|
if(CROSSLANG_ENABLE_STATIC)
|
||||||
|
|
||||||
add_library(crosslang_static STATIC ${CROSSLANG_SOURCE})
|
add_library(crosslang_static STATIC ${CROSSLANG_SOURCE})
|
||||||
target_link_libraries(crosslang_static PUBLIC TessesFramework::tessesframework)
|
|
||||||
|
|
||||||
CROSSLANG_LINK_DEPS(crosslang_static)
|
CROSSLANG_LINK_DEPS(crosslang_static)
|
||||||
|
if(CROSSLANG_FETCHCONTENT)
|
||||||
|
target_link_libraries(crosslang_static PUBLIC tessesframework)
|
||||||
|
else()
|
||||||
|
target_link_libraries(crosslang_static PUBLIC TessesFramework::tessesframework)
|
||||||
|
endif()
|
||||||
|
|
||||||
list(APPEND TessesCrossLangLibs crosslang_static)
|
list(APPEND TessesCrossLangLibs crosslang_static)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -151,7 +160,11 @@ endif()
|
|||||||
if(CROSSLANG_ENABLE_SHARED)
|
if(CROSSLANG_ENABLE_SHARED)
|
||||||
add_library(crosslang_shared SHARED ${CROSSLANG_SOURCE})
|
add_library(crosslang_shared SHARED ${CROSSLANG_SOURCE})
|
||||||
CROSSLANG_LINK_DEPS(crosslang_shared)
|
CROSSLANG_LINK_DEPS(crosslang_shared)
|
||||||
|
if(CROSSLANG_FETCHCONTENT)
|
||||||
|
target_link_libraries(crosslang_shared PUBLIC tessesframework_shared)
|
||||||
|
else()
|
||||||
target_link_libraries(crosslang_shared PUBLIC TessesFramework::tessesframework_shared)
|
target_link_libraries(crosslang_shared PUBLIC TessesFramework::tessesframework_shared)
|
||||||
|
endif()
|
||||||
list(APPEND TessesCrossLangLibs crosslang_shared)
|
list(APPEND TessesCrossLangLibs crosslang_shared)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -248,6 +261,26 @@ CROSSLANG_LINK_DEPS(crossdump)
|
|||||||
CROSSLANG_LINK_DEPS(crossarchiveextract)
|
CROSSLANG_LINK_DEPS(crossarchiveextract)
|
||||||
CROSSLANG_LINK_DEPS(crossarchivecreate)
|
CROSSLANG_LINK_DEPS(crossarchivecreate)
|
||||||
CROSSLANG_LINK_DEPS(crossthumbnailer)
|
CROSSLANG_LINK_DEPS(crossthumbnailer)
|
||||||
|
|
||||||
|
if(CROSSLANG_FETCHCONTENT)
|
||||||
|
target_link_libraries(crossc PUBLIC tessesframework)
|
||||||
|
target_link_libraries(crossvm PUBLIC tessesframework)
|
||||||
|
target_link_libraries(crossint PUBLIC tessesframework)
|
||||||
|
target_link_libraries(crosslang PUBLIC tessesframework)
|
||||||
|
target_link_libraries(crossdump PUBLIC tessesframework)
|
||||||
|
target_link_libraries(crossarchiveextract PUBLIC tessesframework)
|
||||||
|
target_link_libraries(crossarchivecreate PUBLIC tessesframework)
|
||||||
|
target_link_libraries(crossthumbnailer PUBLIC tessesframework)
|
||||||
|
else()
|
||||||
|
target_link_libraries(crossc PUBLIC TessesFramework::tessesframework)
|
||||||
|
target_link_libraries(crossvm PUBLIC TessesFramework::tessesframework)
|
||||||
|
target_link_libraries(crossint PUBLIC TessesFramework::tessesframework)
|
||||||
|
target_link_libraries(crosslang PUBLIC TessesFramework::tessesframework)
|
||||||
|
target_link_libraries(crossdump PUBLIC TessesFramework::tessesframework)
|
||||||
|
target_link_libraries(crossarchiveextract PUBLIC TessesFramework::tessesframework)
|
||||||
|
target_link_libraries(crossarchivecreate PUBLIC TessesFramework::tessesframework)
|
||||||
|
target_link_libraries(crossthumbnailer PUBLIC TessesFramework::tessesframework)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
install(TARGETS crossc DESTINATION bin)
|
install(TARGETS crossc DESTINATION bin)
|
||||||
install(TARGETS crossvm DESTINATION bin)
|
install(TARGETS crossvm DESTINATION bin)
|
||||||
|
|||||||
@ -4,11 +4,10 @@ Tesses Cross Language
|
|||||||

|

|
||||||
|
|
||||||
## What is required to build this project
|
## What is required to build this project
|
||||||
- [TessesFramework](https://onedev.site.tesses.net/tesses-framework)
|
- [TessesFramework](https://onedev.site.tesses.net/tesses-framework) (if you turn CROSSLANG_FETCHCONTENT off otherwise it will be grabbed automaticly)
|
||||||
- Jansson (but can be turned off but is strongly recommended otherwise many programs will not work)
|
|
||||||
- CMake
|
- CMake
|
||||||
|
|
||||||
## What libraries have I embeaded from other people
|
## What libraries have I embeded from other people
|
||||||
- [HodwardHinnart's date]() (in folder src/HodwardHinnart_date, modified tz.cpp to point to correct header)
|
- [HodwardHinnart's date]() (in folder src/HodwardHinnart_date, modified tz.cpp to point to correct header)
|
||||||
- [Sqlite]() (in folder src/sqlite also uses demo VFS (at least on Wii))
|
- [Sqlite]() (in folder src/sqlite also uses demo VFS (at least on Wii))
|
||||||
- [Sago's platform_folders]() (in folder src/sago)
|
- [Sago's platform_folders]() (in folder src/sago)
|
||||||
@ -26,7 +25,7 @@ Tesses Cross Language
|
|||||||
```
|
```
|
||||||
|
|
||||||
## To Install
|
## To Install
|
||||||
- [Follow TessesFramework setup](https://onedev.site.tesses.net/tesses-framework)
|
- Install [mbedtls](https://github.com/Mbed-TLS/mbedtls) (use sudo apt install libmbedtls-dev on debian) for TessesFramework
|
||||||
- Follow the commands bellow
|
- Follow the commands bellow
|
||||||
|
|
||||||
## Run these commands to install crosslang (or use binaries from [here](https://crosslang.tesseslanguage.com/download/))
|
## Run these commands to install crosslang (or use binaries from [here](https://crosslang.tesseslanguage.com/download/))
|
||||||
|
|||||||
@ -844,7 +844,7 @@ class GC {
|
|||||||
class TDictionary : public THeapObject
|
class TDictionary : public THeapObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::unordered_map<std::string,TObject> items;
|
std::map<std::string,TObject> items;
|
||||||
static TDictionary* Create(GCList* gc);
|
static TDictionary* Create(GCList* gc);
|
||||||
static TDictionary* Create(GCList& gc);
|
static TDictionary* Create(GCList& gc);
|
||||||
template<typename Itterator>
|
template<typename Itterator>
|
||||||
@ -1237,7 +1237,7 @@ class GC {
|
|||||||
class TDictionaryEnumerator : public TEnumerator
|
class TDictionaryEnumerator : public TEnumerator
|
||||||
{
|
{
|
||||||
bool hasStarted;
|
bool hasStarted;
|
||||||
std::unordered_map<std::string, Tesses::CrossLang::TObject>::iterator ittr;
|
std::map<std::string, Tesses::CrossLang::TObject>::iterator ittr;
|
||||||
TDictionary* dict;
|
TDictionary* dict;
|
||||||
public:
|
public:
|
||||||
static TDictionaryEnumerator* Create(GCList& ls, TDictionary* dict);
|
static TDictionaryEnumerator* Create(GCList& ls, TDictionary* dict);
|
||||||
|
|||||||
@ -1,17 +1,10 @@
|
|||||||
/*
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "CrossLang.hpp"
|
#include "CrossLang.hpp"
|
||||||
|
using namespace Tesses::Framework::Serialization::Json;
|
||||||
#if defined(CROSSLANG_ENABLE_JSON)
|
|
||||||
#include <jansson.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace Tesses::CrossLang
|
namespace Tesses::CrossLang
|
||||||
{
|
{
|
||||||
|
|
||||||
#if defined(CROSSLANG_ENABLE_JSON)
|
|
||||||
static bool IsValidForJson(TObject v)
|
static bool IsValidForJson(TObject v)
|
||||||
{
|
{
|
||||||
if(std::holds_alternative<std::nullptr_t>(v)) return true;
|
if(std::holds_alternative<std::nullptr_t>(v)) return true;
|
||||||
@ -37,17 +30,13 @@ namespace Tesses::CrossLang
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
static json_t* JsonSerialize(TObject v)
|
static JToken JsonSerialize(TObject v)
|
||||||
{
|
{
|
||||||
if(std::holds_alternative<std::nullptr_t>(v)) return json_null();
|
if(std::holds_alternative<std::nullptr_t>(v)) return nullptr;
|
||||||
if(std::holds_alternative<int64_t>(v)) return json_integer(std::get<int64_t>(v));
|
if(std::holds_alternative<int64_t>(v)) return std::get<int64_t>(v);
|
||||||
if(std::holds_alternative<double>(v)) return json_real(std::get<double>(v));
|
if(std::holds_alternative<double>(v)) return std::get<double>(v);
|
||||||
if(std::holds_alternative<bool>(v)) return json_boolean(std::get<bool>(v));
|
if(std::holds_alternative<bool>(v)) return std::get<bool>(v);
|
||||||
if(std::holds_alternative<std::string>(v))
|
if(std::holds_alternative<std::string>(v)) return std::get<std::string>(v);
|
||||||
{
|
|
||||||
std::string txt = std::get<std::string>(v);
|
|
||||||
return json_stringn(txt.c_str(),txt.size());
|
|
||||||
}
|
|
||||||
if(std::holds_alternative<THeapObjectHolder>(v))
|
if(std::holds_alternative<THeapObjectHolder>(v))
|
||||||
{
|
{
|
||||||
auto obj = std::get<THeapObjectHolder>(v).obj;
|
auto obj = std::get<THeapObjectHolder>(v).obj;
|
||||||
@ -56,29 +45,29 @@ namespace Tesses::CrossLang
|
|||||||
|
|
||||||
if(ls != nullptr)
|
if(ls != nullptr)
|
||||||
{
|
{
|
||||||
json_t* items=json_array();
|
JArray items;
|
||||||
for(int64_t i = 0; i < ls->Count(); i++)
|
for(int64_t i = 0; i < ls->Count(); i++)
|
||||||
{
|
{
|
||||||
auto val = ls->Get(i);
|
auto val = ls->Get(i);
|
||||||
if(IsValidForJson(val))
|
if(IsValidForJson(val))
|
||||||
json_array_append_new(items,JsonSerialize(val));
|
items.Add(JsonSerialize(val));
|
||||||
}
|
}
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dict != nullptr)
|
if(dict != nullptr)
|
||||||
{
|
{
|
||||||
json_t* obj = json_object();
|
JObject obj;
|
||||||
for(auto item : dict->items)
|
for(auto item : dict->items)
|
||||||
{
|
{
|
||||||
if(IsValidForJson(item.second))
|
if(IsValidForJson(item.second))
|
||||||
json_object_set_new(obj, item.first.c_str(),JsonSerialize(item.second));
|
obj.SetValue(item.first,JsonSerialize(item.second));
|
||||||
}
|
}
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return json_null();
|
return nullptr;
|
||||||
}
|
}
|
||||||
static TObject JsonEncode(GCList& ls2, std::vector<TObject> args)
|
static TObject JsonEncode(GCList& ls2, std::vector<TObject> args)
|
||||||
{
|
{
|
||||||
@ -87,32 +76,30 @@ namespace Tesses::CrossLang
|
|||||||
bool indent = (args.size() == 2 && std::holds_alternative<bool>(args[1]) && std::get<bool>(args[1]));
|
bool indent = (args.size() == 2 && std::holds_alternative<bool>(args[1]) && std::get<bool>(args[1]));
|
||||||
|
|
||||||
auto json = JsonSerialize(args[0]);
|
auto json = JsonSerialize(args[0]);
|
||||||
char* txt = json_dumps(json, indent ? JSON_INDENT(4) : 0);
|
|
||||||
std::string str = txt;
|
return Json::Encode(json,indent);
|
||||||
free(txt);
|
|
||||||
json_decref(json);
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
return "null";
|
return "null";
|
||||||
}
|
}
|
||||||
static TObject JsonDeserialize(GCList& ls2,json_t* json)
|
static TObject JsonDeserialize(GCList& ls2,JToken json)
|
||||||
{
|
{
|
||||||
if(json == nullptr) return nullptr;
|
if(std::holds_alternative<JUndefined>(json)) return nullptr;
|
||||||
if(json_is_null(json)) return nullptr;
|
if(std::holds_alternative<std::nullptr_t>(json)) return nullptr;
|
||||||
if(json_is_true(json)) return true;
|
bool b;
|
||||||
if(json_is_false(json)) return false;
|
int64_t _i64;
|
||||||
if(json_is_integer(json)) return (int64_t)json_integer_value(json);
|
double _f64;
|
||||||
if(json_is_real(json)) return json_real_value(json);
|
std::string str;
|
||||||
if(json_is_string(json))
|
JArray arr;
|
||||||
{
|
JObject obj;
|
||||||
return std::string(json_string_value(json),json_string_length(json));
|
if(TryGetJToken(json,b)) return b;
|
||||||
}
|
if(TryGetJToken(json,_i64)) return _i64;
|
||||||
if(json_is_array(json))
|
if(TryGetJToken(json,_f64)) return _f64;
|
||||||
|
if(TryGetJToken(json,str)) return str;
|
||||||
|
if(TryGetJToken(json,arr))
|
||||||
{
|
{
|
||||||
TList* ls = TList::Create(ls2);
|
TList* ls = TList::Create(ls2);
|
||||||
json_t* item;
|
|
||||||
size_t index;
|
for(auto& item : arr)
|
||||||
json_array_foreach(json,index, item)
|
|
||||||
{
|
{
|
||||||
auto itemRes = JsonDeserialize(ls2,item);
|
auto itemRes = JsonDeserialize(ls2,item);
|
||||||
ls2.GetGC()->BarrierBegin();
|
ls2.GetGC()->BarrierBegin();
|
||||||
@ -121,20 +108,18 @@ namespace Tesses::CrossLang
|
|||||||
}
|
}
|
||||||
return ls;
|
return ls;
|
||||||
}
|
}
|
||||||
if(json_is_object(json))
|
if(TryGetJToken(json,obj))
|
||||||
{
|
{
|
||||||
|
|
||||||
TDictionary* dict = TDictionary::Create(ls2);
|
TDictionary* dict = TDictionary::Create(ls2);
|
||||||
void* n;
|
|
||||||
const char* key;
|
|
||||||
size_t len;
|
|
||||||
json_t* value;
|
|
||||||
|
|
||||||
json_object_foreach_safe(json,n,key,value)
|
for(auto& item : obj)
|
||||||
{
|
{
|
||||||
auto itemRes = JsonDeserialize(ls2,value);
|
|
||||||
|
auto itemRes = JsonDeserialize(ls2,item.second);
|
||||||
ls2.GetGC()->BarrierBegin();
|
ls2.GetGC()->BarrierBegin();
|
||||||
dict->SetValue(std::string(key),itemRes);
|
dict->SetValue(item.first,itemRes);
|
||||||
ls2.GetGC()->BarrierEnd();
|
ls2.GetGC()->BarrierEnd();
|
||||||
}
|
}
|
||||||
return dict;
|
return dict;
|
||||||
@ -145,46 +130,26 @@ namespace Tesses::CrossLang
|
|||||||
{
|
{
|
||||||
if(args.size() > 0 && std::holds_alternative<std::string>(args[0]))
|
if(args.size() > 0 && std::holds_alternative<std::string>(args[0]))
|
||||||
{
|
{
|
||||||
std::string jsonText = std::get<std::string>(args[0]);
|
|
||||||
json_t* json = json_loadb(jsonText.c_str(), jsonText.size(),0,NULL);
|
|
||||||
|
|
||||||
auto res = JsonDeserialize(ls2, json);
|
|
||||||
json_decref(json);
|
return JsonDeserialize(ls2, Json::Decode(std::get<std::string>(args[0])));
|
||||||
return res;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return Undefined();
|
return Undefined();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
std::string Json_Encode(TObject o,bool indent)
|
std::string Json_Encode(TObject o,bool indent)
|
||||||
{
|
{
|
||||||
#if defined(CROSSLANG_ENABLE_JSON)
|
return Json::Encode(JsonSerialize(o),indent);
|
||||||
auto json = JsonSerialize(o);
|
|
||||||
char* txt = json_dumps(json, indent ? JSON_INDENT(4) : 0);
|
|
||||||
std::string str = txt;
|
|
||||||
free(txt);
|
|
||||||
json_decref(json);
|
|
||||||
return str;
|
|
||||||
#else
|
|
||||||
return "";
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
TObject Json_Decode(GCList ls,std::string str)
|
TObject Json_Decode(GCList ls,std::string str)
|
||||||
{
|
{
|
||||||
#if defined(CROSSLANG_ENABLE_JSON)
|
return JsonDeserialize(ls,Json::Decode(str));
|
||||||
json_t* json = json_loadb(str.c_str(), str.size(),0,NULL);
|
|
||||||
auto res = JsonDeserialize(ls,json);
|
|
||||||
json_decref(json);
|
|
||||||
return res;
|
|
||||||
#else
|
|
||||||
return nullptr;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
void TStd::RegisterJson(GC* gc,TRootEnvironment* env)
|
void TStd::RegisterJson(GC* gc,TRootEnvironment* env)
|
||||||
{
|
{
|
||||||
|
|
||||||
env->permissions.canRegisterJSON=true;
|
env->permissions.canRegisterJSON=true;
|
||||||
#if defined(CROSSLANG_ENABLE_JSON)
|
|
||||||
GCList ls(gc);
|
GCList ls(gc);
|
||||||
TDictionary* dict = TDictionary::Create(ls);
|
TDictionary* dict = TDictionary::Create(ls);
|
||||||
dict->DeclareFunction(gc, "Decode","Deserialize Json",{"Json string"},JsonDecode);
|
dict->DeclareFunction(gc, "Decode","Deserialize Json",{"Json string"},JsonDecode);
|
||||||
@ -194,7 +159,6 @@ namespace Tesses::CrossLang
|
|||||||
gc->BarrierBegin();
|
gc->BarrierBegin();
|
||||||
env->DeclareVariable("Json", dict);
|
env->DeclareVariable("Json", dict);
|
||||||
gc->BarrierEnd();
|
gc->BarrierEnd();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user