Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/new_class_id/src/lib/util/executor/executor_functional.cc @ 9730

Last change on this file since 9730 was 9730, checked in by bensch, 18 years ago

cleaner executor with evaluate function, that will be made an Object Soon.

File size: 3.7 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11### File Specific:
12   main-programmer: Benjamin Grauer
13   co-programmer: ...
14*/
15
16#include "executor_functional.h"
17
18template<> bool fromString<bool>(const std::string& input, bool defaultValue) { return isBool(input, defaultValue); };
19template<> int fromString<int>(const std::string& input, int defaultValue) { return isInt(input, defaultValue); };
20template<> unsigned int fromString<unsigned int>(const std::string& input, unsigned int defaultValue) { return isInt(input, defaultValue); };
21template<> float fromString<float>(const std::string& input, float defaultValue) { return isFloat(input, defaultValue); };
22template<> char fromString<char>(const std::string& input, char defaultValue) { return isInt(input, defaultValue); };
23template<> const std::string& fromString<const std::string&>(const std::string& input, const std::string& defaultValue) { return (input.size() > 0) ? input : defaultValue; };
24
25
26template<> bool fromMulti<bool>(const MultiType& multi) { return multi.getBool(); };
27template<> int fromMulti<int>(const MultiType& multi) { return multi.getInt(); }
28template<> unsigned int fromMulti<unsigned int>(const MultiType& multi) { return multi.getInt(); };
29template<> float fromMulti<float>(const MultiType& multi) { return multi.getFloat(); };
30template<> char fromMulti<char>(const MultiType& multi) { return multi.getChar(); };
31template<> const std::string& fromMulti<const std::string&>(const MultiType& multi) { return multi.getConstString(); };
32
33
34template<> bool getDefault<bool>(const MultiType* const defaultValues, unsigned int i) { return defaultValues[i].getBool(); };
35template<> int getDefault<int>(const MultiType* const defaultValues, unsigned int i) { return defaultValues[i].getInt(); };
36template<> unsigned int getDefault<unsigned int>(const MultiType* const defaultValues, unsigned int i) { return defaultValues[i].getInt(); };
37template<> float getDefault<float>(const MultiType* const defaultValues, unsigned int i) { return defaultValues[i].getFloat(); };
38template<> char getDefault<char>(const MultiType* const defaultValues, unsigned int i) { return defaultValues[i].getChar(); };
39template<> const std::string& getDefault<const std::string&>(const MultiType* const defaultValues, unsigned int i) { return defaultValues[i].getStoredString(); };
40
41
42
43
44
45
46
47/**
48 * A LITTLE TESTING SUITE FOR THE EXECUTOR.
49 *
50#include "executor/executor_functional.h"
51
52#define EXECUTOR_FUNCTIONAL_USE_STATIC
53#include "executor/executor_functional.h"
54
55class TestClass : public BaseObject
56{
57  public:
58    TestClass() {};
59
60    void printTest() { printf ("TEST\n"); };
61    void printTestInt(int i) { printf ("%d\n", i); };
62    void printTestBool(bool b) { printf("%d\n", (int)b); };
63    void printTwoVals(int b, int i) { printf ("%d %d\n", b, i); };
64    void printStrings(const std::string& name) { printf("String:: '%s'\n", name.c_str()); };
65    static void printStatic() { printf("STATIC\n");};
66};
67
68void TEST()
69{
70  TestClass test;
71  SubString testStrings("1 SCHEISSE, 2, 3", ",", SubString::WhiteSpaces, false);
72  (*createExecutor<TestClass>(&TestClass::printTest))(&test, testStrings);
73  (*createExecutor<TestClass>(&TestClass::printTestInt))(&test, testStrings);
74  (*createExecutor<TestClass>(&TestClass::printTestBool))(&test, testStrings);
75  (*createExecutor<TestClass>(&TestClass::printTwoVals))(&test, testStrings);
76  (*createExecutor<TestClass>(&TestClass::printStatic))(&test, testStrings);
77  (*createExecutor<TestClass>(&TestClass::printStrings))(&test, testStrings);
78
79}
80*/
Note: See TracBrowser for help on using the repository browser.