本文整理汇总了C++中Commande类的典型用法代码示例。如果您正苦于以下问题:C++ Commande类的具体用法?C++ Commande怎么用?C++ Commande使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Commande类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
void Invocateur::lire(){
for(auto it = Commande::mapCommandes().cbegin(); it != Commande::mapCommandes().cend(); ++it){
listeCommande.push_back(it->first);
}
cout << "--- SIMULATEUR DE ROBOT ---" << endl << "Commande AIDE pour avoir la liste des commandes. Elles ne sont pas sensibles à la casse." << endl;
while(true){
string rep;
cout << "Entrer une commande :" << endl;
cin >> rep;
transform(rep.begin(), rep.end(),rep.begin(), ::toupper);
if (!isCommande(rep)) {
cout << "Commande inconnue. Veuillez réessayer." << endl;
} else {
Commande* com = Commande::nouvelleCommande(rep, this);
try {
com->executer();
} catch(EtatRobot::Bad_State){
cout << "Erreur: action impossible dans cet état !" << endl;
if (com->reversible()){
Commande::pileCommandes().pop(); // pour enlever la mauvaise action de la pile
}
}
}
cin.clear();
cin.ignore(10000, '\n');
}
}
示例2: Do
void CommandeEval::Do(){
pile->pop();
for (int i = 0; i < pCommande.size(); i++){
Commande * c = pCommande.at(i);
c->Do();
}
}
示例3: Undo
void CommandeEval::Undo(){
for (int i = pCommande.size()-1; i >=0 ; i--){
Commande * c = pCommande.at(i);
c->Undo();
}
pile->push(expression);
}
示例4: DISTRIBUTEUR
void* DISTRIBUTEUR(void* param)
{
//Permettre l'arrêt du thread depuis un autre
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
while(true)
{
pthread_mutex_lock(&mutex);
//On attend que le thread VENDEUR donne le signal de la distribution de la bouteille
pthread_cond_wait(&distribuer, &mutex);
//On récupère le paramètre
Commande* ach = (Commande*)param;
system("CLS");
cout << "Monnaie restante : " << ach->getSolde() << endl;
//Si une bouteille a été achetée (c-à-d que le solde est suffisant et qu'il reste au moins 1 bouteille
if(ach->getBouteille())
cout << "Vous recevez 1 bouteille." << endl;
else
cout << "Vous ne recevez aucune bouteille." << endl;
system("PAUSE");
//On annonce au thread VENDEUR que l'action est terminée
pthread_cond_signal(&vendeur);
pthread_mutex_unlock(&mutex);
}
return NULL;
}
示例5: executer
void CommandeMacro::executer() {
Commande* commande;
while(!_macros.empty())
{
commande = _macros.front();
_macros.pop_front();
commande->executer();
}
}
示例6: redo
void CommandeManager::redo()throw (LogMessage){
if(!_listRedoableCommand->isEmpty()){
Commande * cmd = _listRedoableCommand->pop();
cmd->redo();
_listUndoableCommand->push(cmd);
}
else
throw LogMessage("redo(): Aucune commande a rétablir",1);
}
示例7: retablir
void Pile::retablir(){
if(posCommande !=0){ //== 0 pas de commande a retablir
executionCommande = 1;//On empeche de nouvelle commande de s'enregistrer pendant l'execution d'une commande
posCommande --;
Commande * c = listeCommande.at(listeCommande.size()-1-posCommande);
c->Do();
executionCommande = 0;
}
}
示例8: CommandeMultiplication
void CommandeManager::multiplication()throw(LogMessage){
Commande * cmd = new CommandeMultiplication(_pile,_utilisateur);
try{
cmd->execute();
_listUndoableCommand->push(cmd);
}
catch(LogMessage& msg){
throw;
}
}
示例9: CommandeDrop
void CommandeManager::drop()throw(LogMessage){
Commande * cmd = new CommandeDrop(_pile);
try{
cmd->execute();
_listUndoableCommand->push(cmd);
}
catch(LogMessage& msg){
throw;
}
}
示例10: CommandeMean
void CommandeManager::mean(int fin)throw(LogMessage){
Commande * cmd = new CommandeMean(_pile,_utilisateur,fin);
try{
cmd->execute();
_listUndoableCommand->push(cmd);
}
catch(LogMessage& msg){
throw;
}
}
示例11: CommandeSwap
void CommandeManager::swap(int x, int y)throw(LogMessage){
Commande * cmd = new CommandeSwap(_pile,x,y);
try{
cmd->execute();
_listUndoableCommand->push(cmd);
}
catch(LogMessage& msg){
throw;
}
}
示例12: CommandeEval
void CommandeManager::eval()throw(LogMessage){
Commande * cmd = new CommandeEval(_pile,_utilisateur,this);
try{
cmd->execute();
_listUndoableCommand->push(cmd);
}
catch(LogMessage& msg){
throw;
}
}
示例13: annuler
void Pile::annuler()
{
if(posCommande <=listeCommande.size()-1){//verification si commande a retablir
executionCommande = 1;//On empeche de nouvelle commande de s'enregistrer pendant l'execution d'une commande
Commande * c = listeCommande.at(listeCommande.size()-1-posCommande);
c->Undo();
posCommande ++;
executionCommande = 0;
}
}
示例14: main
int main () {
string entreeClavier;
Commande *commande = new Commande();
while(true) {
getline(cin, entreeClavier);
vector<string> requetes;
requetes.push_back(entreeClavier);
if(!commande->execute(requetes, false, false))
break;
}
delete commande;
return 0;
}
示例15: main
int main()
{
Robot r;
string ligne;
AfficheurText aft;
r.attacherAfficheur(aft);
cout << Console::getCommandes();
while(1){
string commandeString;
cout << "Que faire ? : ";
cin >> commandeString;
Commande *com = CommandeRobot::nouvelleCommandeRobot(commandeString, r);
com->execute();
}
}