Пример #1
0
void ArgumentProcessor::addSwitch(const std::string &arg,
                                  const std::string &desc)
{
    std::string flag = createFlag(arg, true);
    mSwitches.push_back(flag);
    mSwitchDesc.push_back(desc);
}
Пример #2
0
void ArgumentProcessor::addArgument(const std::string &arg,
                                    const std::string &desc,
                                    const bool optional,
                                    const std::vector<std::string> allowedValues)
{
    std::string flag = createFlag(arg, optional);
    if(optional) {
        mOptionalArguments.push_back(flag);
        mOptionalArgumentDesc.push_back(desc);
        if(allowedValues.size()) {
            mAllowedValues[flag] = allowedValues;
        }
    } else {
        mArguments.push_back(flag);
        mArgumentDesc.push_back(desc);
        if(allowedValues.size()) {
            mAllowedValues[flag] = allowedValues;
        }
    }
}
Пример #3
0
void main(void) {

  char key;  //key pressed
  Flag *flag = createFlag();
  
  PLL_init();         //set system clock freq to 24MHz
  lcd_init();         //enable lcd display (clear display)
  keypad_enable();    //enable keypad
  led_enable();       //enable leds
  seg7_disable();     //turn off and disable seg7 display
  set_lcd_addr(0x40); //set display on 2nd line
  
 
  while(1){
     
    key = getkey();     //read keypad   
    if(flag->shift == true)  //shift key was pressed  
      shiftMode(key, flag);  //operator input keys
 
    else 
      stdMode(key, flag);   //standard input keys
      
  }  //end while(1)
}  //end main                            
Пример #4
0
void shiftMode(char key, Flag *flag){ 
   switch(key){
          case 0xA:  //if memory set (A) key - save number
            midx = kidx;
            strcpy(mem, kbuf); //copy data from kbuf to mem
            flag->save = true;
            led_on(1); //turn on 2nd led to indicate saved number
            wait_keyup(); 
            break;
            
          case 0xB: //if memory recall (B) key - get saved number
            if(flag->save == true){
              flag->olock = false;
              flag->nlock = true;
              strcpy(kbuf, mem);
              kidx = midx;
              //kbuf[kidx] = '\0';                     
              clrLine(2); //clear line 2
              display(kbuf, kidx,  0x40); 
              wait_keyup();    
            }
            break;
            
             
    
          case 0x1: //if plus '+' (1) key
            addOper('+', flag);
            break;
            
          case 0x2: //if minus '-' (2) key
            addOper('-', flag);
            break;
            
          case 0x3: //if mod '%' (3) key
            addOper('%', flag);
            break;
            
          case 0x4: //if multiply '*' (4) key
            addOper('*', flag);
            break;
          
          case 0x5: //if divide key '/' (5) key
            addOper('/', flag);
            break;
            
          case 0x6: //if power '^' (6) key
            addOper('^', flag);
            break;
          
          case 0x7: //if left parenthesis '('  (7) key
            if(flag->olock == true){         
              flag->leftpar += 1;
              kbuf[kidx++] = '(';
              display(kbuf,kidx, 0x40);
              wait_keyup();
            }

            break;
            
          case 0x8: //if right parenthesis ')' (8) key
            if(flag->leftpar>0 && flag->olock==false){ //if '(' present
              flag->leftpar -= 1;
              kbuf[kidx++] = ')';
              display(kbuf,kidx, 0x40);
              flag->nlock = true; //nlock = true to stop taking number inputs
              wait_keyup();
              
             } 
             break;
            
          case 0x9: //if factorial '!' (9) key
            addOper('!', flag);            
            break;
                  
          case 0xC:   //if clear (C) key
            flag->nlock = false;
            flag->olock = true;
            flag->deci = false;
            flag = createFlag();
            clear_lcd();

            kidx = 0;        //reset kbuf index
            kbuf[kidx] = '\0'; //clear kbuf
            oidx = 0;          //reset oper index
            oper[oidx] = '\0';  //clear oper
            substart = 0;
            set_lcd_addr(0x40);
            wait_keyup(); //wait to release key
            
            break;  
          
          
          case 0xD:  // if shift (D) key
            flag->shift = false;
            wait_keyup();  //wait to release key
            break;
          
          case 0xF:   //if equal (#) key
            clrLine(1);
            //--------------------
            if(oidx > 0){
              strcat(oper, kbuf);
              oidx += kidx; 

            } 
            else{
              oidx = kidx;
              strcpy(oper, kbuf); 
            }
            oper[oidx++] = ' ';
            flag->nlock = false;
            flag->deci = false;
            kidx = 0; 
            //-------------------

            --oidx; //remove space
            
            display(oper, oidx, 0x40);
            wait_keyup();
            break;
            
          case 0x0:
            break;
          default: break; 
        }  //end switch
 
 }