00001 #include "ThymioIntermediateRepresentation.h" 00002 00003 namespace Aseba 00004 { 00005 00006 ThymioIRButton::ThymioIRButton(int size, ThymioIRButtonName n, int states) : 00007 buttons(size), 00008 memory(-1), 00009 numStates(states), 00010 name(n) 00011 { 00012 } 00013 00014 ThymioIRButton::~ThymioIRButton() 00015 { 00016 buttons.clear(); 00017 } 00018 00019 void ThymioIRButton::setClicked(int i, int status) 00020 { 00021 if( i<size() ) 00022 buttons[i] = status; 00023 } 00024 00025 int ThymioIRButton::isClicked(int i) const 00026 { 00027 if( i<size() ) 00028 return buttons[i]; 00029 00030 return -1; 00031 } 00032 00033 int ThymioIRButton::getNumStates() const 00034 { 00035 return numStates; 00036 } 00037 00038 int ThymioIRButton::size() const 00039 { 00040 return buttons.size(); 00041 } 00042 00043 void ThymioIRButton::setMemoryState(int s) 00044 { 00045 memory = s; 00046 } 00047 00048 int ThymioIRButton::getMemoryState() const 00049 { 00050 return memory; 00051 } 00052 00053 void ThymioIRButton::setBasename(wstring n) 00054 { 00055 basename = n; 00056 } 00057 00058 ThymioIRButtonName ThymioIRButton::getName() const 00059 { 00060 return name; 00061 } 00062 00063 wstring ThymioIRButton::getBasename() const 00064 { 00065 return basename; 00066 } 00067 00068 bool ThymioIRButton::isEventButton() const 00069 { 00070 return (name < 5 ? true : false); 00071 } 00072 00073 bool ThymioIRButton::isSet() const 00074 { 00075 for(int i=0; i<size(); ++i) 00076 { 00077 if( buttons[i] > 0 ) 00078 return true; 00079 } 00080 00081 return false; 00082 } 00083 00084 void ThymioIRButton::accept(ThymioIRVisitor *visitor) 00085 { 00086 visitor->visit(this); 00087 } 00088 00089 ThymioIRButtonSet::ThymioIRButtonSet(ThymioIRButton *event, ThymioIRButton *action) : 00090 eventButton(event), 00091 actionButton(action) 00092 { 00093 } 00094 00095 void ThymioIRButtonSet::addEventButton(ThymioIRButton *event) 00096 { 00097 eventButton = event; 00098 } 00099 00100 void ThymioIRButtonSet::addActionButton(ThymioIRButton *action) 00101 { 00102 actionButton = action; 00103 } 00104 00105 ThymioIRButton *ThymioIRButtonSet::getEventButton() 00106 { 00107 return eventButton; 00108 } 00109 00110 ThymioIRButton *ThymioIRButtonSet::getActionButton() 00111 { 00112 return actionButton; 00113 } 00114 00115 bool ThymioIRButtonSet::hasEventButton() const 00116 { 00117 return (eventButton == 0 ? false : true); 00118 } 00119 00120 bool ThymioIRButtonSet::hasActionButton() const 00121 { 00122 return (actionButton == 0 ? false : true); 00123 } 00124 00125 void ThymioIRButtonSet::accept(ThymioIRVisitor *visitor) 00126 { 00127 visitor->visit(this); 00128 } 00129 00130 00131 }; // Aseba