尝试UTF32String

This commit is contained in:
2026-02-05 22:20:21 +08:00
parent d897f41c57
commit 9c68b2e77d
69 changed files with 3078 additions and 2605 deletions

View File

@@ -3,7 +3,7 @@
#include <Ast/Expressions/VarExpr.hpp>
#include <Ast/functionParameters.hpp>
#include <Core/fig_string.hpp>
#include <Core/String.hpp>
#include <Evaluator/Value/value.hpp>
#include <Core/runtimeTime.hpp>
@@ -34,39 +34,39 @@ namespace Fig
{
add(..., ...) -> ...;
}
*/
const TypeInfo &getOperationInterfaceTypeInfo();
const std::unordered_map<FString, ObjectPtr> &getBuiltinValues();
const std::unordered_map<String, ObjectPtr> &getBuiltinValues();
using BuiltinFunction = std::function<ObjectPtr(const std::vector<ObjectPtr> &)>;
const std::unordered_map<FString, int> &getBuiltinFunctionArgCounts();
const std::unordered_map<FString, BuiltinFunction> &getBuiltinFunctions();
const std::unordered_map<String, int> &getBuiltinFunctionArgCounts();
const std::unordered_map<String, BuiltinFunction> &getBuiltinFunctions();
inline bool isBuiltinFunction(const FString &name)
inline bool isBuiltinFunction(const String &name)
{
return getBuiltinFunctions().find(name) != getBuiltinFunctions().end();
}
inline BuiltinFunction getBuiltinFunction(const FString &name)
inline BuiltinFunction getBuiltinFunction(const String &name)
{
auto it = getBuiltinFunctions().find(name);
if (it == getBuiltinFunctions().end())
{
throw RuntimeError(FString(std::format("Builtin function '{}' not found", name.toBasicString())));
throw RuntimeError(String(std::format("Builtin function '{}' not found", name.toBasicString())));
}
return it->second;
}
inline int getBuiltinFunctionParamCount(const FString &name)
inline int getBuiltinFunctionParamCount(const String &name)
{
auto it = getBuiltinFunctionArgCounts().find(name);
if (it == getBuiltinFunctionArgCounts().end())
{
throw RuntimeError(FString(std::format("Builtin function '{}' not found", name.toBasicString())));
throw RuntimeError(String(std::format("Builtin function '{}' not found", name.toBasicString())));
}
return it->second;
}