Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

genesisgamegeniecode.cc

Go to the documentation of this file.
00001 /*
00002  * Game Genie Encoder/Decoder
00003  * Copyright (C) 2004-2005 emuWorks
00004  * http://games.technoplaza.net/
00005  *
00006  * This file is part of Game Genie Encoder/Decoder.
00007  *
00008  * Game Genie Encoder/Decoder is free software; you can redistribute it and/or
00009  * modify it under the terms of the GNU General Public License as published by
00010  * the Free Software Foundation; either version 2 of the License, or
00011  * (at your option) any later version.
00012  *
00013  * Game Genie Encoder/Decoder is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  * GNU General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU General Public License
00019  * along with Game Genie Encoder/Decoder; if not, write to the Free Software
00020  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00021  */
00022  
00023 // $Id: genesisgamegeniecode.cc,v 1.4 2005/07/30 02:36:45 technoplaza Exp $
00024 
00025 #include "genesisgamegeniecode.hh"
00026 #include "../exceptions/invalidgamegeniecode.hh"
00027 
00028 using namespace emuWorks;
00029 
00030 const char GenesisGameGenieCode::ALPHABET[] = {
00031     'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
00032     'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S',
00033     'T', 'V', 'W', 'X', 'Y', 'Z', '0', '1',
00034     '2', '3', '4', '5', '6', '7', '8', '9'
00035 };
00036 
00037 GenesisGameGenieCode GenesisGameGenieCode::create(QString &code) {
00038     if (isValidCode(code)) {
00039         return GenesisGameGenieCode(code);
00040     }
00041     
00042     throw InvalidGameGenieCodeException();
00043 }
00044 
00045 bool GenesisGameGenieCode::isValidCode(QString &code) {
00046     GenesisGameGenieCode temp(code);
00047     
00048     const char *alphabet = temp.getAlphabet();
00049     int count = temp.getAlphabetCount();
00050     
00051     QString upper = code.toUpper();
00052     int length = upper.length();
00053     
00054     if (length != 9) {
00055         return false;
00056     }
00057     
00058     if (code[4] != '-') {
00059         return false;
00060     }
00061     
00062     for (int i = 0; i < length; i++) {
00063         if (i == 4) {
00064             continue;
00065         }
00066         
00067         bool found = false;
00068         QChar ch = code[i];
00069         char letter = ch.toAscii();
00070         
00071         for (int j = 0; j < count; j++) {
00072             if (letter == alphabet[j]) {
00073                 found = true;
00074                 break;
00075             }
00076         }
00077         
00078         if (!found) {
00079             return false;
00080         }
00081     }
00082     
00083     return true;
00084 }
00085 
00086 const char *GenesisGameGenieCode::getAlphabet() {
00087     return ALPHABET;
00088 }
00089 

Generated on Sat Jul 30 15:01:51 2005 for Game Genie Encoder/Decoder by  doxygen 1.4.4