Beispiel #1
0
// ----------------------------------------------------------------------------
// TextLanguage::addFunction
//
// Adds a function arg set to the language. If the function [name] exists,
// [args] will be added to it as a new arg set, otherwise a new function will
// be added
// ----------------------------------------------------------------------------
void TextLanguage::addFunction(
	string name,
	string args,
	string desc,
	string deprecated,
	bool   replace,
	string return_type)
{
	// Split out context from name
	string context;
	if (name.Contains("."))
	{
		string fname;
		context = name.BeforeFirst('.', &fname);
		name = fname;
	}

	// Check if the function exists
	auto func = function(name);

	// If it doesn't, create it
	if (!func)
	{
		functions_.push_back(TLFunction(name));
		func = &functions_.back();
	}
	// Clear the function if we're replacing it
	else if (replace)
	{
		if (!context.empty()) {
			func->clear();
		}
		else {
			func->clearContexts();
		}
	}

	// Add the context
	func->addContext(context, args, return_type, desc, deprecated);
}
Beispiel #2
0
// -----------------------------------------------------------------------------
// Adds a function arg set to the language. If the function [name] exists,
// [args] will be added to it as a new arg set, otherwise a new function will
// be added
// -----------------------------------------------------------------------------
void TextLanguage::addFunction(
	string_view name,
	string_view args,
	string_view desc,
	string_view deprecated,
	bool        replace,
	string_view return_type)
{
	// Split out context from name
	string context;
	string func_name{ name };
	if (StrUtil::contains(name, '.'))
	{
		context   = StrUtil::beforeFirst(name, '.');
		func_name = StrUtil::afterFirst(name, '.');
	}

	// Check if the function exists
	auto func = function(func_name);

	// If it doesn't, create it
	if (!func)
	{
		functions_.emplace_back(func_name);
		func = &functions_.back();
	}
	// Clear the function if we're replacing it
	else if (replace)
	{
		if (!context.empty())
			func->clear();
		else
			func->clearContexts();
	}

	// Add the context
	func->addContext(context, args, return_type, desc, deprecated);
}