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;
}
C++ to HTML Conversion by ctoohtml