Exemple #1
0
static void free_command(struct kobject *kobj)
{
	struct command *cmd = to_command(kobj);
 
	list_del(&cmd->queue_node);
	atomic_dec(&command_count);
	dbg("command count: %d\n", atomic_read(&command_count));
	kfree(cmd->buffer);
	kfree(cmd);
}
void interpret(commandline c, Schedule* s) {
	switch (to_command(c.function)) {
		case QUIT:
			std::cout<<"Bye bye !"<<std::endl ;
			break ;
		
		case HELP:
			if (c.args.size() == 0) {
				help(HELP) ;
			} else {
				help(to_command(c.args[0])) ;
			}
			break ;

		case IMPORT:
			if (check_args(c, 2, 0)) {
				std::string schedule = 	c.args[0] ;
				std::string dotations = c.args[1] ;
			 s->import_html(schedule, dotations) ;
			}
			break ;
		case ADDTEACHER:
			for (std::vector<std::string>::iterator it=c.args.begin() ; 
				it!=c.args.end() ; it++) {
			 s->add_teacher(*it) ;
			}
			break ;
		case LISTTEACHER:
			if(check_args(c, 0, 0)) {
			 s->list_teachers() ;
			}
			break ;
		case LISTGROUP:
			if(check_args(c, 0, 0)) {
			 s->list_groups() ;
			}
			break ;
		case DISPLAY:
			if(check_args(c, 1, 1)) {
				std::string name = addspace(c.args[0]) ;
				int semester = handle_options(c.options) ;
                s->display(name, semester) ;
			}
			break ;
		case ASSIGN:
			{
				std::string teacher = addspace(c.args[0]) ;
                c.args.erase(c.args.begin()) ;
				int semester = handle_options(c.options) ;
                s->assign(teacher, c.args, semester) ;
			}
			break ;
		case UNASSIGN:
			if(check_args(c, 1, 1)) {
				std::string group = c.args[0] ;
				int semester = handle_options(c.options) ;
                s->unassign(group, semester) ;
			}
			break ;
		case UNASSIGNED:
			if(check_args(c, 0, 1)) {
				int semester = handle_options(c.options) ;
                s->unassigned_groups(semester) ;
			}
			break ;
		case COMPATIBLE:
			if(check_args(c, 1, 1)) {
				std::string name = addspace(c.args[0]) ;
				int semester = handle_options(c.options) ;
                s->compatible(name, semester) ;
			}
			break ;
		case COMPATIBLE2:
			if(check_args(c, 1, 1)) {
				std::string name = c.args[0] ;
				int semester = handle_options(c.options) ;
                s->compatible2(name, semester) ;
			}
			break ;
		case COMPATIBLEOMSI:
			if(check_args(c, 1, 1)) {
				std::string name = c.args[0] ;
				int semester = handle_options(c.options) ;
                s->compatible_omsi(name, semester) ;
			}
			break ;

		case DELETETEACHER:
			if(check_args(c, 1, 0)) {
				std::string name = c.args[0] ;
			 s->delete_teacher(name) ;
			}
			break ;
		case INDISP:
			if (check_args(c, 4, 1)) {
				std::string name = addspace(c.args[0]) ;
				int day = get_day(c.args[1]) ;
				int h_begin = get_hour(c.args[2]) ;
				int h_end = get_hour(c.args[3]) ;
				int semester = handle_options(c.options) ;
                s->indisp(name, semester, day, h_begin, h_end) ;
			}
			break ;
		case DISP:
			if (check_args(c, 4, 1)) {
				std::string name = c.args[0] ;
				int day = get_day(c.args[1]) ;
				int h_begin = get_hour(c.args[2]) ;
				int h_end = get_hour(c.args[3]) ;
				int semester = handle_options(c.options) ;
                s->disp(name, semester, day, h_begin, h_end) ;
			}
			break ;

		default:
			std::cout<<"Unrecognized command, try again !"<<std::endl ;
	}
}