file: filtermain.cc

#include "filter.h" #include <String.h> #include <stl.h> struct comp_String{ }; bool comp_String::operator() (const String& i1, const String& i2) const //OVERLOAD CALL: comp_String: filtermain.cc(?), resolved_line.h(?) { return strcmp(i1,i2); } const int num_noarg=5; const int num_onearg=10; const int num_twoarg=18; struct statedumper{ }; void statedumper::operator () (const pair<const String, filter>& in) { cout << in.first << " "; in.second.printstate(); } struct filtertester{ // void printfield(int mask) { for (int i=maxbitfield/2;i>0;i/=2) if (((mask/i)%2)==1) cout << "1"; else cout << "0"; cout << endl; } // void operator () (const pair<const String, filter>& in) //OVERLOAD CALL: operator: error.cc(arg_out), error.cc(error), error.cc(error), error.cc(error), filter.cc(foo), filtermain.cc(comp_String), direct.cpp(include), direct.cpp(define), direct.cpp(ifdef), direct.cpp(ifndef), direct.cpp(_else), direct.cpp(endif) { cout << "testing "<< in.first << endl; vector<unsigned short int> argvec; cout << " no argument "; printfield(in.second.args(argvec)); cout << " one argument = 2 "; argvec.push_back(2); printfield(in.second.args(argvec)); cout << " second argument = 2 "; argvec.push_back(2); cout << " first argument = 1 "; argvec[0]=1; printfield(in.second.args(argvec)); cout << " third argument = 2 "; argvec.push_back(2); printfield(in.second.args(argvec)); cout << endl; } }; int main(void) { filter a; cout << "0 = "; a.printstate(); vector<unsigned short int> fields; unsigned short int mask=10; filter b(mask,fields); cout << "12 = "; b.printstate(); vector<unsigned short int> aarg; unsigned short int aval=a.args(aarg); cout << aval << " = " << 0 << endl; unsigned short int bval=b.args(aarg); cout << bval << " = " << 10 << endl; map<String, filter, comp_String> instruction_set; //OVERLOAD CALL: comp_String: filtermain.cc(?), resolved_line.h(?) String noarg[num_noarg]={"NOP","OPTION","SLEEP","CLRWDT","CLRW"}; unsigned short int masks[num_noarg]={0,2,3,4,64}; int i; for (i=0;i<num_noarg;i++) instruction_set.insert(pair<const String, filter>(noarg[i],filter(masks[i],fields))); //OVERLOAD CALL: filter: filter.cc(filter), filter.h(filter) fields.push_back(2); String onearg[num_onearg]= {"CLRF","MOVWF","ANDLW","CALL","GOTO","IORLW","MOVLW","RETLW","TRIS","XORLW"}; unsigned short int onemasks[num_onearg]= {96, 32, 3584, 2304, 2560, 3328, 3072, 2048, 0, 3840}; unsigned short int onehigh[num_onearg]= {5, 8, 8, 8, 9, 8, 8, 8, 3, 8}; for (i=0;i<num_onearg;i++){ fields[0]=onehigh[i]; instruction_set.insert(pair<const String, filter>(onearg[i],filter(onemasks[i],fields))); //OVERLOAD CALL: filter: filter.cc(filter), filter.h(filter) } fields.push_back(2); String twoarg[num_twoarg]= {"ADDWF","ANDWF","COMF","DECF","DECFSZ","INCF","INCFSZ","IORWF","MOVF","RLF", "RRF", "SUBWF", "SWAPF", "XORWF", "BCF","BSF","BTFSC","BTFSS"}; unsigned short int twomasks[num_twoarg]= {448, 320, 576, 192, 704, 640, 960, 256, 512, 832, 768, 128, 896, 384, 1024, 1280, 1536, 1792}; unsigned short int twohigh[num_twoarg][2]= {{6,5}, {6,5}, {6,5}, {6,5}, {6,5}, {6,5}, {6,5}, {6,5}, {6,5}, {6,5}, {6,5}, {6,5}, {6,5}, {6,5}, {8,5}, {8,5}, {8,5}, {8,5}}; for (i=0;i<num_onearg;i++){ fields[0]=twohigh[i][0]; fields[1]=twohigh[i][1]; instruction_set.insert(pair<const String, filter>(twoarg[i],filter(twomasks[i],fields))); //OVERLOAD CALL: filter: filter.cc(filter), filter.h(filter) } for_each(instruction_set.begin(),instruction_set.end(),statedumper()); for_each(instruction_set.begin(),instruction_set.end(),filtertester()); return 0; }


Back to Source File Index


C++ to HTML Conversion by ctoohtml