示例#1
0
文件: error.hpp 项目: GermainZ/vimpc
void Error(uint32_t errorNumber, std::string errorString)
{
   if ((errorNumber != 0) && (errorNumber < (static_cast<uint32_t>(ErrorNumber::ErrorCount))))
   {
      Ui::ErrorWindow & errorWindow(Ui::ErrorWindow::Instance());
      errorWindow.SetError(true);
      errorWindow.SetLine("E%d: %s", errorNumber, errorString.c_str());
   }
}
示例#2
0
文件: Save.cpp 项目: GhaisB/Bomberman
void		Save::run()
{
  std::ofstream objetfichier;
  std::string	name;
  ObjectType	t;
  int		iter = 1;
  int		i = 1;
  
  name = "../maps/";
  name = name + this->_name + ".map";
  if (isExisting(this->_name) == false)
    {
      if (this->_list.size() != 0)
	{
	  objetfichier.open(name.data(), std::ios::app);
	  for (std::map<int, Object *>::iterator it = this->_list.begin(); it != this->_list.end(); ++it)
	    {
	      t = (*it).second->getType();
	      if (t == BONUS)
		t = BONUSRANDOM;
	      else if (t == BONUSCLAYMORE)
		t = BONUSRANDOM;
	      std::string s = intToString(t);
	      objetfichier.write(reinterpret_cast<const char *>(s.data()), s.size());
	      if (iter == this->_size)
		{
		  i++;
		  iter = 0;
		  objetfichier.write(reinterpret_cast<const char *>("\n"), 1);
		}
	      else
		objetfichier.write(reinterpret_cast<const char *>(" "), 1);
	      iter++;
	    }
	  objetfichier.close();
	  errorWindow("Your map is now saved", "information");
	}
      else
	errorWindow("Your map is not generated", "Save error");
    }
}
Intervall parse(string input){
    Intervall result = Intervall(NAN);
    //string term((inputIntervall->text()).toStdString());
    string term=clearString(input);//Leerzeichen in term löschen
    if(term!=""){
        if(validChars(term)==false){//Überprüfung, ob term ungültige Zeichen enthält
            errorWindow("Nonvalid character!");
            return Intervall(NAN);
        }else if(brackets(term)==false){//Überprüfung, ob die Anzahl von "(" mit ")" in term übereinstimmt
            errorWindow("Can't match delimiters!");
            return Intervall(NAN);
        }else if(intervalBrackets(term)==false){//Überprüfung, ob die Anzahl von "[" mit "]" in term übereinstimmt
            errorWindow("Can't match interval delimiters!");
            return Intervall(NAN);
        }else {
            result=parseTermOfIntervals(term);//term parsen -> result
        }
    }
    return result;

}
示例#4
0
/*******************************************************************************
*  Presenta una ventana con un mensaje de error protegiendo con semaforos      *
*                                                                              *
*  Parámetros:                                                                 *
*   -msg: Mensaje a presentar
*   -mainthread: hilo principal                                              *
*  Retorno:                                                                    *
* -void                                                                  *
*                                                                              *
*******************************************************************************/
void interfaceErrorWindow(char *msg, int main_thread){

  if(!main_thread){
    gdk_threads_enter();
  }

  errorWindow(msg);

  if(!main_thread){
    gdk_threads_leave();
  }

}
示例#5
0
文件: Save.cpp 项目: GhaisB/Bomberman
bool		Save::isExisting(std::string &name)
{
  std::string	error;
  DIR		*d;
  struct dirent *dr;

  if ((d = opendir("../maps")) == NULL)
    return (true);
  while ((dr = readdir(d)) != NULL)
    if (dr->d_name == (name + ".map"))
      {
	error = "file ";
	error += name;
	error += " already exists";
	errorWindow(error, "error");
	return (true);
      }
  closedir(d);
  return (false);
}
int chooseKeyboard(struct loaderData_s * loaderData, char ** kbdtypep) {
    int num = -1;
    int rc;
    gzFile f;
    struct kmapHeader hdr;
    struct kmapInfo * infoTable;
    struct langInfo * languages;
    int numLanguages;
    char ** kbds;
    char buf[16384]; 			/* I hope this is big enough */
    int i;
    char * defkbd = loaderData->kbd ? loaderData->kbd : NULL;
    char *lang;

#if defined(__s390__) || defined(__s390x__)
    return LOADER_NOOP;
#endif

    if (FL_SERIAL (flags) || FL_VIRTPCONSOLE(flags)) return LOADER_NOOP;

    numLanguages = getLangInfo(&languages);

    lang = getenv("LANG");
    if (!lang)
       lang = loaderData->lang;

    if (!defkbd && lang) {
	for (i = 0; i < numLanguages; i++) {
	    if (!strncmp(languages[i].lc_all, lang, 2)) {
		defkbd = languages[i].keyboard;
		break;
	    }
	}
    }

    if (!defkbd)
	defkbd = "us";

    f = gzopen("/etc/keymaps.gz", "r");
    if (!f) {
	errorWindow("cannot open /etc/keymaps.gz: %s");
	return LOADER_ERROR;
    }

    if (gzread(f, &hdr, sizeof(hdr)) != sizeof(hdr)) {
	errorWindow("failed to read keymaps header: %s");
	gzclose(f);
	return LOADER_ERROR;
    }

    logMessage(INFO, "%d keymaps are available", hdr.numEntries);

    i = hdr.numEntries * sizeof(*infoTable);
    infoTable = alloca(i);
    if (gzread(f, infoTable, i) != i) {
	errorWindow("failed to read keymap information: %s");
	gzclose(f);
	return LOADER_ERROR;
    }

    if (num == -1 ) {
	kbds = alloca(sizeof(*kbds) * (hdr.numEntries + 1));
	for (i = 0; i < hdr.numEntries; i++)  {
	    kbds[i] = infoTable[i].name;
	}

	kbds[i] = NULL;
	qsort(kbds, i, sizeof(*kbds), simpleStringCmp);

	for (i = 0; i < hdr.numEntries; i++) 
	    if (!strcmp(kbds[i], defkbd)) 
		num = i;

	rc = newtWinMenu(_("Keyboard Type"), 
			_("What type of keyboard do you have?"),
		        40, 5, 5, 8, kbds, &num, _("OK"), _("Back"), NULL);
	if (rc == 2) return LOADER_BACK;

	/* num needs to index the right keyboard infoTable */
	for (i = 0; i < hdr.numEntries; i++)
	    if (!strcmp(kbds[num], infoTable[i].name)) break;
	num = i;
    }

    rc = 0;

    for (i = 0; i < num; i++) {
	if (gzread(f, buf, infoTable[i].size) != infoTable[i].size) {
	    logMessage(ERROR, "error reading %d bytes from file: %m",
		       infoTable[i].size);
	    gzclose(f);
	    rc = LOADER_ERROR;
	}
    }

    if (!rc) rc = loadKeymap(f);

    /* normalize the error condition */
    /* MSWFIXME - do we want to warn the user that setting the
       keyboard didn't work?
    */
    if (rc != 0)
	rc = LOADER_ERROR;
    else
        gzclose(f);

    loaderData->kbd = strdup(infoTable[num].name);

    return rc;
}
double parseNumbers(string input){
    string::iterator it;
    it = input.begin();
    double result=0;
    while(*it>='0' && *it<='9'){
        switch(*it){
            case '0':
                result *= 10;
                break;
            case '1':
                result *= 10;
                result += 1;
                break;
            case '2':
                result *= 10;
                result += 2;
                break;
            case '3':
                result *= 10;
                result += 3;
                break;
            case '4':
                result *= 10;
                result += 4;
                break;
            case '5':
                result *= 10;
                result += 5;
                break;
            case '6':
                result *= 10;
                result += 6;
                break;
            case '7':
                result *= 10;
                result += 7;
                break;
            case '8':
                result *= 10;
                result += 8;
                break;
            case '9':
                result *= 10;
                result += 9;
                break;
        }
        it++;
    }
    if(*it=='.'){
        it++;
        int stelle = -1;
        while(*it>='0' && *it<='9'){
            switch(*it){
                case '0':
                    break;
                case '1':
                    result += 1*pow(10,stelle);
                    break;
                case '2':
                    result += 2*pow(10,stelle);
                    break;
                case '3':
                    result += 3*pow(10,stelle);
                    break;
                case '4':
                    result += 4*pow(10,stelle);
                    break;
                case '5':
                    result += 5*pow(10,stelle);
                    break;
                case '6':
                    result += 6*pow(10,stelle);
                    break;
                case '7':
                    result += 7*pow(10,stelle);
                    break;
                case '8':
                    result += 8*pow(10,stelle);
                    break;
                case '9':
                    result += 9*pow(10,stelle);
                    break;
            }
            it++;
            stelle--;
        }
    }
    if(it!=input.end()){
        errorWindow("Couldn't read Number");
        return NAN;
    }
    return result;
}
Intervall parseTermOfIntervals(string input){
    string::iterator it;
    int brackets = 0;
    int closedBrackets = 0;
    if(input=="")
        return 0;
    for(it=input.end();it>=input.begin();it--){
        if(*it=='(')
            brackets++;
        if(*it==')')
            brackets--;
        if(*it=='[')
            closedBrackets++;
        if(*it==']')
            closedBrackets--;
        if(*it=='|' && brackets==0 && closedBrackets==0){
            if(it==input.begin()){
                //Bin‰rem Operator fehlt Operand
                errorWindow("Operand missing!");
                return Intervall(NAN);
            }
            if(it+1==input.end()){
                //Bin‰rem Operator fehlt Operand
                errorWindow("Operand missing!");
                return Intervall(NAN);
            }
            string input1(input.begin(),it);
            string input2(it+1,input.end());
            Intervall result = parseTermOfIntervals(input1)||parseTermOfIntervals(input2);
            if(result.getInf()!=result.getInf()){
                errorWindow("Vereinigung disjunkter Intervalle!");
            }
            return result;
        }
    }
    for(it=input.end();it>=input.begin();it--){
        if(*it=='(')
            brackets++;
        if(*it==')')
            brackets--;
        if(*it=='[')
            closedBrackets++;
        if(*it==']')
            closedBrackets--;
        if(*it=='&' && brackets==0 && closedBrackets==0){
            if(it==input.begin()){
                //Bin‰rem Operator fehlt Operand
                errorWindow("Operand missing!");
                return Intervall(NAN);
            }
            if(it+1==input.end()){
                //Bin‰rem Operator fehlt Operand
                errorWindow("Operand missing!");
                return Intervall(NAN);
            }
            string input1(input.begin(),it);
            string input2(it+1,input.end());
            Intervall result = parseTermOfIntervals(input1)&&parseTermOfIntervals(input2);
            if(result.getInf()!=result.getInf()){
                errorWindow("Schnitt disjunkter Intervalle!");
            }
            return result;
        }
    }
    for(it=input.end();it>=input.begin();it--){
        if(*it=='(')
            brackets++;
        if(*it==')')
            brackets--;
        if(*it=='[')
            closedBrackets++;
        if(*it==']')
            closedBrackets--;
        if(*it=='+' && brackets==0 && closedBrackets==0 && *(it-1)!='/' && *(it-1)!='*' && *(it-1)!='-' && *(it-1)!='+'){
            if(it==input.begin()){
                string input2(it+1,input.end());
                return parseTermOfIntervals(input2);
            }
            if(it+1==input.end()){
                //Bin‰rem Operator fehlt Operand//
                errorWindow("Operand missing!");
                return Intervall(NAN);
            }
            string input1(input.begin(),it);
            string input2(it+1,input.end());
            return parseTermOfIntervals(input1)+parseTermOfIntervals(input2);
        }
        if(*it=='-' && brackets==0 && closedBrackets==0 && *(it-1)!='/' && *(it-1)!='*' && *(it-1)!='-' && *(it-1)!='+'){
            if(it==input.begin()){
                string input2(it+1,input.end());
                return Intervall(0)-parseTermOfIntervals(input2);
            }
            if(it+1==input.end()){
                //Bin‰rem Operator fehlt Operand//
                errorWindow("Operand missing!");
                return Intervall(NAN);
            }
            string input1(input.begin(),it);
            string input2(it+1,input.end());
            return parseTermOfIntervals(input1)-parseTermOfIntervals(input2);
        }
    }
    it=input.begin();
    if(*it=='('){
        brackets++;
        while(brackets>0){
            it++;
            if(*it=='(')
                brackets++;
            if(*it==')')
                brackets--;
        }
        it++;
        if(it==input.end()){
            string input1(input.begin()+1,input.end()-1);
            return parseTermOfIntervals(input1);
        }
        if(*it=='*'){
            string input1(input.begin()+1,it-1);
            if(it+1==input.end()){
                //Bin‰rem Operator fehlt Operand//
                errorWindow("Operand missing!");
                return Intervall(NAN);
            }
            string input2(it+1,input.end());
            return parseTermOfIntervals(input1)*parseTermOfIntervals(input2);
        }
        if(*it=='/'){
            string input1(input.begin()+1,it-1);
            if(it+1==input.end()){
                //Bin‰rem Operator fehlt Operand//
                errorWindow("Operand missing!");
                return Intervall(NAN);
            }
            string input2(it+1,input.end());
            Intervall result2 = parseTermOfIntervals(input2);
            if(result2.getInf()<=0 && result2.getSup()>=0){
                //Teilen durch 0!
                errorWindow("Division by zero!");
                return Intervall(NAN);
            }
            return parseTermOfIntervals(input1)/result2;
        }
    }
    if(*it=='*' || *it=='/'){
        //Bin‰rem Operator fehlt Operand//
        errorWindow("Operand missing!");
        return Intervall(NAN);
    }
    closedBrackets = 0;
    if(*it=='['){
        for(;it<input.end();it++){
            if(*it=='[')
                closedBrackets++;
            if(*it==']')
                closedBrackets--;
            if(*it=='*' && closedBrackets==0){
                string input1(input.begin(),it);
                string input2(it+1,input.end());
                return parseIntervals(input1)*parseTermOfIntervals(input2);
            }
            if(*it=='/' && closedBrackets==0){
                string input1(input.begin(),it);
                string input2(it+1,input.end());
                Intervall result2 = parseTermOfIntervals(input2);
                if(result2.getInf()<=0 && result2.getSup()>=0){
                    //Teilen durch 0!
                    errorWindow("Division by zero!");
                    return Intervall(NAN);
                }
                return parseIntervals(input1)/result2;
            }
        }
        return parseIntervals(input);
    }
    size_t found1 = input.find_first_of("*");
    if(found1!=string::npos){
        string input1 = input.substr(0,found1);
        string input2 = input.substr(found1+1);
        return parseNumbers(input1)*parseTermOfIntervals(input2);
    }
    size_t found2 = input.find_first_of("/");
    if(found2!=string::npos){
        string input1 = input.substr(0,found2);
        string input2 = input.substr(found2+1);
        Intervall result2 = parseTermOfIntervals(input2);
        if(result2.getInf()<=0 && result2.getSup()>=0){
            //Teilen durch 0!
            errorWindow("Division by zero!");
            return Intervall(NAN);
        }
        return parseNumbers(input1)/result2;
    }
    if(found1==string::npos && found2==string::npos){
        return parseNumbers(input);
    }

    errorWindow("42: "+input);
    return Intervall(NAN);
}
double parseTermOfNumbers(string input){
    string::iterator it;
    int brackets = 0;
    if(input=="")
        return 0;
    for(it=input.end();it>=input.begin();it--){
        if(*it=='(')
            brackets++;
        if(*it==')')
            brackets--;
        if(*it=='+' && brackets==0 && *(it-1)!='/' && *(it-1)!='*' && *(it-1)!='-' && *(it-1)!='+' && *(it-1)!='|' && *(it-1)!='&'){
            if(it==input.begin()){
                string input2(it+1,input.end());
                return parseTermOfNumbers(input2);
            }
            if(it+1==input.end()){
                //Bin‰rem Operator fehlt Operand//
                errorWindow("Operand missing!");
                return double(NAN);
            }
            string input1(input.begin(),it);
            string input2(it+1,input.end());
            return parseTermOfNumbers(input1)+parseTermOfNumbers(input2);
        }
        if(*it=='-' && brackets==0 && *(it-1)!='/' && *(it-1)!='*' && *(it-1)!='-' && *(it-1)!='+' && *(it-1)!='|' && *(it-1)!='&'){
            if(it==input.begin()){
                string input2(it+1,input.end());
                return -parseTermOfNumbers(input2);
            }
            if(it+1==input.end()){
                //Bin‰rem Operator fehlt Operand//
                errorWindow("Operand missing!");
                return double(NAN);
            }
            string input1(input.begin(),it);
            string input2(it+1,input.end());
            return parseTermOfNumbers(input1)-parseTermOfNumbers(input2);
        }
    }
    it=input.begin();
    if(*it=='('){
        brackets++;
        while(brackets>0){
            it++;
            if(*it=='(')
                brackets++;
            if(*it==')')
                brackets--;
        }
        it++;
        if(it==input.end()){
            string input1(input.begin()+1,input.end()-1);
            return parseTermOfNumbers(input1);
        }
        if(*it=='*'){
            string input1(input.begin()+1,it-1);
            if(it+1==input.end()){
                //Bin‰rem Operator fehlt Operand//
                errorWindow("Operand missing!");
                return double(NAN);
            }
            string input2(it+1,input.end());
            return parseTermOfNumbers(input1)*parseTermOfNumbers(input2);
        }
        if(*it=='/'){
            string input1(input.begin()+1,it-1);
            if(it+1==input.end()){
                //Bin‰rem Operator fehlt Operand//
                errorWindow("Operand missing!");
                return double(NAN);
            }
            string input2(it+1,input.end());
            double result2 = parseTermOfNumbers(input2);
            if(result2==0){
                //Teilen durch 0!
                errorWindow("Division by zero!");
                return double(NAN);
            }
            return parseTermOfNumbers(input1)/result2;
        }
    }
    if(*it=='*' || *it=='/'){
        //Bin‰rem Operator fehlt Operand//
        errorWindow("Operand missing!");
        return double(NAN);
    }
    size_t found1 = input.find_first_of("*");
    if(found1!=string::npos){
        string input1 = input.substr(0,found1);
        string input2 = input.substr(found1+1);
        return parseNumbers(input1)*parseTermOfNumbers(input2);
    }
    size_t found2 = input.find_first_of("/");
    if(found2!=string::npos){
        string input1 = input.substr(0,found2);
        string input2 = input.substr(found2+1);
        double result2 = parseTermOfNumbers(input2);
        if(result2==0){
            //Teilen durch 0!
            errorWindow("Division by zero!");
            return double(NAN);
        }
        return parseNumbers(input1)/result2;
    }
    if(found1==string::npos && found2==string::npos){
        return parseNumbers(input);
    }
    errorWindow("42!");
    return double(NAN);
}
示例#10
0
void connectToServer(const char *server, const char* port)
{
    char *nick = getApodo();
    char *user = getNombre();
    char *name = getNombreReal();
    int sock;
    const char *err;
    char addr_str[100];
    int retval;
    struct serv_info serv;

    if (!server || strlen(server) == 0)
    {
        errorText("Error: servidor inválido.");
        return;
    }

    if (!port || strlen(port) == 0)
    {
        errorText("Error: puerto inválido.");
        return;
    }

    if (!nick || !user || !name || strlen(nick) == 0 || strlen(user) == 0 || strlen(name) == 0)
    {
        errorWindow("Rellene los datos de nombre/usuario/apodo");
        return;
    }   

    if(client->connected)
        disconnectClient(NULL);

    messageText("Conectando con %s...", server);

    retval = client_connect_to(server, port, addr_str, 100);

    if (retval == ERR_SYS)
        err = strerror(errno);
    else if (retval == ERR_AIR)
        err = "no se ha podido resolver la dirección";
    else if (retval == ERR_NOTFOUND)
        err = "no se ha podido conectar.";
    else
        err = "error desconocido.";

    if (retval <= 0)
    {
        errorText("Error resolviendo %s: %s", server, err);
        return;
    }

    sock = retval;

    if (send_message(rcv_sockcomm, &sock, sizeof(int)) == ERR_SOCK)
    {
        errorText("Error al configurar la nueva conexión: %s", strerror(errno));
        close(sock);
        return;
    }

    irc_send_message(snd_qid, sock, "NICK %s", getApodo());
    irc_send_message(snd_qid, sock, "USER %s %s %s :%s", getNombre(), "0", "*", getNombreReal());

    client->connected = 1;
    strncpy(client->nick, nick, MAX_NICK_LEN);
    client->serv_sock = sock;

    setUserConnectionState(TRUE);

    strncpy(serv.servname, server, SERV_NAMELEN);
    strncpy(serv.port, port, MAX_PORT_LEN);
    serv_save_connection(&serv);

    client->connected = 1;
    messageText("Conectado a %s", addr_str);
    saveUserSettings(nick, user, name);
}
示例#11
0
 inline void fatalErrorWindow(const char* msg)
 {
     errorWindow(msg);
     exit(1);
 }