15#ifndef _RBT_COMMAND_H_
16#define _RBT_COMMAND_H_
18#include "rxdock/geneticprogram/GPTypes.h"
26 virtual ReturnType Execute() = 0;
27 virtual int GetNArgs() = 0;
28 virtual std::string GetName() = 0;
29 virtual void SetArg(
int i, ReturnType f) = 0;
30 virtual void SetNameArg(
int i, std::string &n) = 0;
31 static void Clear() { ntabs = 0; }
45 std::string tabs(
int n) {
47 for (
int i = 0; i < n; i++)
58typedef std::vector<CommandPtr> CommandList;
59typedef CommandList::iterator CommandListIter;
60typedef CommandList::const_iterator CommandListConstIter;
63 int GetNArgs() {
return 2; }
64 std::string GetName() {
return (
"(" + NameArg[0] +
"+ " + NameArg[1] +
")"); }
66 void SetArg(
int i, ReturnType f) { Arg[i] = f; }
67 void SetNameArg(
int i, std::string &n) { NameArg[i] = n; }
68 ReturnType Execute() {
return Arg[0] + Arg[1]; }
72 std::string NameArg[2];
77 int GetNArgs() {
return 2; }
78 std::string GetName() {
return (
"(" + NameArg[0] +
"- " + NameArg[1] +
")"); }
79 void SetArg(
int i, ReturnType f) { Arg[i] = f; }
80 void SetNameArg(
int i, std::string &n) { NameArg[i] = n; }
82 ReturnType Execute() {
return Arg[0] - Arg[1]; }
86 std::string NameArg[2];
91 int GetNArgs() {
return 2; }
92 std::string GetName() {
return (
"(" + NameArg[0] +
"* " + NameArg[1] +
")"); }
93 void SetArg(
int i, ReturnType f) { Arg[i] = f; }
94 void SetNameArg(
int i, std::string &n) { NameArg[i] = n; }
96 ReturnType Execute() {
return Arg[0] * Arg[1]; }
100 std::string NameArg[2];
105 int GetNArgs() {
return 2; }
106 std::string GetName() {
107 return (
"(" + NameArg[0] +
"div " + NameArg[1] +
")");
110 void SetArg(
int i, ReturnType f) { Arg[i] = f; }
111 void SetNameArg(
int i, std::string &n) { NameArg[i] = n; }
112 ReturnType Execute() {
113 if (std::fabs(Arg[1]) < 0.000001)
115 return Arg[0] / Arg[1];
120 std::string NameArg[2];
125 int GetNArgs() {
return 3; }
126 std::string GetName() {
130 return (
"iff(" + NameArg[0] +
" , " + NameArg[1] +
" , " + NameArg[2] +
132 return (
"\n" + tabs(ntabs - 1) +
"if " + NameArg[0] +
"> 0 then\n" +
133 tabs(ntabs) + NameArg[1] +
"\n" + tabs(ntabs - 1) +
"else \n" +
134 tabs(ntabs) + NameArg[2] +
"\n" + tabs(ntabs - 1) +
"end\n");
137 void SetArg(
int i, ReturnType f) { Arg[i] = f; }
138 void SetNameArg(
int i, std::string &n) { NameArg[i] = n; }
139 ReturnType Execute() {
147 std::string NameArg[3];
152 int GetNArgs() {
return 1; }
153 std::string GetName() {
return (
"log(" + NameArg[0] +
")"); }
155 void SetArg(
int i, ReturnType f) { Arg[i] = f; }
156 void SetNameArg(
int i, std::string &n) { NameArg[i] = n; }
157 ReturnType Execute() {
158 if (std::fabs(Arg[0]) < 0.000001)
160 return (std::log(std::fabs(Arg[0])));
165 std::string NameArg[1];
170 int GetNArgs() {
return 1; }
171 std::string GetName() {
return (
"exp(" + NameArg[0] +
")"); }
173 void SetArg(
int i, ReturnType f) { Arg[i] = f; }
174 void SetNameArg(
int i, std::string &n) { NameArg[i] = n; }
175 ReturnType Execute() {
177 return std::exp(200);
180 return std::exp(Arg[0]);
185 std::string NameArg[2];
Definition SmartPointer.h:48