Address review: remove default values from StringType template parameters

Remove `= std::string` defaults from the StringType template parameter
on ChaiScript_Parser, Bootstrap::bootstrap(), Std_Lib::library(), and
ChaiScript_Impl. All call sites now specify the string type explicitly.

Requested by @lefticus in PR #684 review.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
leftibot 2026-04-13 22:47:43 -06:00
parent f1e0fb35da
commit e25ce22406
11 changed files with 19 additions and 19 deletions

View File

@ -820,7 +820,7 @@
#include "language/chaiscript_parser.hpp"
namespace chaiscript {
template<typename StringType = std::string>
template<typename StringType>
class ChaiScript_Impl : public ChaiScript_Basic {
public:
ChaiScript_Impl(std::vector<std::string> t_modulepaths = {},

View File

@ -27,8 +27,8 @@
#include "language/chaiscript_parser.hpp"
ChaiScript_Basic chai(
chaiscript::Std_Lib::library(),
std::make_unique<parser::ChaiScript_Parser<eval::Noop_Tracer, optimizer::Optimizer_Default>>());
chaiscript::Std_Lib::library<std::string>(),
std::make_unique<parser::ChaiScript_Parser<eval::Noop_Tracer, optimizer::Optimizer_Default, std::string>>());
*/

View File

@ -38,7 +38,7 @@
namespace chaiscript {
class Std_Lib {
public:
template<typename StringType = std::string>
template<typename StringType>
[[nodiscard]] static ModulePtr library(const std::vector<Library_Options> &t_opts = {}) {
if (std::find(t_opts.begin(), t_opts.end(), Library_Options::No_Stdlib) != t_opts.end()) {
return std::make_shared<Module>();

View File

@ -271,7 +271,7 @@ namespace chaiscript::bootstrap {
/// \brief perform all common bootstrap functions for std::string, void and POD types
/// \param[in,out] m Module to add bootstrapped functions to
/// \param[in] t_no_io If true, skip registering print_string and println_string
template<typename StringType = std::string>
template<typename StringType>
static void bootstrap(Module &m, const bool t_no_io = false) {
m.add(user_type<void>(), "void");
m.add(user_type<bool>(), "bool");

View File

@ -126,7 +126,7 @@ namespace chaiscript {
} // namespace detail
template<typename Tracer, typename Optimizer, typename StringType = std::string, std::size_t Parse_Depth = 512>
template<typename Tracer, typename Optimizer, typename StringType, std::size_t Parse_Depth = 512>
class ChaiScript_Parser final : public ChaiScript_Parser_Base {
void *get_tracer_ptr() noexcept override { return &m_tracer; }

View File

@ -14,7 +14,7 @@
#endif
CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_chaiscript_stdlib() {
return chaiscript::Std_Lib::library();
return chaiscript::Std_Lib::library<std::string>();
}
#ifdef __llvm__

View File

@ -2,5 +2,5 @@
#include "chaiscript_parser.hpp"
std::unique_ptr<chaiscript::parser::ChaiScript_Parser_Base> create_chaiscript_parser() {
return std::make_unique<chaiscript::parser::ChaiScript_Parser<chaiscript::eval::Noop_Tracer, chaiscript::optimizer::Optimizer_Default>>();
return std::make_unique<chaiscript::parser::ChaiScript_Parser<chaiscript::eval::Noop_Tracer, chaiscript::optimizer::Optimizer_Default, std::string>>();
}

View File

@ -2,5 +2,5 @@
#include "chaiscript_stdlib.hpp"
std::shared_ptr<chaiscript::Module> create_chaiscript_stdlib() {
return chaiscript::Std_Lib::library();
return chaiscript::Std_Lib::library<std::string>();
}

View File

@ -978,9 +978,9 @@ struct Count_Tracer {
};
TEST_CASE("Test count tracer") {
using Parser_Type = chaiscript::parser::ChaiScript_Parser<chaiscript::eval::Tracer<Count_Tracer>, chaiscript::optimizer::Optimizer_Default>;
using Parser_Type = chaiscript::parser::ChaiScript_Parser<chaiscript::eval::Tracer<Count_Tracer>, chaiscript::optimizer::Optimizer_Default, std::string>;
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library(), std::make_unique<Parser_Type>());
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library<std::string>(), std::make_unique<Parser_Type>());
Parser_Type &parser = dynamic_cast<Parser_Type &>(chai.get_parser());
@ -1347,7 +1347,7 @@ TEST_CASE("Test if non copyable/movable types can be registered") {
// Tests through ChaiScript_Basic (library options passed explicitly to Std_Lib::library)
TEST_CASE("ChaiScript_Basic No_Stdlib option disables all standard library functions") {
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library({chaiscript::Library_Options::No_Stdlib}),
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library<std::string>({chaiscript::Library_Options::No_Stdlib}),
create_chaiscript_parser(),
{},
{},
@ -1361,7 +1361,7 @@ TEST_CASE("ChaiScript_Basic No_Stdlib option disables all standard library funct
}
TEST_CASE("ChaiScript_Basic No_IO option uses null handler by default") {
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library({chaiscript::Library_Options::No_IO}),
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library<std::string>({chaiscript::Library_Options::No_IO}),
create_chaiscript_parser(),
{},
{},
@ -1383,7 +1383,7 @@ TEST_CASE("ChaiScript_Basic No_IO option uses null handler by default") {
}
TEST_CASE("ChaiScript_Basic No_Prelude option disables prelude functions") {
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library({chaiscript::Library_Options::No_Prelude}),
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library<std::string>({chaiscript::Library_Options::No_Prelude}),
create_chaiscript_parser(),
{},
{},
@ -1396,7 +1396,7 @@ TEST_CASE("ChaiScript_Basic No_Prelude option disables prelude functions") {
}
TEST_CASE("ChaiScript_Basic No_JSON option disables JSON support") {
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library({chaiscript::Library_Options::No_JSON}),
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library<std::string>({chaiscript::Library_Options::No_JSON}),
create_chaiscript_parser(),
{},
{},
@ -1408,7 +1408,7 @@ TEST_CASE("ChaiScript_Basic No_JSON option disables JSON support") {
}
TEST_CASE("ChaiScript_Basic default library has all functions") {
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library(),
chaiscript::ChaiScript_Basic chai(chaiscript::Std_Lib::library<std::string>(),
create_chaiscript_parser(),
{},
{},

View File

@ -5,8 +5,8 @@
Multi_Test_Chai::Multi_Test_Chai()
: m_chai(new chaiscript::ChaiScript_Basic(
chaiscript::Std_Lib::library(),
std::make_unique<chaiscript::parser::ChaiScript_Parser<chaiscript::eval::Noop_Tracer, chaiscript::optimizer::Optimizer_Default>>())) {
chaiscript::Std_Lib::library<std::string>(),
std::make_unique<chaiscript::parser::ChaiScript_Parser<chaiscript::eval::Noop_Tracer, chaiscript::optimizer::Optimizer_Default, std::string>>())) {
}
std::shared_ptr<chaiscript::ChaiScript_Basic> Multi_Test_Chai::get_chai() {

View File

@ -67,7 +67,7 @@ int main() {
// For this test we are going to load the dynamic stdlib
// to make sure it continues to work
chaiscript::ChaiScript_Basic chai(
std::make_unique<chaiscript::parser::ChaiScript_Parser<chaiscript::eval::Noop_Tracer, chaiscript::optimizer::Optimizer_Default>>(),
std::make_unique<chaiscript::parser::ChaiScript_Parser<chaiscript::eval::Noop_Tracer, chaiscript::optimizer::Optimizer_Default, std::string>>(),
modulepaths,
usepaths);
#endif