You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.0 KiB
101 lines
2.0 KiB
/*
|
|
* Authors : Kerem Yollu & Edwin Koch
|
|
* Date : 07.03.2021
|
|
* Version : 0.1
|
|
* License : MIT-0
|
|
*
|
|
* Description : An easy way to intereact with argv for passing commands.
|
|
*
|
|
* TODO : Inplement singleton pattern
|
|
* TODO : Write description
|
|
* TODO : Comment the code wiht odxygen
|
|
* TODO : write a standart string Output function and implment it (will come with the BSL) 08.08.21
|
|
*/
|
|
|
|
#include "commandManager.h"
|
|
|
|
|
|
CommandManager::CommandManager():emptyIndex(0)
|
|
{
|
|
}
|
|
|
|
void CommandManager::addNewCommand( const std::string& commmand,
|
|
const std::string& description,
|
|
commanCallback_t callBack)
|
|
{
|
|
if(emptyIndex >= MAX_MUNBER_OF_COMMANDS) // Check if the command list is full
|
|
{
|
|
std::cout << "Error | Intern | Command list is full!" << std::endl;
|
|
exit(1);
|
|
}
|
|
if(getLookUpIndex(commmand) >= 0) // Chek for command duplicats
|
|
{
|
|
std::cout << "Error | Intern | Command already exitst!" << std::endl;
|
|
exit(1);
|
|
}
|
|
|
|
|
|
commandLookup[emptyIndex].commmand = commmand;
|
|
commandLookup[emptyIndex].description = description;
|
|
commandLookup[emptyIndex].callBack = callBack;
|
|
emptyIndex++;
|
|
}
|
|
|
|
void CommandManager::operator()(const std::string cmdName)
|
|
{
|
|
int index = 0;
|
|
|
|
if(cmdName == "help" || cmdName == "Help")
|
|
{
|
|
printHelp();
|
|
exit(1);
|
|
}
|
|
|
|
if(cmdName == "-h" || cmdName == "-H")
|
|
{
|
|
printCommads();
|
|
exit(1);
|
|
}
|
|
|
|
index = getLookUpIndex(cmdName);
|
|
|
|
if(index < 0)
|
|
{
|
|
std::cout << "Error | Intern | Invalid Command!" << std::endl;
|
|
exit(1);
|
|
}
|
|
|
|
commandLookup[index].callBack();
|
|
exit(1);
|
|
}
|
|
|
|
|
|
//
|
|
// Privat memeber functions
|
|
//
|
|
|
|
|
|
int CommandManager::getLookUpIndex(const std::string& cmd)
|
|
{
|
|
int index = 0;
|
|
for (index = 0; index < emptyIndex; index++)
|
|
{
|
|
if(commandLookup[index].commmand == cmd)
|
|
{
|
|
return index;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
void CommandManager::printHelp()
|
|
{
|
|
std::cout << "Function : printHelp is under construction" << std::endl;
|
|
}
|
|
|
|
void CommandManager::printCommads()
|
|
{
|
|
std::cout << "Function : printCommads is under construction" << std::endl;
|
|
}
|
|
|