// langstat.cpp : Defines the entry point for the console application.
//

#include <stdlib.h>
#include <crengine.h>

#define BASE_DIR "text\\"
#define DEST_FILE "text\\cp_stats.cpp"

void MakeStatsForFile( const char * fname, const char * cp_name, const char * lang_name, int index, FILE * f, lString8 & list );

void MakeStats()
{
   lString8 list( 
      "typedef struct {\n"
      "    const short * ch_stat;\n"
      "    const dbl_char_stat_t * dbl_ch_stat;\n"
      "    char * cp_name;\n"
      "    char * lang_name;\n"
      "} cp_stat_t;\n"
      "\n\ncp_stat_t cp_stat_table[] = {\n"
      );
   FILE * f = fopen(DEST_FILE, "wt");
   if (!f)
      return;
   fprintf(f, 
	  "// LANGUAGE CODEPAGE AUTODETECTION STATISTICS FILE\n"
	  "// generated by CoolReader3 (c)Vadim Lopatin, 2005-2008\n\n"
      "#include \"../include/cp_stats.h\"\n\n"
      "#define NULL 0\n\n" );
      //"typedef struct {\n"
      //"   unsigned char ch1;\n"
      //"   unsigned char ch2;\n"
      //"   short    count;\n"
      //"} dbl_char_stat_t;\n\n#define NULL 0\n\n" );
   MakeStatsForFile( BASE_DIR "rus1_cp1251.txt", "cp1251", "ru", 1, f, list );
   MakeStatsForFile( BASE_DIR "rus1_cp866.txt", "cp866", "ru", 1, f, list );
   MakeStatsForFile( BASE_DIR "rus1_koi8r.txt", "koi8r", "ru", 1, f, list );
   MakeStatsForFile( BASE_DIR "rus1_utf8.txt", "utf8", "ru", 1, f, list );
   MakeStatsForFile( BASE_DIR "rus2_cp1251.txt", "cp1251", "ru", 2, f, list );
   MakeStatsForFile( BASE_DIR "rus2_cp866.txt", "cp866", "ru", 2, f, list );
   MakeStatsForFile( BASE_DIR "rus2_koi8r.txt", "koi8r", "ru", 2, f, list );
   MakeStatsForFile( BASE_DIR "bg1-cp1251.txt", "cp1251", "bg", 1, f, list );
   MakeStatsForFile( BASE_DIR "bg1-cp866.txt", "cp866", "bg", 1, f, list );
   MakeStatsForFile( BASE_DIR "bg1-koi8r.txt", "koi8r", "bg", 1, f, list );
   MakeStatsForFile( BASE_DIR "czech1-cp1250.txt", "cp1250", "cs", 1, f, list );
   MakeStatsForFile( BASE_DIR "czech2-iso8859-2.txt", "iso8859_2", "cs", 2, f, list );
   MakeStatsForFile( BASE_DIR "pl1-cp1250.txt", "cp1250", "pl", 1, f, list );
   MakeStatsForFile( BASE_DIR "pl2-cp1250.txt", "cp1250", "pl", 2, f, list );
   MakeStatsForFile( BASE_DIR "fr1-cp1252.txt", "cp1252", "fr", 1, f, list );
   MakeStatsForFile( BASE_DIR "fr2-cp1252.txt", "cp1252", "fr", 2, f, list );
   MakeStatsForFile( BASE_DIR "fr1-cp850.txt", "cp850", "fr", 1, f, list );
   MakeStatsForFile( BASE_DIR "fr2-cp850.txt", "cp850", "fr", 2, f, list );
   MakeStatsForFile( BASE_DIR "de1-cp1252.txt", "cp1252", "de", 1, f, list );
   MakeStatsForFile( BASE_DIR "de2-cp1252.txt", "cp1252", "de", 2, f, list );
   MakeStatsForFile( BASE_DIR "de1-cp850.txt", "cp850", "de", 1, f, list );
   MakeStatsForFile( BASE_DIR "de2-cp850.txt", "cp850", "de", 2, f, list );
   MakeStatsForFile( BASE_DIR "es1-cp1252.txt", "cp1252", "es", 1, f, list );
   MakeStatsForFile( BASE_DIR "es2-cp1252.txt", "cp1252", "es", 2, f, list );
   MakeStatsForFile( BASE_DIR "es1-cp850.txt", "cp850", "es", 1, f, list );
   MakeStatsForFile( BASE_DIR "es2-cp850.txt", "cp850", "es", 2, f, list );
   MakeStatsForFile( BASE_DIR "ee1-utf8.txt", "utf8", "ee", 1, f, list );
   MakeStatsForFile( BASE_DIR "es2-utf8.txt", "utf8", "ee", 2, f, list );
   MakeStatsForFile( BASE_DIR "ee3-cp775.txt", "cp775", "ee", 1, f, list );
   MakeStatsForFile( BASE_DIR "es3-cp1257.txt", "cp1257", "ee", 2, f, list );
   MakeStatsForFile( BASE_DIR "gr1-cp1253.txt", "cp1253", "el", 1, f, list );
   MakeStatsForFile( BASE_DIR "gr1-cp737.txt", "cp737", "el", 1, f, list );
   MakeStatsForFile( BASE_DIR "lit1-cp1257.txt", "cp1257", "lit", 1, f, list );
   MakeStatsForFile( BASE_DIR "lat1-cp1257.txt", "cp1257", "lat", 1, f, list );
    
   fprintf( f, "%s{NULL, NULL, NULL, NULL}\n};\n\n", list.c_str() );
   fclose(f);
}


int main(int argc, char* argv[])
{
    MakeStats();
	return 0;
}
