diff --git a/Error.h b/Error.h index fa64342..8f545ef 100644 --- a/Error.h +++ b/Error.h @@ -6,20 +6,32 @@ enum errorCode{ OK, //Database errors - DB_CLIENT_NOT_FOUND = 1, + DB_LI = 1, + DB_CLIENT_NOT_FOUND = DB_LI, DB_VEHICLE_NOT_FOUND, DB_DUPLICATE_CLIENT, DB_DUPLICATE_VEHICLE, + DB_LS = DB_DUPLICATE_VEHICLE, //Client Errors - CL_SERVER_TIMEOUT = 100, + CL_LI = 100, + CL_SERVER_TIMEOUT = CL_LI, + CL_LS = CL_SERVER_TIMEOUT, //Vehicle Errors - VH_CLIENT_ASSOCIATE = 200, + VH_LI = 200, + VH_CLIENT_ASSOCIATE = VH_LI, + VH_LS = VH_CLIENT_ASSOCIATE, //Terminal errors (for) TR_NOT_ENOUGH_FUNDS = 300, TR_JUST_ENOUGH_FUNDS, TR_CLIENT_NOT_FOUND, }; +// enumRange es el rango en donde hay enums definidos, donde se consideran +// pares de numeros para el rango, siendo el primero el limite inferior y +// el segundo el limite superior (NO EXCLUYENTES). "errLib" debe contener +// al menos una cadena vacia para asignar un espacio en el arreglo. En caso +// de no tener cadenas, el rango de aquellas debera ser excluido de enumRange +const int enumRange[] = {DB_LI, DB_LS, CL_LI, CL_LS, VH_LI, VH_LS}; const std::string errLib[][99] = { { @@ -45,7 +57,18 @@ const std::string errLib[][99] = { } }; -inline std::string getErrMsg(int error){ +bool checkEnumRange(int error){ + for(int i = 0; i<(sizeof(enumRange)/sizeof(*enumRange)); i += 2) { + if(enumRange[i] <= error && enumRange[i+1] >= error) + return true; + } + return false; +} + +std::string getErrMsg(int error){ + if (checkEnumRange(error) == 0) + return "NO_ERR_MSG"; + int errType = error / 100; int errId = error % 100; return errLib[errType][errId];