From 173434f92ea658f8c4e0186b9cd04d0c5fc51d58 Mon Sep 17 00:00:00 2001 From: aardappel Date: Sun, 4 Mar 2018 15:05:24 -0800 Subject: [PATCH] Linux fixes for script system. --- .gitignore | 1 + CMakeLists.txt | 2 +- lobster/src/builtins.cpp | 14 +++++++++----- lobster/src/lobster/geom.h | 2 +- lobster/src/lobster/stdafx.h | 7 +++++++ src/Makefile | 13 +++++++++++-- src/TreeSheets.creator.user | 2 +- src/lobster_impl.cpp | 4 ++-- src/stdafx.h | 7 ++++++- src/treesheets_impl.h | 2 +- 10 files changed, 40 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index bf1c5d18..69b8e13e 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ osx/TreeSheets/TreeSheets.xcodeproj/project.xcworkspace/xcuserdata/ *.ilk *.pdb *.bak +**/*.o TreeSheets/\.vs/treesheets/v15/ diff --git a/CMakeLists.txt b/CMakeLists.txt index c00eb7cb..ee791d46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,7 @@ cmake_minimum_required(VERSION 3.1) project(treesheets) -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 14) find_package(wxWidgets REQUIRED aui adv core xml net) include(${wxWidgets_USE_FILE}) diff --git a/lobster/src/builtins.cpp b/lobster/src/builtins.cpp index 2044e403..025a7476 100644 --- a/lobster/src/builtins.cpp +++ b/lobster/src/builtins.cpp @@ -547,10 +547,12 @@ void AddBuiltins() { for (auto p = s.sval()->str();;) { auto loc = strpbrk(p, set.sval()->str()); if (loc) { - out += string_view(p, loc - p); - out += prefix.sval()->strv(); + out.append(p, loc); + auto presv = prefix.sval()->strv(); + out.append(presv.data(), presv.size()); out += *loc++; - out += postfix.sval()->strv(); + auto postsv = postfix.sval()->strv(); + out.append(postsv.data(), postsv.size()); p = loc; } else { out += p; @@ -568,9 +570,11 @@ void AddBuiltins() { STARTDECL(concatstring) (Value &v, Value &sep) { string s; + auto sepsv = sep.sval()->strv(); for (intp i = 0; i < v.vval()->len; i++) { - if (i) s += sep.sval()->strv(); - s += v.vval()->At(i).sval()->strv(); + if (i) s.append(sepsv.data(), sepsv.size()); + auto esv = v.vval()->At(i).sval()->strv(); + s.append(esv.data(), esv.size()); } v.DECRT(); sep.DECRT(); diff --git a/lobster/src/lobster/geom.h b/lobster/src/lobster/geom.h index 054356f3..938ddf21 100644 --- a/lobster/src/lobster/geom.h +++ b/lobster/src/lobster/geom.h @@ -101,7 +101,7 @@ template struct vec : basevec { vec xyz() const { assert(N == 4); return vec(c); } vec xy() const { assert(N == 3); return vec(c); } - pair pair() const { assert(N == 2); return make_pair(x, y); } + pair to_pair() const { assert(N == 2); return make_pair(x, y); } vec operator+(const vec &v) const { DOVECR(c[i] + v[i]); } vec operator-(const vec &v) const { DOVECR(c[i] - v[i]); } diff --git a/lobster/src/lobster/stdafx.h b/lobster/src/lobster/stdafx.h index 3253abca..168d5a22 100644 --- a/lobster/src/lobster/stdafx.h +++ b/lobster/src/lobster/stdafx.h @@ -56,6 +56,13 @@ #include #include +#if __has_include("string_view") + #include +#else + #include + namespace std { using namespace std::experimental; } +#endif + using namespace std; typedef unsigned char uchar; diff --git a/src/Makefile b/src/Makefile index 793d8acf..5e23c112 100644 --- a/src/Makefile +++ b/src/Makefile @@ -6,7 +6,7 @@ WX_CXXFLAGS= `$(WX_CONFIG) --cxxflags` WX_LIBS= `$(WX_CONFIG) --libs aui adv core xml net` PACKAGE_VERSION?= __DATE__ CXX?= c++ -CXXFLAGS+= -DPACKAGE_VERSION=$(PACKAGE_VERSION) -std=c++11 $(WX_CXXFLAGS) +CXXFLAGS+= -DPACKAGE_VERSION=$(PACKAGE_VERSION) -std=c++1y $(WX_CXXFLAGS) -I ../lobster/include -I ../lobster/src LDFLAGS+= $(WX_LIBS) ARCH= $(firstword $(shell uname -m)) @@ -18,7 +18,16 @@ DIST_CMD?= tar DIST_ARGS?= -caf APPNAME= treesheets -SRCS= main.cpp +SRCS= main.cpp \ + lobster_impl.cpp \ + ../lobster/src/builtins.cpp \ + ../lobster/src/compiler.cpp \ + ../lobster/src/file.cpp \ + ../lobster/src/lobsterreader.cpp \ + ../lobster/src/platform.cpp \ + ../lobster/src/vm.cpp \ + ../lobster/src/vmdata.cpp \ + ../lobster/src/vmlog.cpp OBJS= $(SRCS:.cpp=.o) release: CXXFLAGS+= -O3 diff --git a/src/TreeSheets.creator.user b/src/TreeSheets.creator.user index dedea08b..7f120e73 100644 --- a/src/TreeSheets.creator.user +++ b/src/TreeSheets.creator.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/src/lobster_impl.cpp b/src/lobster_impl.cpp index 29f54bde..e9817acb 100644 --- a/src/lobster_impl.cpp +++ b/src/lobster_impl.cpp @@ -110,14 +110,14 @@ void AddTreeSheets() { "completely empty, or the entire grid."); STARTDECL(ts_set_background_color) (Value &col) { - si->SetBackgroundColor(*(uint *)quantizec(ValueDecToF<3>(col)).data()); + si->SetBackgroundColor(*(uint *)quantizec(ValueDecToFLT<3>(col)).data()); return Value(); } ENDDECL1(ts_set_background_color, "col", "F}:4", "", "sets the background color of the current cell"); STARTDECL(ts_set_text_color) (Value &col) { - si->SetTextColor(*(uint *)quantizec(ValueDecToF<3>(col)).data()); + si->SetTextColor(*(uint *)quantizec(ValueDecToFLT<3>(col)).data()); return Value(); } ENDDECL1(ts_set_text_color, "col", "F}:4", "", diff --git a/src/stdafx.h b/src/stdafx.h index c93eb13f..852abf8a 100755 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -70,7 +70,12 @@ WX_DECLARE_STRING_HASH_MAP(bool, wxHashMapBool); #include #include -#include +#if __has_include("string_view") + #include +#else + #include + namespace std { using namespace std::experimental; } +#endif #include diff --git a/src/treesheets_impl.h b/src/treesheets_impl.h index 391f8993..3d0eb425 100644 --- a/src/treesheets_impl.h +++ b/src/treesheets_impl.h @@ -13,7 +13,7 @@ struct TreeSheetsScriptImpl : public ScriptInterface { bool dump_builtins = false; #ifdef _DEBUG - dump_builtins = true; + //dump_builtins = true; #endif auto err = RunLobster(filename, nullptr, dump_builtins);