实例:
main.c
#include <iostream>
#include <string>
#include <stdio.h>
#include "debugService.h"
using namespace std;
class testCmdByClassMemberFunction {
public:
testCmdByClassMemberFunction(std::string name, int age)
: __name(name), __age(age) {}
~testCmdByClassMemberFunction() {}
int cmd_main(int argc, char* argv[]) {
cout << "testCmdByClassMemberFunction: " << __name.c_str() << "age" << __age << endl;
return 0;
}
void set_age(int age) {
__age = age;
}
private:
std::string __name;
int __age;
};
class testCmdWithDataCommand : public BaseCommand {
public:
testCmdWithDataCommand(std::string name, int age)
: __name(name), __age(age) {}
~testCmdWithDataCommand() {}
int cmd_main(int argc, char* argv[]) {
cout << "testCmdWithDataCommand: " << __name.c_str() << "age: " << __age << endl;
return 0;
}
private:
std::string __name;
int __age;
};
static int testCmdMain(int argc, char* argv[])
{
printf("%s%d%s%s\n", __FILE__, __LINE__,__DATE__,__TIME__);
return 0;
}
int main(int argc, char** argv)
{
int age = 15;
testCmdByClassMemberFunction *testClass = new testCmdByClassMemberFunction("testClass", age);
debugServiceRegisterSimpleCommand("test_cmd", testCmdMain);
debugServiceRegisterCommand("test_cmd_with_data", new testCmdWithDataCommand("testName", 20));
debugServiceRegisterSimpleClassCommand("test_class",
&testCmdByClassMemberFunction::cmd_main, testClass);
return 0;
}
debugService.h
#ifndef __DEBUG_SERVICE__HPP
#define __DEBUG_SERVICE__HPP
#include <iostream>
#include <stdio.h>
#include <functional>
class BaseCommand {
public:
BaseCommand () {}
virtual ~BaseCommand () {}
virtual int cmd_main(int argc, char* argv[]) = 0;
};
typedef std::function<int (int, char* [])> tCmdMain;
class SimpleCommand : public BaseCommand {
public:
SimpleCommand (tCmdMain cmdMain) : __cmdMain(cmdMain) {}
virtual ~SimpleCommand () {}
virtual int cmd_main(int argc, char* argv[]) {
return __cmdMain(argc, argv);
}
private:
tCmdMain __cmdMain;
};
extern int debugServiceRegisterCommand(const char*