00001 #ifndef SCIL_ROW_H
00002 #define SCIL_ROW_H
00003
00004 #include <LEDA/list.h>
00005 #undef set
00006 #include <scil/row_entry.h>
00007
00008 namespace SCIL {
00009
00010 class var;
00011 class cons_obj;
00012
00014 class row {
00015
00016 public:
00017 LEDA_MEMORY(row)
00018
00019
00020 typedef LEDA::list_item item;
00021
00022 private:
00023 LEDA::list<row_entry> NZ;
00024
00025 public:
00026
00028 row() {
00029 };
00030
00032 row(double d);
00033
00035 row(var v);
00036
00038 row(LEDA::list<row_entry>& L);
00039
00041 row operator* (double d);
00042
00044 row operator+ (const row& r1);
00045
00046 row operator+ (const var& v);
00047
00048 row operator+ (double d);
00049
00051 row operator- (const row& r1);
00052
00054 row& operator+= (const row& r1);
00055
00056 row& operator+= (const var& v);
00057
00058 row& operator-= (const var& v);
00059
00060 row& operator+= (const row_entry& r);
00061
00063 row& operator-= (const row& r1);
00064
00066 cons_obj* operator== (row r1);
00067
00069 cons_obj* operator<= (row r1);
00070
00072 cons_obj* operator>= (row r1);
00073
00074 void normalize();
00075
00076 item first_item() const;
00077
00078 item next_item(item i) const;
00079
00080 row_entry inf(const item i) const;
00081
00083 int size();
00084
00085
00086
00087
00088 friend ostream& operator<<(ostream& o,const row&);
00089 };
00090
00092 row operator*(double d, var v);
00093
00095 row operator*(double d, row r1);
00096
00097 }
00098
00099
00100 #endif