head2data.cc

Go to the documentation of this file.
00001 
00002 #ifdef HAVE_CONFIG_H
00003   #include <config.h>
00004 #endif
00005 
00006 #include <iostream>
00007 #include <string>
00008 #include <iomanip>
00009 #include <vector>
00010 #include <fstream>
00011 
00012 using std::cout;
00013 using std::cerr;
00014 using std::endl;
00015 using std::ostream;
00016 using std::string;
00017 using std::setfill;
00018 using std::setbase;
00019 using std::vector;
00020 using std::setw;
00021 using std::ios;
00022 using std::ofstream;
00023 
00024 #ifndef __STRING
00025   #if defined __STDC__ && __STDC__
00026     #define __STRING(x) #x
00027   #else
00028     #define __STRING(x) "x"
00029   #endif
00030 #endif
00031 
00032 void bg_out(const string &fname)
00033 {
00034   ofstream o;
00035   o.open(fname.c_str());
00036   
00037   if(o.fail())
00038   {
00039     cerr << "error: could not open `" << fname << "` for writing" << endl;
00040     exit(1);
00041   }
00042   
00043   o << setfill('0') << setbase(16);
00044   o.setf(ios::uppercase);
00045   
00046   #define USECODE_INTRINSIC_PTR(NAME) std::string(__STRING(NAME))
00047   std::string bgut[] =
00048   {
00049   #include "bgintrinsics.h"
00050   };
00051   #undef USECODE_INTRINSIC_PTR
00052   
00053   o << "<intrinsics>" << endl;
00054   for(unsigned int i=0; i<0x100; i++)
00055     o << "\t<0x" << setw(2) << i << "> " << bgut[i] << "_" << setw(2) << i << " </>" << endl;
00056   o << "</>" << endl;
00057   
00058   o.close();
00059 }
00060 
00061 void si_out(const string &fname)
00062 {
00063   ofstream o;
00064   o.open(fname.c_str());
00065   
00066   if(o.fail())
00067   {
00068     cerr << "error: could not open `" << fname << "` for writing" << endl;
00069     exit(1);
00070   }
00071   
00072   o << setfill('0') << setbase(16);
00073   o.setf(ios::uppercase);
00074   
00075   #define USECODE_INTRINSIC_PTR(NAME) std::string(__STRING(NAME))
00076   std::string siut[] =
00077   {
00078   #include "siintrinsics.h"
00079   };
00080   #undef USECODE_INTRINSIC_PTR
00081   
00082   o << "<intrinsics>" << endl;
00083   for(unsigned int i=0; i<0x100; i++)
00084     o << "\t<0x" << setw(2) << i << "> " << siut[i] << "_" << setw(2) << i << " </>" << endl;
00085   o << "</>" << endl;
00086   
00087   o.close();
00088 }
00089 
00090 int main(int argc, char **argv)
00091 {
00092   if(argc!=3)
00093   {
00094     cout << "usage:" << endl
00095       << "\thead2data <bg outputfile> <si outputfile>" << endl
00096       << endl
00097       << "\tWhere the output files are the relative pathnames to the datafiles" << endl
00098       << "\tto be output." << endl
00099       << "\teg. head2data data/u7bgintrinsics.data data/u7siintrinsics.data" << endl;
00100     return 1;
00101   }
00102   
00103   bg_out(string(argv[1]));
00104   si_out(string(argv[2]));
00105   
00106   return 0;
00107 }
00108 

Generated on Mon Jul 9 14:42:52 2007 for ExultEngine by  doxygen 1.5.1