file: object.h

/*************************************************************************** object + derived classes object Class made in C++ ***************************************************************************/ /* This file contains the "class" declaration and method declarations for the pure virtual object class, and it's derived classes. define inlined methods: void listing::output(line& in,ostream& dumper) -dumps map to "dumper" //OVERLOAD CALL: output: object.cc(ex_listing), object.cc(object_object), object.h(listing) Revision History: First made by John Langford on 3/4/97 */ /* Class: object Description: This class assembles various lines of code into a map and dumps the map out when desired. Private Members: map<int,line,comp_int> code -the map that orders each -line resolved_line lineres -the source for lines of code error err - the error handling object. Static Members: none Base Classes: none. Friend Classes: none Static Members: none Public Members: none Constructors: object::object(String filename) Methods: private: virtual void getcode()=0; -pure virtual which gets lines and inserts //OVERLOAD CALL: getcode: object.cc(listing), object.cc(object_object) -them into the map virtual void output(line&,ostream&)=0; //OVERLOAD CALL: output: object.cc(ex_listing), object.cc(object_object), object.h(listing) -outputs a line of code to the output stream public: constructor: object(String filename):lineres(filename){} -just calls constructor for -lines of code source void dump(String filename) -causes the code map to be -dumped to filename Error Handler: err */ #include <assert.h> #include <stl.h> #include <String.h> #include <iostream.h> #include <fstream.h> #include "resolved_line.h" struct comp_int{ bool operator() (const int i1, const int i2) const //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) { return i1<i2; }; }; class object { protected: map<int,line,comp_int> code; resolved_line lineres; error err; virtual void getcode()=0; //OVERLOAD CALL: getcode: object.cc(listing), object.cc(object_object) virtual void output(line&,ostream&)=0; //OVERLOAD CALL: output: object.cc(ex_listing), object.cc(object_object), object.h(listing) public: object(String filename):lineres(filename){}; void dump(String filename); }; /* Class: object_object Description: instantiation of object class which outputs pure opcodes Private Members: int location_number; used to fill in nop's in output Static Members: none Base Classes: object Friend Classes: none Static Members: none Public Members: none Constructors: object_object::object_object(String filename) Methods: private: virtual void getcode(); -gets lines and inserts compiled lines into the //OVERLOAD CALL: getcode: object.cc(listing), object.cc(object_object) -map virtual void output(line&,ostream&)=0; //OVERLOAD CALL: output: object.cc(ex_listing), object.cc(object_object), object.h(listing) -outputs an opcode to the output stream. public: none. Error Handler: err */ class object_object:public object{ protected: int location_number; public: object_object(String filename):object(filename){location_number=0;}; private: virtual void output(line&,ostream&); //OVERLOAD CALL: output: object.cc(ex_listing), object.cc(object_object), object.h(listing) virtual void getcode(); //OVERLOAD CALL: getcode: object.cc(listing), object.cc(object_object) }; /* Class: ex_listing (executable listing) Description: instantiation of object class which outputs human readable instructions Private Members: none Static Members: none Base Classes: object_object Friend Classes: none Static Members: none Public Members: none Constructors: ex_listing::ex_listing(String filename) Methods: private: virtual void output(line&,ostream&)=0; //OVERLOAD CALL: output: object.cc(ex_listing), object.cc(object_object), object.h(listing) -outputs an opcode in a human readable way public: none. Error Handler: err */ class ex_listing : public object_object { public: ex_listing(String filename):object_object(filename){}; private: virtual void output(line& in, ostream& dumper); //OVERLOAD CALL: output: object.cc(ex_listing), object.cc(object_object), object.h(listing) }; /* Class: listing (executable listing) Description: Instantiation of object class which outputs a full listing file, including comments. Private Members: none Static Members: none Base Classes: object Friend Classes: none Static Members: none Public Members: none Constructors: listing::listing(String filename) Methods: private: virtual void output(line&,ostream&)=0; //OVERLOAD CALL: output: object.cc(ex_listing), object.cc(object_object), object.h(listing) -outputs an line from an assembly file with -arguments resolved virtual void getcode(); -inserts all lines recieved into a map. //OVERLOAD CALL: getcode: object.cc(listing), object.cc(object_object) public: none. Error Handler: err */ class listing:public object { public: listing(String filename):object(filename){}; private: virtual void output(line& in,ostream& dumper); //OVERLOAD CALL: output: object.cc(ex_listing), object.cc(object_object), object.h(listing) virtual void getcode(); //OVERLOAD CALL: getcode: object.cc(listing), object.cc(object_object) }; void listing::output(line& in,ostream& dumper) {//duhh... dumper << in.number() << ":" << in.resolvedstring(); };


Back to Source File Index


C++ to HTML Conversion by ctoohtml