QScriptValue ScriptableSyntaxDefinition::KEYWORD_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 1);
	QString keys = context->argument(0).toString();
	NODE node = super(context)->KEYWORD(keys.toUtf8());
	return nodeToScriptValue(engine, node);
}
 virtual void run(std::string notParsedArgs) {
   out << "in status!\n";
   std::vector<std::string> parsedArgs = parseArguments(notParsedArgs);
   if (checkNumberOfArguments(parsedArgs.size(), 0, out)) {
     manager.status();
   }
 }
QScriptValue ScriptableSyntaxDefinition::STRING_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 1);
	QString s = context->argument(0).toString();
	NODE node = super(context)->STRING(s.constData());
	return nodeToScriptValue(engine, node);
}
QScriptValue ScriptableSyntaxDefinition::OTHER_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 1);
	QChar ch = context->argument(0).toString().at(0);
	NODE node = super(context)->OTHER(ch);
	return nodeToScriptValue(engine, node);
}
QScriptValue ScriptableSyntaxDefinition::NOT_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 1);
	NODE entry = context->argument(0).toVariant().value<NODE>();
	NODE node = super(context)->NOT(entry);
	return nodeToScriptValue(engine, node);
}
QScriptValue ScriptableSyntaxDefinition::GLUE_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 2, intMax);
	NODE node = super(context)->GLUE();
	for (int i = 0, n = context->argumentCount(); i < n; ++i)
		node->appendChild(context->argument(i).toVariant().value<NODE>());
	return nodeToScriptValue(engine, node);
}
QScriptValue ScriptableSyntaxDefinition::ENTRY_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 1);
	const char* name = 0;
	constCharFromScriptValue(context->argument(0), name);
	super(context)->ENTRY(name);
	return QScriptValue();
}
QScriptValue ScriptableSyntaxDefinition::VARSTRING_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 1);
	const char* name = 0;
	constCharFromScriptValue(context->argument(0), name);
	NODE node = super(context)->VARSTRING(name);
	return nodeToScriptValue(engine, node);
}
QScriptValue ScriptableSyntaxDefinition::DEFINE_VOID_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 2);
	const char* name = 0;
	constCharFromScriptValue(context->argument(0), name);
	NODE entry = context->argument(1).toVariant().value<NODE>();
	super(context)->DEFINE_VOID(name, entry);
	return QScriptValue();
}
QScriptValue ScriptableSyntaxDefinition::SETCHAR_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 2);
	const char* name = 0;
	constCharFromScriptValue(context->argument(0), name);
	QChar value = context->argument(1).toString().at(0);
	NODE node = super(context)->SETCHAR(name, value);
	return nodeToScriptValue(engine, node);
}
QScriptValue ScriptableSyntaxDefinition::STATE_CHAR_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 2);
	const char* name = 0;
	constCharFromScriptValue(context->argument(0), name);
	QChar defaultValue = context->argument(1).toString().at(0);
	super(context)->STATE_CHAR(name, defaultValue);
	return QScriptValue();
}
QScriptValue ScriptableSyntaxDefinition::INVOKE_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 1, 2);
	const char* name = 0;
	constCharFromScriptValue(context->argument(0), name);
	NODE coverage = context->argument(1).toVariant().value<NODE>();
	NODE node = super(context)->INVOKE(name, coverage);
	return nodeToScriptValue(engine, node);
}
QScriptValue ScriptableSyntaxDefinition::STATE_FLAG_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 2);
	const char* name = 0;
	constCharFromScriptValue(context->argument(0), name);
	bool defaultValue = context->argument(1).toBool();
	super(context)->STATE_FLAG(name, defaultValue);
	return QScriptValue();
}
QScriptValue ScriptableSyntaxDefinition::IF_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 3);
	const char* name = 0;
	constCharFromScriptValue(context->argument(0), name);
	NODE trueBranch = context->argument(1).toVariant().value<NODE>();
	NODE falseBranch = context->argument(2).toVariant().value<NODE>();
	NODE node = super(context)->IF(name, trueBranch, falseBranch);
	return nodeToScriptValue(engine, node);
}
QScriptValue ScriptableSyntaxDefinition::PREVIOUS_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 1, 2);
	const char* name = 0;
	const char* keyword = 0;
	constCharFromScriptValue(context->argument(0), name);
	if (context->argumentCount() == 2)
		constCharFromScriptValue(context->argument(1), keyword);
	NODE node = super(context)->PREVIOUS(name, keyword);
	return nodeToScriptValue(engine, node);
}
QScriptValue ScriptableSyntaxDefinition::OPTION_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 2);
	const char* name = 0;
	constCharFromScriptValue(context->argument(0), name);
	QScriptValue value = context->argument(1);
	if (value.isBool())
		super(context)->OPTION(name, value.toBool());
	/*else if (value.isNumber())
		super(context)->OPTION(name, value.toInt32());
	else if (value.isString())
		super(context)->OPTION(name, value.toString());*/
	return QScriptValue();
}
QScriptValue ScriptableSyntaxDefinition::EXCEPT_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 1, 2);
	if (context->argumentCount() == 2) {
		QChar a = context->argument(0).toString().at(0);
		QChar b = context->argument(1).toString().at(0);
		NODE node = super(context)->EXCEPT(a, b);
		return nodeToScriptValue(engine, node);
	}
	else if (context->argumentCount() == 1) {
		QString s = context->argument(0).toString();
		NODE node = super(context)->EXCEPT(s.constData());
		return nodeToScriptValue(engine, node);
	}
	return QScriptValue();
}
Exemple #18
0
int main(int argc, char *argv[]){
	BookCatalog catalog;
	string operation=argv[1];
	checkNumberOfArguments(argc);
	catalog = createCatalog(count_lines_of_file());
	
	if(areEqual(upper(operation),"TAGS"))TagOperations(argv[2],argv[3],catalog,argc);
	else if(areEqual(upper(operation),"ADD"))addBook(argv[2], argc, catalog);
	else if(areEqual(upper(operation), "LIST"))showListOfBooks(catalog, argc);
	else if(areEqual(upper(operation),"SEARCH"))search_books_using_diffrent_fields(argv[2], argv[3], catalog, argc);
	else if(areEqual(upper(operation),"REMOVE")){delete_the_book_using_isbn( argv[2],argv[3], catalog, argc);printf("book is deleted\n");}
	else if(areEqual(upper(operation), "UPDATE"))updateBook(argv[2], catalog, argc);
	else if(areEqual(upper(operation), "--HELP"))provideHelp(argc);
	else giveExcuse();
	clearCatalog(catalog);
	return 0;
}
QScriptValue ScriptableSyntaxDefinition::LENGTH_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 2, 3);
	if (context->argumentCount() == 2) {
		int minLength = context->argument(0).toUInt32();
		NODE entry = context->argument(1).toVariant().value<NODE>();
		NODE node = super(context)->LENGTH(minLength, entry);
		return nodeToScriptValue(engine, node);
	}
	else if (context->argumentCount() == 3) {
		int minLength = context->argument(0).toUInt32();
		int maxLength = context->argument(1).toUInt32();
		NODE entry = context->argument(2).toVariant().value<NODE>();
		NODE node = super(context)->LENGTH(minLength, maxLength, entry);
		return nodeToScriptValue(engine, node);
	}
	return QScriptValue();
}
QScriptValue ScriptableSyntaxDefinition::REPEAT_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 1, 3);
	if (context->argumentCount() == 1) {
		NODE entry = context->argument(0).toVariant().value<NODE>();
		NODE node = super(context)->REPEAT(entry);
		return nodeToScriptValue(engine, node);
	}
	else if (context->argumentCount() == 2) {
		int minRepeat = context->argument(0).toUInt32();
		NODE entry = context->argument(1).toVariant().value<NODE>();
		NODE node = super(context)->REPEAT(minRepeat, entry);
		return nodeToScriptValue(engine, node);
	}
	else if (context->argumentCount() == 3) {
		int minRepeat = context->argument(0).toUInt32();
		int maxRepeat = context->argument(1).toUInt32();
		NODE entry = context->argument(2).toVariant().value<NODE>();
		NODE node = super(context)->REPEAT(minRepeat, maxRepeat, entry);
		return nodeToScriptValue(engine, node);
	}
	return QScriptValue();
}
QScriptValue ScriptableSyntaxDefinition::LINK_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 0);
	super(context)->LINK();
	return QScriptValue();
}
QScriptValue ScriptableSyntaxDefinition::FAIL_(QScriptContext* context, QScriptEngine* engine)
{
	checkNumberOfArguments(context, 0);
	NODE node = super(context)->FAIL();
	return nodeToScriptValue(engine, node);
}
 virtual void run(std::string notParsedArgs) {
   std::vector<std::string> parsedArgs = parseArguments(notParsedArgs);
   if (checkNumberOfArguments(parsedArgs.size(), 1, out)) {
     manager.run(atoi(parsedArgs[0].c_str()));
   }
 }
 virtual void run(std::string notParsedArgs) {
   std::vector<std::string> parsedArgs = parseArguments(notParsedArgs);
   if (checkNumberOfArguments(parsedArgs.size(), 0, out)) {
     manager.newCommand("stop",0);
   }
 }