diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e41a0bb09..59f5234490 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1655,7 +1655,6 @@ SET(DAS_RELEASE_AST_INCLUDE include/daScript/ast/ast_serializer.h include/daScript/ast/ast_simulate.h include/daScript/ast/ast_typedecl.h - include/daScript/ast/ast_typefactory_bind.h include/daScript/ast/ast_typefactory.h include/daScript/ast/ast_visitor.h include/daScript/ast/ast_aot_cpp.h diff --git a/daslib/aot_cpp.das b/daslib/aot_cpp.das index 8e3e21fbd3..4ec1984e3d 100644 --- a/daslib/aot_cpp.das +++ b/daslib/aot_cpp.das @@ -3923,7 +3923,7 @@ class public CppAot : AstVisitor { return argType.isVoidPointer ^^ passType.isVoidPointer; } def needStringCast(func : Function?; arg : TypeDeclPtr) { - return func.moreFlags.needStringCast && arg.isString && !arg.flags.ref; + return arg.isString && !arg.flags.ref; } def CallFunc_preVisitCallArg(call : ExprCallFunc?; arg : ExpressionPtr; is_last : bool) { if (call.func.moreFlags.propertyFunction) return ; @@ -3962,7 +3962,7 @@ class public CppAot : AstVisitor { if (isPolicyBasedCallFunc(call) && policyArgNeedCast(call.func.result, argType)) { write(*ss, "cast<{describeCppType(argType,DescribeConfig(skip_ref=true,skip_const=true,cross_platform=cross_platform))}>::from("); } - if (needStringCast(call.func, argType)) { + if (needStringCast(call.func, funArgType)) { write(*ss, "(das_string_cast("); } } diff --git a/examples/daspkg/packages/daspkg-example-cpp/src/module_counter.cpp b/examples/daspkg/packages/daspkg-example-cpp/src/module_counter.cpp index 66e226116f..a483dc4e69 100644 --- a/examples/daspkg/packages/daspkg-example-cpp/src/module_counter.cpp +++ b/examples/daspkg/packages/daspkg-example-cpp/src/module_counter.cpp @@ -1,6 +1,5 @@ #include "daScript/daScript.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" using namespace das; diff --git a/include/daScript/ast/ast.h b/include/daScript/ast/ast.h index 92eab8f5f7..13d8641512 100644 --- a/include/daScript/ast/ast.h +++ b/include/daScript/ast/ast.h @@ -920,7 +920,6 @@ namespace das union { struct { bool macroFunction : 1; - bool needStringCast : 1; bool aotHashDeppendsOnArguments : 1; bool lateInit : 1; bool requestJit : 1; diff --git a/include/daScript/ast/ast_serializer.h b/include/daScript/ast/ast_serializer.h index f1cd6fc756..23dd0f0db2 100644 --- a/include/daScript/ast/ast_serializer.h +++ b/include/daScript/ast/ast_serializer.h @@ -252,7 +252,7 @@ namespace das { AstSerializer & serializeModule ( Module & module, bool already_exists ); static constexpr uint32_t getVersion () { - return 118; // 118: per-record macro file dependencies (module cache re-validates them) + return 199; // 199: MoreFunctionFlags lost needStringCast, so the flag bits shifted } void serializeProgram ( ProgramPtr program, ModuleGroup & libGroup ) noexcept; diff --git a/include/daScript/ast/ast_typedecl.h b/include/daScript/ast/ast_typedecl.h index a580ad8b63..93eadae28b 100644 --- a/include/daScript/ast/ast_typedecl.h +++ b/include/daScript/ast/ast_typedecl.h @@ -722,6 +722,14 @@ namespace das { } }; + // this binds any unspecified 'callback' thing to 'void *' + template + struct typeFactory { + static TypeDeclPtr make(const ModuleLibrary & library ) { + return typeFactory::make(library); + }; + }; + template struct typeFactory { static ___noinline TypeDeclPtr make(const ModuleLibrary & lib) { diff --git a/include/daScript/ast/ast_typefactory_bind.h b/include/daScript/ast/ast_typefactory_bind.h deleted file mode 100644 index e535921b85..0000000000 --- a/include/daScript/ast/ast_typefactory_bind.h +++ /dev/null @@ -1,41 +0,0 @@ -#pragma once - -#include "ast_typefactory.h" - -namespace das { - // note: - // this binds any unspecified 'callback' thing to 'void *' - // generally this is included with generated headers - template - struct typeFactory { - static TypeDeclPtr make(const ModuleLibrary & library ) { - return typeFactory::make(library); - }; - }; - - // note: - // this is here to pass strings safely - template <> - struct cast_arg { - static __forceinline char * to ( Context & ctx, SimNode * node ) { - char * res = node->evalPtr(ctx); - return res ? res : ((char *)""); - } - }; - - template <> - struct cast_arg { - static __forceinline char * to ( Context & ctx, SimNode * node ) { - char * res = node->evalPtr(ctx); - return res ? res : ((char *)""); - } - }; - - template <> - struct cast_arg { - static __forceinline string to ( Context & ctx, SimNode * node ) { - auto res = (das::string *) node->evalPtr(ctx); - return *res; - } - }; -} diff --git a/include/daScript/simulate/interop.h b/include/daScript/simulate/interop.h index c10a4e143d..336f566b5b 100644 --- a/include/daScript/simulate/interop.h +++ b/include/daScript/simulate/interop.h @@ -12,6 +12,22 @@ namespace das } }; + template <> + struct cast_arg { + static __forceinline char * to ( Context & ctx, SimNode * node ) { + char * res = node->evalPtr(ctx); + return res ? res : ((char *)""); + } + }; + + template <> + struct cast_arg { + static __forceinline char * to ( Context & ctx, SimNode * node ) { + char * res = node->evalPtr(ctx); + return res ? res : ((char *)""); + } + }; + template <> struct cast_arg { static __forceinline Context * to ( Context & ctx, SimNode * ) { diff --git a/modules/dasAudio/src/dasAudio.cpp b/modules/dasAudio/src/dasAudio.cpp index 59e145d544..fc5dfa5e3c 100644 --- a/modules/dasAudio/src/dasAudio.cpp +++ b/modules/dasAudio/src/dasAudio.cpp @@ -2,7 +2,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include "daScript/simulate/bind_enum.h" diff --git a/modules/dasClangBind/cbind/cbind_boost.das b/modules/dasClangBind/cbind/cbind_boost.das index c21ebcdc90..74e4b53713 100644 --- a/modules/dasClangBind/cbind/cbind_boost.das +++ b/modules/dasClangBind/cbind/cbind_boost.das @@ -1711,7 +1711,6 @@ class CppGenBind : AnyGenBind { fwrite(func_file, "#include \"daScript/ast/ast.h\"\n") fwrite(func_file, "#include \"daScript/ast/ast_interop.h\"\n") fwrite(func_file, "#include \"daScript/ast/ast_handle.h\"\n") - fwrite(func_file, "#include \"daScript/ast/ast_typefactory_bind.h\"\n") fwrite(func_file, "#include \"daScript/simulate/bind_enum.h\"\n") fwrite(func_file, "#include \"{bind_module}.h\"\n") fwrite(func_file, "#include \"need_{bind_module}.h\"\n") @@ -1747,7 +1746,6 @@ class CppGenBind : AnyGenBind { module_cpp_file |> fwrite("#include \"daScript/ast/ast.h\"\n") module_cpp_file |> fwrite("#include \"daScript/ast/ast_interop.h\"\n") module_cpp_file |> fwrite("#include \"daScript/ast/ast_handle.h\"\n") - module_cpp_file |> fwrite("#include \"daScript/ast/ast_typefactory_bind.h\"\n") module_cpp_file |> fwrite("#include \"daScript/simulate/bind_enum.h\"\n") module_cpp_file |> fwrite("#include \"{bind_module}.h\"\n") module_cpp_file |> fwrite("#include \"need_{bind_module}.h\"\n") diff --git a/modules/dasClangBind/src/dasClangBind.cpp b/modules/dasClangBind/src/dasClangBind.cpp index 60e7dc4518..252cba8ae8 100644 --- a/modules/dasClangBind/src/dasClangBind.cpp +++ b/modules/dasClangBind/src/dasClangBind.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_1.cpp b/modules/dasClangBind/src/dasClangBind.func_1.cpp index 5075dffeae..1d9eb4a5b8 100644 --- a/modules/dasClangBind/src/dasClangBind.func_1.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_1.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_10.cpp b/modules/dasClangBind/src/dasClangBind.func_10.cpp index 8dff5a78d1..1f62f7f0a4 100644 --- a/modules/dasClangBind/src/dasClangBind.func_10.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_10.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_11.cpp b/modules/dasClangBind/src/dasClangBind.func_11.cpp index 91bda65b32..8f263e9b42 100644 --- a/modules/dasClangBind/src/dasClangBind.func_11.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_11.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_12.cpp b/modules/dasClangBind/src/dasClangBind.func_12.cpp index 51215e30fe..90f0ad258f 100644 --- a/modules/dasClangBind/src/dasClangBind.func_12.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_12.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_13.cpp b/modules/dasClangBind/src/dasClangBind.func_13.cpp index dc571a584b..1330c863d3 100644 --- a/modules/dasClangBind/src/dasClangBind.func_13.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_13.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_14.cpp b/modules/dasClangBind/src/dasClangBind.func_14.cpp index 7b25756725..7e4ee0b255 100644 --- a/modules/dasClangBind/src/dasClangBind.func_14.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_14.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_15.cpp b/modules/dasClangBind/src/dasClangBind.func_15.cpp index 4b954e28bf..a320ace197 100644 --- a/modules/dasClangBind/src/dasClangBind.func_15.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_15.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_16.cpp b/modules/dasClangBind/src/dasClangBind.func_16.cpp index f906592bb3..6b1bb8c5c1 100644 --- a/modules/dasClangBind/src/dasClangBind.func_16.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_16.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_17.cpp b/modules/dasClangBind/src/dasClangBind.func_17.cpp index 3b5793b210..fa822ced00 100644 --- a/modules/dasClangBind/src/dasClangBind.func_17.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_17.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_18.cpp b/modules/dasClangBind/src/dasClangBind.func_18.cpp index 1e339cc1a6..51f7486897 100644 --- a/modules/dasClangBind/src/dasClangBind.func_18.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_18.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_2.cpp b/modules/dasClangBind/src/dasClangBind.func_2.cpp index 325066cb80..db243fa4a1 100644 --- a/modules/dasClangBind/src/dasClangBind.func_2.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_2.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_3.cpp b/modules/dasClangBind/src/dasClangBind.func_3.cpp index 4115d1be0a..cb4fd07404 100644 --- a/modules/dasClangBind/src/dasClangBind.func_3.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_3.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_4.cpp b/modules/dasClangBind/src/dasClangBind.func_4.cpp index ffb50ae32a..8fe322622c 100644 --- a/modules/dasClangBind/src/dasClangBind.func_4.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_4.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_5.cpp b/modules/dasClangBind/src/dasClangBind.func_5.cpp index 8168e887b7..2421b93a06 100644 --- a/modules/dasClangBind/src/dasClangBind.func_5.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_5.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_6.cpp b/modules/dasClangBind/src/dasClangBind.func_6.cpp index 34657f4eaa..74636735b0 100644 --- a/modules/dasClangBind/src/dasClangBind.func_6.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_6.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_7.cpp b/modules/dasClangBind/src/dasClangBind.func_7.cpp index 10e3bceda5..371006e008 100644 --- a/modules/dasClangBind/src/dasClangBind.func_7.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_7.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_8.cpp b/modules/dasClangBind/src/dasClangBind.func_8.cpp index f3c24cfa2c..c0b7a66c87 100644 --- a/modules/dasClangBind/src/dasClangBind.func_8.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_8.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.func_9.cpp b/modules/dasClangBind/src/dasClangBind.func_9.cpp index 14e4e21b52..abf80f60ed 100644 --- a/modules/dasClangBind/src/dasClangBind.func_9.cpp +++ b/modules/dasClangBind/src/dasClangBind.func_9.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasClangBind/src/dasClangBind.main.cpp b/modules/dasClangBind/src/dasClangBind.main.cpp index f9cfa16def..18840bb3dd 100644 --- a/modules/dasClangBind/src/dasClangBind.main.cpp +++ b/modules/dasClangBind/src/dasClangBind.main.cpp @@ -2,7 +2,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasClangBind.h" #include "need_dasClangBind.h" diff --git a/modules/dasGlfw/src/dasGLFW.cpp b/modules/dasGlfw/src/dasGLFW.cpp index 6b8c48b681..b97e7b88dc 100644 --- a/modules/dasGlfw/src/dasGLFW.cpp +++ b/modules/dasGlfw/src/dasGLFW.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasGLFW.h" #include "need_dasGLFW.h" diff --git a/modules/dasGlfw/src/dasGLFW.func_1.cpp b/modules/dasGlfw/src/dasGLFW.func_1.cpp index 708c2206a3..ae6e147c96 100644 --- a/modules/dasGlfw/src/dasGLFW.func_1.cpp +++ b/modules/dasGlfw/src/dasGLFW.func_1.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasGLFW.h" #include "need_dasGLFW.h" diff --git a/modules/dasGlfw/src/dasGLFW.func_2.cpp b/modules/dasGlfw/src/dasGLFW.func_2.cpp index f7afe92174..a9dbba546f 100644 --- a/modules/dasGlfw/src/dasGLFW.func_2.cpp +++ b/modules/dasGlfw/src/dasGLFW.func_2.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasGLFW.h" #include "need_dasGLFW.h" diff --git a/modules/dasGlfw/src/dasGLFW.func_3.cpp b/modules/dasGlfw/src/dasGLFW.func_3.cpp index 50336ac83a..621e31c531 100644 --- a/modules/dasGlfw/src/dasGLFW.func_3.cpp +++ b/modules/dasGlfw/src/dasGLFW.func_3.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasGLFW.h" #include "need_dasGLFW.h" diff --git a/modules/dasGlfw/src/dasGLFW.func_4.cpp b/modules/dasGlfw/src/dasGLFW.func_4.cpp index a5e280ac91..103d507aa0 100644 --- a/modules/dasGlfw/src/dasGLFW.func_4.cpp +++ b/modules/dasGlfw/src/dasGLFW.func_4.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasGLFW.h" #include "need_dasGLFW.h" diff --git a/modules/dasGlfw/src/dasGLFW.func_5.cpp b/modules/dasGlfw/src/dasGLFW.func_5.cpp index d13daa31f4..82e28b6afd 100644 --- a/modules/dasGlfw/src/dasGLFW.func_5.cpp +++ b/modules/dasGlfw/src/dasGLFW.func_5.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasGLFW.h" #include "need_dasGLFW.h" diff --git a/modules/dasGlfw/src/dasGLFW.main.cpp b/modules/dasGlfw/src/dasGLFW.main.cpp index 19f5079528..ca09fa86c3 100644 --- a/modules/dasGlfw/src/dasGLFW.main.cpp +++ b/modules/dasGlfw/src/dasGLFW.main.cpp @@ -2,7 +2,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "dasGLFW.h" #include "need_dasGLFW.h" #include "aot_dasGLFW.h" diff --git a/modules/dasImgui/src/cb_dasIMGUI.h b/modules/dasImgui/src/cb_dasIMGUI.h index a500dc4843..716efc65c2 100644 --- a/modules/dasImgui/src/cb_dasIMGUI.h +++ b/modules/dasImgui/src/cb_dasIMGUI.h @@ -159,20 +159,12 @@ struct imguiTempFn { } } - bool anyString = false; for ( auto &arg : fn->arguments ) { if ( arg->type->constant && arg->type->ref && !arg->type->isArray() ) { if ( arg->type->baseType == Type::tFloat2 || arg->type->baseType == Type::tFloat4 ) { arg->type->ref = false; } } - if ( arg->type->isString() && !arg->type->ref ) { - anyString = true; - } - } - - if (anyString) { - fn->needStringCast = true; } return true; diff --git a/modules/dasImgui/src/dasIMGUI.cpp b/modules/dasImgui/src/dasIMGUI.cpp index 136bbe520a..479f69efcb 100644 --- a/modules/dasImgui/src/dasIMGUI.cpp +++ b/modules/dasImgui/src/dasIMGUI.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_1.cpp b/modules/dasImgui/src/dasIMGUI.func_1.cpp index e134e7b414..f564624d5a 100644 --- a/modules/dasImgui/src/dasIMGUI.func_1.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_1.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_10.cpp b/modules/dasImgui/src/dasIMGUI.func_10.cpp index cda2968de7..cd6fc99447 100644 --- a/modules/dasImgui/src/dasIMGUI.func_10.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_10.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_11.cpp b/modules/dasImgui/src/dasIMGUI.func_11.cpp index 5888dd7be1..ad50fcb87e 100644 --- a/modules/dasImgui/src/dasIMGUI.func_11.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_11.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_12.cpp b/modules/dasImgui/src/dasIMGUI.func_12.cpp index f511ecfcd8..0076070160 100644 --- a/modules/dasImgui/src/dasIMGUI.func_12.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_12.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_13.cpp b/modules/dasImgui/src/dasIMGUI.func_13.cpp index a13efccacd..f8b10c1b0e 100644 --- a/modules/dasImgui/src/dasIMGUI.func_13.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_13.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_14.cpp b/modules/dasImgui/src/dasIMGUI.func_14.cpp index cd6b81b9a9..0578787063 100644 --- a/modules/dasImgui/src/dasIMGUI.func_14.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_14.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_15.cpp b/modules/dasImgui/src/dasIMGUI.func_15.cpp index 88bb308d86..d51dc24db4 100644 --- a/modules/dasImgui/src/dasIMGUI.func_15.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_15.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_16.cpp b/modules/dasImgui/src/dasIMGUI.func_16.cpp index 0e46a8688c..c88cce325a 100644 --- a/modules/dasImgui/src/dasIMGUI.func_16.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_16.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_17.cpp b/modules/dasImgui/src/dasIMGUI.func_17.cpp index 3ff2f3b359..eb872c7312 100644 --- a/modules/dasImgui/src/dasIMGUI.func_17.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_17.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_18.cpp b/modules/dasImgui/src/dasIMGUI.func_18.cpp index a9f7c425b1..a4e15cec0a 100644 --- a/modules/dasImgui/src/dasIMGUI.func_18.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_18.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_19.cpp b/modules/dasImgui/src/dasIMGUI.func_19.cpp index ff345701e2..75767661ab 100644 --- a/modules/dasImgui/src/dasIMGUI.func_19.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_19.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_2.cpp b/modules/dasImgui/src/dasIMGUI.func_2.cpp index 56a934d1c5..2c5df50dcc 100644 --- a/modules/dasImgui/src/dasIMGUI.func_2.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_2.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_20.cpp b/modules/dasImgui/src/dasIMGUI.func_20.cpp index d70d825550..864064e96e 100644 --- a/modules/dasImgui/src/dasIMGUI.func_20.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_20.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_21.cpp b/modules/dasImgui/src/dasIMGUI.func_21.cpp index ab61e8b7b6..7ddfd6050b 100644 --- a/modules/dasImgui/src/dasIMGUI.func_21.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_21.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_22.cpp b/modules/dasImgui/src/dasIMGUI.func_22.cpp index 0e3f04dce5..58842d3ceb 100644 --- a/modules/dasImgui/src/dasIMGUI.func_22.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_22.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_23.cpp b/modules/dasImgui/src/dasIMGUI.func_23.cpp index d2bed45d51..e9b950f08c 100644 --- a/modules/dasImgui/src/dasIMGUI.func_23.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_23.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_24.cpp b/modules/dasImgui/src/dasIMGUI.func_24.cpp index 677c3e5685..c148f7db21 100644 --- a/modules/dasImgui/src/dasIMGUI.func_24.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_24.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_25.cpp b/modules/dasImgui/src/dasIMGUI.func_25.cpp index 54effd20aa..1fd94fa60f 100644 --- a/modules/dasImgui/src/dasIMGUI.func_25.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_25.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_26.cpp b/modules/dasImgui/src/dasIMGUI.func_26.cpp index 2b363d5874..a7a224cd28 100644 --- a/modules/dasImgui/src/dasIMGUI.func_26.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_26.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_27.cpp b/modules/dasImgui/src/dasIMGUI.func_27.cpp index ba18bd6010..677b733513 100644 --- a/modules/dasImgui/src/dasIMGUI.func_27.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_27.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_28.cpp b/modules/dasImgui/src/dasIMGUI.func_28.cpp index b8e079cf14..f7cc6024ff 100644 --- a/modules/dasImgui/src/dasIMGUI.func_28.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_28.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_29.cpp b/modules/dasImgui/src/dasIMGUI.func_29.cpp index a2bf4e6f4a..5ab99f803c 100644 --- a/modules/dasImgui/src/dasIMGUI.func_29.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_29.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_3.cpp b/modules/dasImgui/src/dasIMGUI.func_3.cpp index bdc8e0c0e7..b85f8c7b7a 100644 --- a/modules/dasImgui/src/dasIMGUI.func_3.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_3.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_30.cpp b/modules/dasImgui/src/dasIMGUI.func_30.cpp index fcc65cfcd7..cde3994f9d 100644 --- a/modules/dasImgui/src/dasIMGUI.func_30.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_30.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_31.cpp b/modules/dasImgui/src/dasIMGUI.func_31.cpp index 05884a6749..d070ab3a21 100644 --- a/modules/dasImgui/src/dasIMGUI.func_31.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_31.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_32.cpp b/modules/dasImgui/src/dasIMGUI.func_32.cpp index d45e5b84a6..b284abc380 100644 --- a/modules/dasImgui/src/dasIMGUI.func_32.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_32.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_33.cpp b/modules/dasImgui/src/dasIMGUI.func_33.cpp index 7f30e94f33..07c15ced21 100644 --- a/modules/dasImgui/src/dasIMGUI.func_33.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_33.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_34.cpp b/modules/dasImgui/src/dasIMGUI.func_34.cpp index 30318dbddf..d49155f4da 100644 --- a/modules/dasImgui/src/dasIMGUI.func_34.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_34.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_4.cpp b/modules/dasImgui/src/dasIMGUI.func_4.cpp index b0bf260c7f..4082888025 100644 --- a/modules/dasImgui/src/dasIMGUI.func_4.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_4.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_5.cpp b/modules/dasImgui/src/dasIMGUI.func_5.cpp index cded989dd4..b24e63a93c 100644 --- a/modules/dasImgui/src/dasIMGUI.func_5.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_5.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_6.cpp b/modules/dasImgui/src/dasIMGUI.func_6.cpp index ae71c8939a..fd1cce9d9f 100644 --- a/modules/dasImgui/src/dasIMGUI.func_6.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_6.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_7.cpp b/modules/dasImgui/src/dasIMGUI.func_7.cpp index 5a1bc83111..507ec6ccce 100644 --- a/modules/dasImgui/src/dasIMGUI.func_7.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_7.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_8.cpp b/modules/dasImgui/src/dasIMGUI.func_8.cpp index 31a7954663..e7e088018a 100644 --- a/modules/dasImgui/src/dasIMGUI.func_8.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_8.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.func_9.cpp b/modules/dasImgui/src/dasIMGUI.func_9.cpp index c4249e02fe..2a70a0f2f2 100644 --- a/modules/dasImgui/src/dasIMGUI.func_9.cpp +++ b/modules/dasImgui/src/dasIMGUI.func_9.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasIMGUI.h" #include "need_dasIMGUI.h" diff --git a/modules/dasImgui/src/dasIMGUI.main.cpp b/modules/dasImgui/src/dasIMGUI.main.cpp index cbce03a74d..89b851778c 100644 --- a/modules/dasImgui/src/dasIMGUI.main.cpp +++ b/modules/dasImgui/src/dasIMGUI.main.cpp @@ -2,7 +2,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "aot_builtin_clipboard.h" #include "dasIMGUI.h" @@ -916,19 +915,12 @@ namespace das { ->arg_init(3, new ExprCall(LineInfo(), "ImVec2")); // time to fix-up const & ImVec2 and const & ImVec4 for ( auto & pfn : this->functions.each() ) { - bool anyString = false; for ( auto & arg : pfn->arguments ) { if ( arg->type->constant && arg->type->ref && !arg->type->isArray() ) { if ( arg->type->baseType==Type::tFloat2 || arg->type->baseType==Type::tFloat4 ) { arg->type->ref = false; } } - if ( arg->type->isString() && !arg->type->ref ) { - anyString = true; - } - } - if ( anyString ) { - pfn->needStringCast = true; } } } diff --git a/modules/dasLLVM/daslib/llvm_jit.das b/modules/dasLLVM/daslib/llvm_jit.das index 9afa96a429..35c52ba9c5 100644 --- a/modules/dasLLVM/daslib/llvm_jit.das +++ b/modules/dasLLVM/daslib/llvm_jit.das @@ -1558,7 +1558,7 @@ class public LlvmJitVisitor : AstVisitor { var ptrType = type_to_llvm_abi_type(funcArg._type) var arg = LLVMBuildPointerCast(g_builder, src, ptrType, "any_array_{funcArg.name}_ptr") params |> push(arg) - } elif (extern_func != null && extern_func.moreFlags.needStringCast && a._type.isString && !a._type.flags.ref) { + } elif (extern_func != null && a._type.isString && !a._type.flags.ref) { // Wrap string argument for extern functions. Empty string in das is null. var res = LLVMBuildSelect(g_builder, LLVMBuildIsNull(g_builder, src, ""), diff --git a/modules/dasLLVM/daslib/llvm_jit_run.das b/modules/dasLLVM/daslib/llvm_jit_run.das index 0048c0d457..84217eebd1 100644 --- a/modules/dasLLVM/daslib/llvm_jit_run.das +++ b/modules/dasLLVM/daslib/llvm_jit_run.das @@ -36,11 +36,11 @@ var LINK_WHOLE_LIB = false // when true, standalone exe links against the whole // invalidates cached DLLs (e.g. edits to llvm_jit.das, llvm_macro.das, llvm_jit_common.das, // runtime helper ABI, default target triple). Cache filenames fold this in, so a bump // makes every previously written DLL miss the cache on the next run and get GC'd. -let LLVM_JIT_CODEGEN_VERSION : uint64 = 0x68ul // the grid formats' gemv applies signs as one masked negate per weight vector (0x59: aarch64 hosts append +i8mm when cpu_supports says so) +let LLVM_JIT_CODEGEN_VERSION : uint64 = 0x69ul // every string argument of an extern is substituted, not just the ones which asked (0x68: the grid formats' gemv applies signs as one masked negate per weight vector) // Read by tests-cpp/small/test_jit_emitter_pin.cpp: FNV-1a64 of the emitter sources // (normalized to LF; file list in the test) -let LLVM_JIT_EMITTER_HASH : uint64 = 0x6a0cebf74a395071ul +let LLVM_JIT_EMITTER_HASH : uint64 = 0x66bdab0410220016ul let JIT_FNV_PRIME : uint64 = 1099511628211ul diff --git a/modules/dasMinfft/src/dasMinfft.cpp b/modules/dasMinfft/src/dasMinfft.cpp index a4a954b40d..547cfe0750 100644 --- a/modules/dasMinfft/src/dasMinfft.cpp +++ b/modules/dasMinfft/src/dasMinfft.cpp @@ -2,7 +2,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include "dasMinfft.h" diff --git a/modules/dasOpenGL/src/dasOpenGL.cpp b/modules/dasOpenGL/src/dasOpenGL.cpp index 9e548b1376..465589a4be 100644 --- a/modules/dasOpenGL/src/dasOpenGL.cpp +++ b/modules/dasOpenGL/src/dasOpenGL.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasOpenGL.h" #include "need_dasOpenGL.h" diff --git a/modules/dasOpenGL/src/dasOpenGL.func_1.cpp b/modules/dasOpenGL/src/dasOpenGL.func_1.cpp index 099c38dd1a..3d451a2afc 100644 --- a/modules/dasOpenGL/src/dasOpenGL.func_1.cpp +++ b/modules/dasOpenGL/src/dasOpenGL.func_1.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasOpenGL.h" #include "need_dasOpenGL.h" diff --git a/modules/dasOpenGL/src/dasOpenGL.func_2.cpp b/modules/dasOpenGL/src/dasOpenGL.func_2.cpp index bf61341d94..44b27ca79a 100644 --- a/modules/dasOpenGL/src/dasOpenGL.func_2.cpp +++ b/modules/dasOpenGL/src/dasOpenGL.func_2.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasOpenGL.h" #include "need_dasOpenGL.h" diff --git a/modules/dasOpenGL/src/dasOpenGL.func_3.cpp b/modules/dasOpenGL/src/dasOpenGL.func_3.cpp index e3a39f5fdb..0d2ae02849 100644 --- a/modules/dasOpenGL/src/dasOpenGL.func_3.cpp +++ b/modules/dasOpenGL/src/dasOpenGL.func_3.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasOpenGL.h" #include "need_dasOpenGL.h" diff --git a/modules/dasOpenGL/src/dasOpenGL.func_4.cpp b/modules/dasOpenGL/src/dasOpenGL.func_4.cpp index e0aefc5aba..65e9c2bb25 100644 --- a/modules/dasOpenGL/src/dasOpenGL.func_4.cpp +++ b/modules/dasOpenGL/src/dasOpenGL.func_4.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasOpenGL.h" #include "need_dasOpenGL.h" diff --git a/modules/dasOpenGL/src/dasOpenGL.func_5.cpp b/modules/dasOpenGL/src/dasOpenGL.func_5.cpp index a4c7f50fd1..d6048439ee 100644 --- a/modules/dasOpenGL/src/dasOpenGL.func_5.cpp +++ b/modules/dasOpenGL/src/dasOpenGL.func_5.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasOpenGL.h" #include "need_dasOpenGL.h" diff --git a/modules/dasOpenGL/src/dasOpenGL.func_6.cpp b/modules/dasOpenGL/src/dasOpenGL.func_6.cpp index b4990fe562..43f8d43117 100644 --- a/modules/dasOpenGL/src/dasOpenGL.func_6.cpp +++ b/modules/dasOpenGL/src/dasOpenGL.func_6.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasOpenGL.h" #include "need_dasOpenGL.h" diff --git a/modules/dasOpenGL/src/dasOpenGL.main.cpp b/modules/dasOpenGL/src/dasOpenGL.main.cpp index c81691fc98..b8da62f94b 100644 --- a/modules/dasOpenGL/src/dasOpenGL.main.cpp +++ b/modules/dasOpenGL/src/dasOpenGL.main.cpp @@ -16,7 +16,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "dasOpenGL.h" #include "need_dasOpenGL.h" diff --git a/modules/dasPUGIXML/src/dasPUGIXML.cpp b/modules/dasPUGIXML/src/dasPUGIXML.cpp index 04f4452997..8ea2b9f4eb 100644 --- a/modules/dasPUGIXML/src/dasPUGIXML.cpp +++ b/modules/dasPUGIXML/src/dasPUGIXML.cpp @@ -2,7 +2,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include "daScript/simulate/bind_enum.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.backup.cpp b/modules/dasSQLITE/src/dasSQLITE.backup.cpp index 1011992dbe..9ffa3df4ad 100644 --- a/modules/dasSQLITE/src/dasSQLITE.backup.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.backup.cpp @@ -2,7 +2,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include "dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.cpp b/modules/dasSQLITE/src/dasSQLITE.cpp index f72ad03df9..fe884de42f 100644 --- a/modules/dasSQLITE/src/dasSQLITE.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_1.cpp b/modules/dasSQLITE/src/dasSQLITE.func_1.cpp index 55514b7ee8..5710519c0c 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_1.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_1.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_10.cpp b/modules/dasSQLITE/src/dasSQLITE.func_10.cpp index 30ce62cedf..5f3f25409a 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_10.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_10.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_11.cpp b/modules/dasSQLITE/src/dasSQLITE.func_11.cpp index 8410b921ad..4709437439 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_11.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_11.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_12.cpp b/modules/dasSQLITE/src/dasSQLITE.func_12.cpp index ac5eb86876..4b6c6797d5 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_12.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_12.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_2.cpp b/modules/dasSQLITE/src/dasSQLITE.func_2.cpp index a60e049bcb..f8ea4ac138 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_2.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_2.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_3.cpp b/modules/dasSQLITE/src/dasSQLITE.func_3.cpp index 3c899a3ecb..1a7b7d4510 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_3.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_3.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_4.cpp b/modules/dasSQLITE/src/dasSQLITE.func_4.cpp index 81d109c2e3..22d9131ef9 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_4.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_4.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_5.cpp b/modules/dasSQLITE/src/dasSQLITE.func_5.cpp index 4efd42e74c..b792a68267 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_5.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_5.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_6.cpp b/modules/dasSQLITE/src/dasSQLITE.func_6.cpp index 318cf7c336..efea210cb7 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_6.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_6.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_7.cpp b/modules/dasSQLITE/src/dasSQLITE.func_7.cpp index f37e79035a..e42706ae64 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_7.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_7.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_8.cpp b/modules/dasSQLITE/src/dasSQLITE.func_8.cpp index edc00e4a62..0986fde001 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_8.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_8.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.func_9.cpp b/modules/dasSQLITE/src/dasSQLITE.func_9.cpp index c611de94ad..074031d4e8 100644 --- a/modules/dasSQLITE/src/dasSQLITE.func_9.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.func_9.cpp @@ -5,7 +5,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" #include "daScript/ast/ast_handle.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "dasSQLITE.h" #include "need_dasSQLITE.h" diff --git a/modules/dasSQLITE/src/dasSQLITE.main.cpp b/modules/dasSQLITE/src/dasSQLITE.main.cpp index a2bc689f8a..9ba83b6371 100644 --- a/modules/dasSQLITE/src/dasSQLITE.main.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.main.cpp @@ -2,7 +2,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include "dasSQLITE.h" @@ -118,16 +117,6 @@ void Module_dasSQLITE::initMain() { pfn->result->temporary = true; pfn->unsafeOperation = true; } - // fixup module functions, so that there is a string cast - bool anyString = false; - for ( auto & arg : pfn->arguments ) { - if ( arg->type->isString() && !arg->type->ref ) { - anyString = true; - } - } - if ( anyString ) { - pfn->needStringCast = true; - } } } diff --git a/modules/dasSQLITE/src/dasSQLITE.userfn.cpp b/modules/dasSQLITE/src/dasSQLITE.userfn.cpp index 1435fd1c3f..b9af7f37ed 100644 --- a/modules/dasSQLITE/src/dasSQLITE.userfn.cpp +++ b/modules/dasSQLITE/src/dasSQLITE.userfn.cpp @@ -2,7 +2,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include "daScript/simulate/aot.h" diff --git a/modules/dasStbImage/src/dasStbImage.cpp b/modules/dasStbImage/src/dasStbImage.cpp index 27e6d9aeb1..30cce3c548 100644 --- a/modules/dasStbImage/src/dasStbImage.cpp +++ b/modules/dasStbImage/src/dasStbImage.cpp @@ -2,7 +2,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include "stb_image.h" diff --git a/modules/dasStbImage/src/dasStbTrueType.cpp b/modules/dasStbImage/src/dasStbTrueType.cpp index 46225b7372..bb00338eb7 100644 --- a/modules/dasStbImage/src/dasStbTrueType.cpp +++ b/modules/dasStbImage/src/dasStbTrueType.cpp @@ -2,7 +2,6 @@ #include "daScript/ast/ast.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include "stb_truetype.h" diff --git a/modules/dasUnitTest/test_handles.cpp b/modules/dasUnitTest/test_handles.cpp index 2351a980f6..92650a77cf 100644 --- a/modules/dasUnitTest/test_handles.cpp +++ b/modules/dasUnitTest/test_handles.cpp @@ -569,6 +569,20 @@ int32_t test_escape_retained_first_int () { return g_escape_test_retained ? *(int32_t *)g_escape_test_retained : -1; } +// the pair exists to price the null-string substitution: same node shape, same +// argument count, same work - only the parameter type differs +int64_t testFourStrings ( const char * a, const char * b, const char * c, const char * d ) { + return int64_t(intptr_t(a) ^ intptr_t(b) ^ intptr_t(c) ^ intptr_t(d)); +} + +int64_t testFourPointers ( void * a, void * b, void * c, void * d ) { + return int64_t(intptr_t(a) ^ intptr_t(b) ^ intptr_t(c) ^ intptr_t(d)); +} + +int64_t testStringArgLength ( const char * str ) { + return str ? int64_t(strlen(str)) : -1; +} + Module_UnitTest::Module_UnitTest() : Module("UnitTest") { ModuleLibrary lib(this); lib.addBuiltInModule(); @@ -603,6 +617,12 @@ Module_UnitTest::Module_UnitTest() : Module("UnitTest") { addAlias(typeFactory::make(lib)); addVectorAnnotation(this,lib,new Point3ArrayAnnotation(lib)); addCtorAndUsing(*this, lib, "Point3Array", "Point3Array"); + addExtern(*this, lib, "test_four_strings", + SideEffects::none, "testFourStrings")->args({"a","b","c","d"}); + addExtern(*this, lib, "test_four_pointers", + SideEffects::none, "testFourPointers")->args({"a","b","c","d"}); + addExtern(*this, lib, "test_string_arg_length", + SideEffects::none, "testStringArgLength")->arg("str"); addExtern(*this, lib, "testPoint3Array", SideEffects::modifyExternal, "testPoint3Array"); addExtern(*this, lib, "testNotLocalObject", diff --git a/src/ast/ast_print.cpp b/src/ast/ast_print.cpp index b8892d5576..dafe7966ec 100644 --- a/src/ast/ast_print.cpp +++ b/src/ast/ast_print.cpp @@ -331,7 +331,6 @@ namespace das { if ( fn->moreFlags ) { ss << "// "; if ( fn->macroFunction ) { ss << "[macro_function]"; } - if ( fn->needStringCast ) { ss << "[need_string_cast]"; } if ( fn->aotHashDeppendsOnArguments ) { ss << "[aot_hash_deppends_on_arguments]"; } if ( fn->requestJit ) { ss << "[jit]"; } if ( fn->requestNoJit ) { ss << "[no_jit]"; } diff --git a/src/builtin/module_builtin_ast_flags.cpp b/src/builtin/module_builtin_ast_flags.cpp index de48b2e593..95cb0c712b 100644 --- a/src/builtin/module_builtin_ast_flags.cpp +++ b/src/builtin/module_builtin_ast_flags.cpp @@ -199,7 +199,7 @@ namespace das { auto ft = new TypeDecl(Type::tBitfield, cppBindingLineInfo()); ft->alias = "MoreFunctionFlags"; ft->argNames = { - "macroFunction", "needStringCast", "aotHashDeppendsOnArguments", "lateInit", "requestJit", + "macroFunction", "aotHashDeppendsOnArguments", "lateInit", "requestJit", "unsafeOutsideOfFor", "mustInline", "safeImplicit", "deprecated", "aliasCMRES", "neverAliasCMRES", "addressTaken", "propertyFunction", "pinvoke", "jitOnly", "isStaticClassMethod", "requestNoJit", "jitContextAndLineInfo", "nodiscard", "captureString", "callCaptureString", "hasStringBuilder", diff --git a/src/builtin/module_builtin_fio.cpp b/src/builtin/module_builtin_fio.cpp index 4b5dc782ce..80dfc48d13 100644 --- a/src/builtin/module_builtin_fio.cpp +++ b/src/builtin/module_builtin_fio.cpp @@ -333,7 +333,7 @@ namespace das { } static bool is_valid_fopen_mode(const char *mode) { - return mode && strchr("rwa", mode[0]) && mode[1 + strspn(mode + 1, "+btx")] == '\0'; + return mode && *mode && strchr("rwa", mode[0]) && mode[1 + strspn(mode + 1, "+btx")] == '\0'; } #if defined(_WIN32) diff --git a/src/builtin/module_builtin_string.cpp b/src/builtin/module_builtin_string.cpp index fcf30ab76b..c4c8b87838 100644 --- a/src/builtin/module_builtin_string.cpp +++ b/src/builtin/module_builtin_string.cpp @@ -32,7 +32,7 @@ namespace das }; int32_t get_character_at ( const char * str, int32_t index, Context * context, LineInfoArg * at ) { - if ( !str || index<0 ) { + if ( index<0 ) { context->throw_error_at(at, "string character index out of range, %u", uint32_t(index)); } for ( int32_t i = 0; i <= index; ++i ) { @@ -83,7 +83,7 @@ namespace das return uint32_t(bytes.size); } - // Every string entry below is stringLengthSafe + a length-bounded core, so the same core + // Every string entry below is stringLength + a length-bounded core, so the same core // serves a byte view that carries its own length and never scans for a terminator. // A bounded core treats an interior NUL as data. @@ -101,50 +101,50 @@ namespace das } bool builtin_string_endswith ( const char * str, const char * cmp, Context * context ) { - return ends_with_core(str, stringLengthSafe(*context, str), cmp, stringLengthSafe(*context, cmp)); + return ends_with_core(str, stringLength(*context, str), cmp, stringLength(*context, cmp)); } bool builtin_string_startswith ( const char * str, const char * cmp, Context * context ) { - return starts_with_core(str, stringLengthSafe(*context, str), cmp, stringLengthSafe(*context, cmp)); + return starts_with_core(str, stringLength(*context, str), cmp, stringLength(*context, cmp)); } // das_string overload: prefix-test the das_string in place (no allocation), // sibling to builtin_string_ends_with. Lets AST/lint passes that hold names as // das_string do `name |> starts_with("...")` without materializing a string. bool builtin_string_starts_with ( const string & str, const char * cmp, Context * context ) { - return starts_with_core(str.data(), uint32_t(str.length()), cmp, stringLengthSafe(*context, cmp)); + return starts_with_core(str.data(), uint32_t(str.length()), cmp, stringLength(*context, cmp)); } bool builtin_string_startswith2 ( const char * str, const char * cmp, uint32_t cmpLen, Context * context ) { - return starts_with_core(str, stringLengthSafe(*context, str), cmp, min(cmpLen, stringLengthSafe(*context, cmp))); + return starts_with_core(str, stringLength(*context, str), cmp, min(cmpLen, stringLength(*context, cmp))); } bool builtin_string_startswith3 ( const char * str, int32_t offset, const char * cmp, Context * context ) { - return starts_with_at_core(str, stringLengthSafe(*context, str), offset, cmp, stringLengthSafe(*context, cmp)); + return starts_with_at_core(str, stringLength(*context, str), offset, cmp, stringLength(*context, cmp)); } bool builtin_string_startswith4 ( const char * str, int32_t offset, const char * cmp, uint32_t cmpLen, Context * context ) { - return starts_with_at_core(str, stringLengthSafe(*context, str), offset, cmp, min(cmpLen, stringLengthSafe(*context, cmp))); + return starts_with_at_core(str, stringLength(*context, str), offset, cmp, min(cmpLen, stringLength(*context, cmp))); } bool builtin_view_endswith ( const TArray & bytes, const char * cmp, Context * context, LineInfoArg * at ) { - return ends_with_core(view_data(bytes), view_size(bytes, context, at), cmp, stringLengthSafe(*context, cmp)); + return ends_with_core(view_data(bytes), view_size(bytes, context, at), cmp, stringLength(*context, cmp)); } bool builtin_view_startswith ( const TArray & bytes, const char * cmp, Context * context, LineInfoArg * at ) { - return starts_with_core(view_data(bytes), view_size(bytes, context, at), cmp, stringLengthSafe(*context, cmp)); + return starts_with_core(view_data(bytes), view_size(bytes, context, at), cmp, stringLength(*context, cmp)); } bool builtin_view_startswith2 ( const TArray & bytes, const char * cmp, uint32_t cmpLen, Context * context, LineInfoArg * at ) { - return starts_with_core(view_data(bytes), view_size(bytes, context, at), cmp, min(cmpLen, stringLengthSafe(*context, cmp))); + return starts_with_core(view_data(bytes), view_size(bytes, context, at), cmp, min(cmpLen, stringLength(*context, cmp))); } bool builtin_view_startswith3 ( const TArray & bytes, int32_t offset, const char * cmp, Context * context, LineInfoArg * at ) { - return starts_with_at_core(view_data(bytes), view_size(bytes, context, at), offset, cmp, stringLengthSafe(*context, cmp)); + return starts_with_at_core(view_data(bytes), view_size(bytes, context, at), offset, cmp, stringLength(*context, cmp)); } bool builtin_view_startswith4 ( const TArray & bytes, int32_t offset, const char * cmp, uint32_t cmpLen, Context * context, LineInfoArg * at ) { - return starts_with_at_core(view_data(bytes), view_size(bytes, context, at), offset, cmp, min(cmpLen, stringLengthSafe(*context, cmp))); + return starts_with_at_core(view_data(bytes), view_size(bytes, context, at), offset, cmp, min(cmpLen, stringLength(*context, cmp))); } static inline const char* strip_l(const char *str, uint32_t len) { @@ -195,15 +195,15 @@ namespace das } char* builtin_string_strip ( const char *str, Context * context, LineInfoArg * at ) { - return strip_core(str, stringLengthSafe(*context, str), context, at); + return strip_core(str, stringLength(*context, str), context, at); } char* builtin_string_strip_left ( const char *str, Context * context, LineInfoArg * at ) { - return strip_left_core(str, stringLengthSafe(*context, str), context, at); + return strip_left_core(str, stringLength(*context, str), context, at); } char* builtin_string_strip_right ( const char *str, Context * context, LineInfoArg * at ) { - return strip_right_core(str, stringLengthSafe(*context, str), context, at); + return strip_right_core(str, stringLength(*context, str), context, at); } char* builtin_view_strip ( const TArray & bytes, Context * context, LineInfoArg * at ) { @@ -219,7 +219,7 @@ namespace das } int builtin_string_skip_white_space ( const char * str, int from, Context * context ) { - return skip_white_space_core(str, stringLengthSafe(*context, str), from); + return skip_white_space_core(str, stringLength(*context, str), from); } int builtin_view_skip_white_space ( const TArray & bytes, int from, Context * context, LineInfoArg * at ) { @@ -266,8 +266,8 @@ namespace das } int builtin_string_find1 ( const char *str, const char *substr, int start, Context * context ) { - const uint32_t strLen = stringLengthSafe ( *context, str ); - return find_sub_core(str, strLen, substr, stringLengthSafe ( *context, substr ), + const uint32_t strLen = stringLength ( *context, str ); + return find_sub_core(str, strLen, substr, stringLength ( *context, substr ), uint32_t(clamp_int(start, 0, int(strLen)))); } @@ -278,8 +278,8 @@ namespace das } int builtin_string_rfind1 ( const char *str, const char *substr, int start, Context * context ) { - const uint32_t strLen = stringLengthSafe ( *context, str ); - return rfind_sub_core(str, strLen, substr, stringLengthSafe ( *context, substr ), start); + const uint32_t strLen = stringLength ( *context, str ); + return rfind_sub_core(str, strLen, substr, stringLength ( *context, substr ), start); } int builtin_string_rfind2 (const char *str, const char *substr) { @@ -290,23 +290,23 @@ namespace das } int builtin_view_find ( const TArray & bytes, const char * substr, Context * context, LineInfoArg * at ) { - return find_sub_core(view_data(bytes), view_size(bytes, context, at), substr, stringLengthSafe(*context, substr), 0); + return find_sub_core(view_data(bytes), view_size(bytes, context, at), substr, stringLength(*context, substr), 0); } int builtin_view_find_from ( const TArray & bytes, const char * substr, int start, Context * context, LineInfoArg * at ) { const uint32_t len = view_size(bytes, context, at); - return find_sub_core(view_data(bytes), len, substr, stringLengthSafe(*context, substr), + return find_sub_core(view_data(bytes), len, substr, stringLength(*context, substr), uint32_t(clamp_int(start, 0, int(len)))); } int builtin_view_rfind ( const TArray & bytes, const char * substr, Context * context, LineInfoArg * at ) { const uint32_t len = view_size(bytes, context, at); - return rfind_sub_core(view_data(bytes), len, substr, stringLengthSafe(*context, substr), int(len)); + return rfind_sub_core(view_data(bytes), len, substr, stringLength(*context, substr), int(len)); } int builtin_view_rfind_from ( const TArray & bytes, const char * substr, int start, Context * context, LineInfoArg * at ) { const uint32_t len = view_size(bytes, context, at); - return rfind_sub_core(view_data(bytes), len, substr, stringLengthSafe(*context, substr), start); + return rfind_sub_core(view_data(bytes), len, substr, stringLength(*context, substr), start); } static char * chop_core ( const char * str, uint32_t strLength, int start, int length, Context * context, LineInfoArg * at ) { @@ -319,7 +319,7 @@ namespace das } char* builtin_string_chop(const char* str, int start, int length, Context* context, LineInfoArg * at) { - return chop_core(str, stringLengthSafe(*context, str), start, length, context, at); + return chop_core(str, stringLength(*context, str), start, length, context, at); } char* builtin_view_chop ( const TArray & bytes, int start, int length, Context* context, LineInfoArg * at ) { @@ -347,11 +347,11 @@ namespace das } char* builtin_string_slice1 ( const char *str, int start, int end, Context * context, LineInfoArg * at ) { - return slice_core(str, stringLengthSafe ( *context, str ), start, end, context, at); + return slice_core(str, stringLength ( *context, str ), start, end, context, at); } char* builtin_string_slice2 ( const char *str, int start, Context * context, LineInfoArg * at ) { - return slice_core(str, stringLengthSafe ( *context, str ), start, context, at); + return slice_core(str, stringLength ( *context, str ), start, context, at); } char* builtin_view_slice1 ( const TArray & bytes, int start, int end, Context * context, LineInfoArg * at ) { @@ -363,7 +363,7 @@ namespace das } char* builtin_string_reverse ( const char *str, Context * context, LineInfoArg * at ) { - const uint32_t strLen = stringLengthSafe ( *context, str ); + const uint32_t strLen = stringLength ( *context, str ); if (!strLen) return nullptr; char * ret = context->allocateString(str, strLen, at); @@ -378,7 +378,7 @@ namespace das } char* builtin_string_tolower ( const char *str, Context * context, LineInfoArg * at ) { - const uint32_t strLen = stringLengthSafe ( *context, str ); + const uint32_t strLen = stringLength ( *context, str ); if (!strLen) return nullptr; char * ret = context->allocateString(nullptr, strLen, at); @@ -389,7 +389,6 @@ namespace das } char* builtin_string_tolower_in_place(char* str) { - if (!str) return nullptr; char* pch = str; for (;;) { char ch = *pch; @@ -405,7 +404,7 @@ namespace das } char* builtin_string_toupper ( const char *str, Context * context, LineInfoArg * at ) { - const uint32_t strLen = stringLengthSafe ( *context, str ); + const uint32_t strLen = stringLength ( *context, str ); if (!strLen) return nullptr; char * ret = context->allocateString(nullptr, strLen, at); @@ -416,7 +415,6 @@ namespace das } char* builtin_string_toupper_in_place ( char* str ) { - if (!str) return nullptr; char* pch = str; for (;;) { char ch = *pch; @@ -429,9 +427,6 @@ namespace das int builtin_string_stricmp( const char *a, const char *b ) { - if ( !a && !b ) return 0; - if ( !a ) return -1; - if ( !b ) return 1; int d; for (;; ++a, ++b){ d = to_lower(*a) - to_lower(*b); @@ -447,7 +442,6 @@ namespace das template TT string_to_int_number ( const char *str, Context * context, LineInfoArg * at ) { - if ( !str ) context->throw_error_at(at, "expecting string"); TT result = 0; while ( is_white_space(*str) ) str++; bool hex = false; @@ -494,7 +488,6 @@ namespace das template TT string_to_real_number ( const char *str, Context * context, LineInfoArg * at ) { - if ( !str ) context->throw_error_at(at, "expecting string"); TT result = 0; while ( is_white_space(*str) ) str++; auto res = fast_float::from_chars(str, str+strlen(str), result); @@ -512,7 +505,6 @@ namespace das template TT fast_to_real ( const char *str ) { - if ( !str ) return 0; TT result = 0; while ( is_white_space(*str) ) str++; auto res = fast_float::from_chars(str, str+strlen(str), result); @@ -529,7 +521,6 @@ namespace das template TT fast_to_int_TT ( const char *str, bool hex ) { - if ( !str ) return 0; TT result = 0; while ( is_white_space(*str) ) str++; if ( hex && str[0]=='0' && (str[1]=='x' || str[1]=='X') ) str += 2; @@ -621,7 +612,6 @@ namespace das } StringBuilderWriter & write_escape_string ( StringBuilderWriter & writer, char * str ) { - if ( !str ) return writer; auto estr = escapeString(str,false); writer.writeStr(estr.c_str(), estr.length()); return writer; @@ -634,7 +624,7 @@ namespace das } char * string_repeat ( const char * str, int count, Context * context, LineInfoArg * at ) { - uint32_t len = stringLengthSafe ( *context, str ); + uint32_t len = stringLength ( *context, str ); if ( !len || count<=0 ) return nullptr; char * res = context->allocateString(nullptr, uint64_t(len) * uint64_t(count), at); for ( char * s = res; count; count--, s+=len ) { @@ -644,8 +634,6 @@ namespace das } DAS_API vector split ( const char * str, const char * delim ) { - if ( !str ) str = ""; - if ( !delim ) delim = ""; vector tokens; vector words; const char * ch = str; @@ -671,12 +659,10 @@ namespace das } void builtin_string_split_by_char ( const char * str, const char * delim, const Block & block, Context * context, LineInfoArg * at ) { - if ( !str ) str = ""; - if ( !delim ) delim = ""; vector tokens; vector words; const char * ch = str; - auto delimLen = stringLengthSafe(*context,delim); + auto delimLen = stringLength(*context,delim); if ( delimLen ) { while ( *ch ) { const char * tok = ch; @@ -687,7 +673,7 @@ namespace das if ( !*ch ) words.push_back(""); } } else { - auto len = stringLengthSafe(*context,str); + auto len = stringLength(*context,str); words.reserve(len); while ( *ch ) { words.push_back(string(1,*ch)); @@ -707,12 +693,10 @@ namespace das } void builtin_string_split ( const char * str, const char * delim, const Block & block, Context * context, LineInfoArg * at ) { - if ( !str ) str = ""; - if ( !delim ) delim = ""; vector tokens; vector words; const char * ch = str; - auto delimLen = stringLengthSafe(*context,delim); + auto delimLen = stringLength(*context,delim); if ( delimLen ) { while ( *ch ) { const char * tok = ch; @@ -723,7 +707,7 @@ namespace das if ( !*ch ) words.push_back(""); } } else { - auto len = stringLengthSafe(*context,str); + auto len = stringLength(*context,str); words.reserve(len); while ( *ch ) { words.push_back(string(1,*ch)); @@ -764,9 +748,9 @@ namespace das } char * builtin_string_replace ( const char * str, const char * toSearch, const char * replaceStr, Context * context, LineInfoArg * at ) { - return replace_core(str, stringLengthSafe(*context, str), - toSearch, stringLengthSafe(*context, toSearch), - replaceStr, stringLengthSafe(*context, replaceStr), context, at); + return replace_core(str, stringLength(*context, str), + toSearch, stringLength(*context, toSearch), + replaceStr, stringLength(*context, replaceStr), context, at); } class StrdupDataWalker : public DataWalker { @@ -782,12 +766,10 @@ namespace das } char * builtin_string_escape ( const char *str, Context * context, LineInfoArg * at ) { - if ( !str ) return nullptr; return context->allocateString(escapeString(str,false), at); } char * builtin_string_unescape ( const char *str, Context * context, LineInfoArg * at ) { - if ( !str ) return nullptr; bool err = false; auto estr = unescapeString(str, &err, false); if ( err ) context->throw_error_at(at, "invalid escape sequence"); @@ -795,18 +777,17 @@ namespace das } char * builtin_string_safe_unescape ( const char *str, Context * context, LineInfoArg * at ) { - if ( !str ) return nullptr; bool err = false; auto estr = unescapeString(str, &err, false); return context->allocateString(estr, at); } int builtin_find_first_char_of ( const char * str, int Ch, Context * context ) { - return find_char_core(str, stringLengthSafe ( *context, str ), Ch, 0); + return find_char_core(str, stringLength ( *context, str ), Ch, 0); } int builtin_find_first_char_of2 ( const char * str, int Ch, int start, Context * context ) { - uint32_t strLen = stringLengthSafe ( *context, str ); + uint32_t strLen = stringLength ( *context, str ); start = clamp_int((start < 0) ? (strLen + start) : start, 0, strLen); return find_char_core(str, strLen, Ch, uint32_t(start)); } @@ -831,7 +812,7 @@ namespace das TArray builtin_string_to_bytes ( const char * str, Context * context, LineInfoArg * at ) { TArray bytes; das_zero(bytes); - uint32_t len = stringLengthSafe(*context, str); + uint32_t len = stringLength(*context, str); if ( len ) { // exact reserve first: known final size, so the resize never grows - no pow2 // slack on big strings, and no max_unreserved_size panic @@ -857,9 +838,8 @@ namespace das } bool builtin_string_ends_with(const string &str, char * substr, Context * context ) { - if ( substr==nullptr ) return false; auto sz = str.length(); - auto slen = stringLengthSafe(*context,substr); + auto slen = stringLength(*context,substr); if ( slen>sz ) return false; return memcmp ( str.data() + sz - slen, substr, slen )==0; } @@ -918,19 +898,19 @@ namespace das } char * builtin_string_trim ( char* s, Context * context, LineInfoArg * at ) { - return trim_core(s, stringLengthSafe(*context, s), context, at); + return trim_core(s, stringLength(*context, s), context, at); } char * builtin_string_ltrim ( char* s, Context * context, LineInfoArg * at ) { - return ltrim_core(s, stringLengthSafe(*context, s), context, at); + return ltrim_core(s, stringLength(*context, s), context, at); } char * builtin_string_rtrim ( char* s, Context * context, LineInfoArg * at ) { - return rtrim_core(s, stringLengthSafe(*context, s), context, at); + return rtrim_core(s, stringLength(*context, s), context, at); } char * builtin_string_rtrim_ts ( char* s, char * ts, Context * context, LineInfoArg * at ) { - return rtrim_chars_core(s, stringLengthSafe(*context, s), ts ? ts : "", context, at); + return rtrim_chars_core(s, stringLength(*context, s), ts ? ts : "", context, at); } char * builtin_view_trim ( const TArray & bytes, Context * context, LineInfoArg * at ) { @@ -950,7 +930,6 @@ namespace das } void builtin_string_peek ( const char * str, const TBlock const>> & block, Context * context, LineInfoArg * at ) { - if ( !str ) return; Array arr; array_mark_locked(arr, (char *)str, uint32_t(strlen(str))); vec4f args[1]; @@ -959,7 +938,6 @@ namespace das } char * builtin_string_peek_and_modify ( const char * str, const TBlock>> & block, Context * context, LineInfoArg * at ) { - if ( !str ) return nullptr; int32_t len = int32_t(strlen(str)); char * cstr = context->allocateString(str, len, at); memcpy(cstr, str, len); diff --git a/tests/handle_types/bench_string_arg_wrap.das b/tests/handle_types/bench_string_arg_wrap.das new file mode 100644 index 0000000000..e307a703d7 --- /dev/null +++ b/tests/handle_types/bench_string_arg_wrap.das @@ -0,0 +1,20 @@ +options gen2 +require dastest/testing_boost + +require UnitTest + +[benchmark] +def bench_string_arg_wrap(b : B?) { + let nul_str : string + let lit = "abcd" + var acc = 0l + b |> run("4 string args") { + acc += test_four_strings(nul_str, lit, nul_str, lit) + } + let nul_ptr : void? = null + let some_ptr = unsafe(reinterpret(lit)) + b |> run("4 pointer args") { + acc += test_four_pointers(nul_ptr, some_ptr, nul_ptr, some_ptr) + } + feint("{acc}") +} diff --git a/tests/handle_types/string_arg_never_null.das b/tests/handle_types/string_arg_never_null.das new file mode 100644 index 0000000000..2db29a228c --- /dev/null +++ b/tests/handle_types/string_arg_never_null.das @@ -0,0 +1,19 @@ +options gen2 +require dastest/testing_boost + +require UnitTest + +[test] +def test_string_arg_never_null(t : T?) { + t |> run("a null string arrives as empty") @(t : T?) { + let nul_str : string + assert(test_string_arg_length(nul_str) == 0l) + } + t |> run("an empty literal arrives as empty") @(t : T?) { + let empty_literal = "" + assert(test_string_arg_length(empty_literal) == 0l) + } + t |> run("a non-empty string is untouched") @(t : T?) { + assert(test_string_arg_length("abc") == 3l) + } +} diff --git a/tests/strings/strings_core_pins.das b/tests/strings/strings_core_pins.das index bf8e7d8ab5..b5c60610b3 100644 --- a/tests/strings/strings_core_pins.das +++ b/tests/strings/strings_core_pins.das @@ -16,7 +16,7 @@ def private heap_str(src : string) : string { // for a string-to-integer reinterpret (llvm_jit.das:5537 tests isPointer, which a string is not) def private ptr_of(s : string) : uint8 const? => unsafe(reinterpret(s)) -def private is_null_str(s : string) : bool => ptr_of(s) == null +def private is_null_str(s : string) : bool => empty(s) def private ptr_delta(src, res : string) : int64 => ptr_of(res) - ptr_of(src) @@ -196,9 +196,7 @@ def test_pin_das_string_overloads(t : T?) { t |> success(!starts_with(ds, "abcdefg"), "das_string starts_with cmp longer than str") t |> success(ends_with(ds, "def"), "das_string ends_with match") t |> success(!ends_with(ds, "dee"), "das_string ends_with mismatch") - // an empty das literal is a null pointer, and this overload null-checks cmp first, - // so it disagrees with ends_with(string, "") above - t |> success(!ends_with(ds, ""), "das_string ends_with empty cmp is FALSE") + t |> success(ends_with(ds, ""), "das_string ends_with empty cmp is true") t |> success(!ends_with(ds, "zabcdef"), "das_string ends_with cmp longer than str") } } diff --git a/tests/strings/view_binary_safe.das b/tests/strings/view_binary_safe.das index f007e2c4b0..765762de32 100644 --- a/tests/strings/view_binary_safe.das +++ b/tests/strings/view_binary_safe.das @@ -40,7 +40,7 @@ def private str_byte(s : string; idx : int) : int { return int(unsafe(p[idx])) } -def private is_null_str(s : string) : bool => unsafe(reinterpret(s)) == null +def private is_null_str(s : string) : bool => empty(s) // ===== interior NUL ===== @@ -108,8 +108,7 @@ def test_nul_strip_and_trim(t : T?) { t |> equal(length(trim(inner)), 1, "trim behaves the same") var inscope padded <- with_nul(" ", " ") let stripped = strip(padded) - t |> success(!is_null_str(stripped), "a lone NUL between spaces is content, not whitespace") - t |> equal(length(stripped), 0, "and the result reads as the empty string") + t |> equal(length(stripped), 0, "a lone NUL between spaces reads as the empty string") t |> equal(length(trim(padded)), 0, "trim agrees") // the char-set form only trims the right, so the leading space survives and the NUL stops it let rt = rtrim(padded, " ") diff --git a/tutorials/integration/cpp/04_binding_types.cpp b/tutorials/integration/cpp/04_binding_types.cpp index 3f4324b9da..23a1cc9c0e 100644 --- a/tutorials/integration/cpp/04_binding_types.cpp +++ b/tutorials/integration/cpp/04_binding_types.cpp @@ -11,7 +11,6 @@ // and pass these types to/from C++ functions seamlessly. #include "daScript/daScript.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include diff --git a/tutorials/integration/cpp/05_binding_enums.cpp b/tutorials/integration/cpp/05_binding_enums.cpp index 8665c9b063..54f77b0d19 100644 --- a/tutorials/integration/cpp/05_binding_enums.cpp +++ b/tutorials/integration/cpp/05_binding_enums.cpp @@ -11,7 +11,6 @@ #include "daScript/daScript.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/bind_enum.h" #include diff --git a/tutorials/integration/cpp/06_interop.cpp b/tutorials/integration/cpp/06_interop.cpp index 4237d04ab6..1dbb179969 100644 --- a/tutorials/integration/cpp/06_interop.cpp +++ b/tutorials/integration/cpp/06_interop.cpp @@ -12,7 +12,6 @@ #include "daScript/daScript.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include diff --git a/tutorials/integration/cpp/07_callbacks.cpp b/tutorials/integration/cpp/07_callbacks.cpp index 36c633ae7f..4c3f78f404 100644 --- a/tutorials/integration/cpp/07_callbacks.cpp +++ b/tutorials/integration/cpp/07_callbacks.cpp @@ -9,7 +9,6 @@ #include "daScript/daScript.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/simulate/aot.h" #include diff --git a/tutorials/integration/cpp/08_methods.cpp b/tutorials/integration/cpp/08_methods.cpp index 2a24d9b359..d550ec26c7 100644 --- a/tutorials/integration/cpp/08_methods.cpp +++ b/tutorials/integration/cpp/08_methods.cpp @@ -12,7 +12,6 @@ #include "daScript/daScript.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include diff --git a/tutorials/integration/cpp/09_operators_and_properties.cpp b/tutorials/integration/cpp/09_operators_and_properties.cpp index ce9e240abc..56d4f1db6d 100644 --- a/tutorials/integration/cpp/09_operators_and_properties.cpp +++ b/tutorials/integration/cpp/09_operators_and_properties.cpp @@ -8,7 +8,6 @@ #include "daScript/daScript.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include diff --git a/tutorials/integration/cpp/10_custom_modules.cpp b/tutorials/integration/cpp/10_custom_modules.cpp index 0923fa8078..36a4dc7cba 100644 --- a/tutorials/integration/cpp/10_custom_modules.cpp +++ b/tutorials/integration/cpp/10_custom_modules.cpp @@ -10,7 +10,6 @@ #include "daScript/daScript.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include diff --git a/tutorials/integration/cpp/11_context_variables.cpp b/tutorials/integration/cpp/11_context_variables.cpp index 7634c79ac5..4bca67cfd5 100644 --- a/tutorials/integration/cpp/11_context_variables.cpp +++ b/tutorials/integration/cpp/11_context_variables.cpp @@ -8,7 +8,6 @@ #include "daScript/daScript.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include diff --git a/tutorials/integration/cpp/12_smart_pointers.cpp b/tutorials/integration/cpp/12_smart_pointers.cpp index c4b9ac492e..a6e2bdf01b 100644 --- a/tutorials/integration/cpp/12_smart_pointers.cpp +++ b/tutorials/integration/cpp/12_smart_pointers.cpp @@ -9,7 +9,6 @@ #include "daScript/daScript.h" #include "daScript/ast/ast_interop.h" -#include "daScript/ast/ast_typefactory_bind.h" #include "daScript/ast/ast_handle.h" #include