00001 /* 00002 * Copyright (C) 2009, Edmundo Albuquerque de Souza e Silva. 00003 * 00004 * This file may be distributed under the terms of the Q Public License 00005 * as defined by Trolltech AS of Norway and appearing in the file 00006 * LICENSE.QPL included in the packaging of this file. 00007 * 00008 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING 00009 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00010 * PURPOSE. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, 00011 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 00012 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 00013 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 00014 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 00015 * 00016 */ 00017 00018 #ifndef _PARSER_H 00019 #define _PARSER_H 00020 00021 //Command definitions 00022 #define INVCMD 0 00023 #define EXIT 1 00024 #define LS 2 00025 #define COPY 3 00026 #define CD 4 00027 #define MKDIR 5 00028 #define CREATE 6 00029 #define DISPLAY 7 00030 #define PERFORMANCE 8 00031 #define RM 9 00032 #define DF 10 00033 #define DU 11 00034 #define HELP 12 00035 #define HELPCMD 13 00036 #define SESSIONS 14 00037 #define MEASURES 15 00038 #define MV 16 00039 #define CLEAR 17 00040 // Novo comando usado pela implementacao do controle de fluxo 00041 #define CHANGERATE 18 00042 00043 // Para manter os numeros dos comandos em sequencia, mudei o identificador do 00044 // comando sync de 18 para 19. 00045 #define SYNC 19 00046 00047 // Novo comando usado pela implementacao de logs, para fazer buscas nestes logs. 00048 #define SEARCHLOGS 20 00049 00050 #define MAXNAMELEN 256 00051 #define MAXLINELEN 256 00052 #define MAXARG 20 00053 00054 struct Option 00055 { 00056 char name; 00057 char value[MAXNAMELEN]; 00058 }; 00059 00060 class CMParser 00061 { 00062 public: 00063 CMParser( char *command ); 00064 ~CMParser(); 00065 00066 void ShowUsage(); 00067 int GetCMD(); 00068 char *GetParam( int i ); 00069 // Novo parametro para podermos obter as outras opcoes alem da primeira 00070 // opcao. Se NumOpt for igual a x, entao a (x+1)-esima opcao sera a 00071 // retornada, se existir. Por default, o parametro e 0, indicando que, 00072 // como antes, a primeira opcao sera a retornada. 00073 char *GetOpt( char name, unsigned int NumOpt = 0 ); 00074 00075 private: 00076 char linebuf[MAXLINELEN]; 00077 int command; 00078 char *argv[MAXARG]; 00079 int argc; 00080 int optnum, pnum; 00081 char params[MAXARG][MAXNAMELEN]; 00082 struct Option options[MAXARG]; 00083 }; 00084 #endif