Example #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);
}