ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/auterman/SusyScan/Limits/table.h
Revision: 1.1.1.1 (vendor branch)
Committed: Wed Jan 26 14:37:51 2011 UTC (14 years, 3 months ago) by auterman
Content type: text/plain
Branch: Limits, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
Error occurred while calculating annotation data.
Log Message:
Limt calculation code

File Contents

# Content
1 #ifndef TABLE_H
2 #define TABLE_H
3
4 #include <iostream>
5 #include <iomanip>
6
7 #include "column.h"
8
9 class TTable {
10 public:
11 enum TableStyle {Plain, TeX};
12
13 TTable():_header(""),_delimiter(" "),_caption(""),_style(Plain){};
14 TTable(std::string h):_header(h),_delimiter(" "),_caption(""),_style(Plain){};
15 TTable(std::string h, std::string d):_header(h),_delimiter(d),_caption(""),_style(Plain){};
16 TTable(std::string h,std::string d,std::string c):_header(h),_delimiter(d),_caption(c),_style(Plain){};
17 virtual ~TTable(){
18 for (std::vector<TColumnBase*>::iterator it=_table.begin(); it!=_table.end(); ++it) delete *it;
19 _table.clear();};
20 template <class T> void AddColumn(std::string header){_table.push_back(new TColumn<T>(header));};
21 template <class T> void Set(unsigned idx,const T &value){
22 _table.at(idx)->Add(new T(value));};
23 template <class T> void Set( unsigned x, unsigned y, T value){static_cast<TColumn<T> >(_table.at(x))->Set(y,value);};
24
25 template <class T1> void Fill(const T1 &v1){
26 Fill<T1,short>(v1,0);}
27 template <class T1, class T2> void Fill(const T1 &v1, const T2 &v2){
28 Fill<T1,T2,short>(v1,v2,0);}
29 template <class T1, class T2, class T3> void Fill(const T1 &v1, const T2 &v2, const T3 &v3){
30 Fill<T1,T2,T3,short>(v1,v2,v3,0);}
31 template <class T1, class T2, class T3, class T4> void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4){
32 Fill<T1,T2,T3,T4,short>(v1,v2,v3,v4,0);}
33 template <class T1, class T2, class T3, class T4, class T5> void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5){
34 Fill<T1,T2,T3,T4,T5,short>(v1,v2,v3,v4,v5,0);}
35 template <class T1, class T2, class T3, class T4, class T5, class T6> void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6){
36 Fill<T1,T2,T3,T4,T5,T6,short>(v1,v2,v3,v4,v5,v6,0);}
37 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7> void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7){
38 Fill<T1,T2,T3,T4,T5,T6,T7,short>(v1,v2,v3,v4,v5,v6,v7,0);}
39 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8> void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8){
40 Fill<T1,T2,T3,T4,T5,T6,T7,T8,short>(v1,v2,v3,v4,v5,v6,v7,v8,0);}
41 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9> void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9){
42 Fill<T1,T2,T3,T4,T5,T6,T7,T8,T9,short>(v1,v2,v3,v4,v5,v6,v7,v8,v9,0);}
43 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
44 void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10){
45 Fill<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,short>(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,0);}
46 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
47 void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10, const T11 &v11){
48 Fill<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,short>(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,0);}
49 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
50 void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10, const T11 &v11, const T12 &v12){
51 Fill<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,short>(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,0);}
52 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
53 void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10, const T11 &v11, const T12 &v12, const T13 &v13){
54 Fill<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,short>(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,0);}
55 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
56 void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10, const T11 &v11, const T12 &v12, const T13 &v13, const T14 &v14){
57 Fill<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,short>(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,0);}
58 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
59 void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10, const T11 &v11, const T12 &v12, const T13 &v13, const T14 &v14, const T15 &v15){
60 Fill<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,short>(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,0);}
61 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
62 void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10, const T11 &v11, const T12 &v12, const T13 &v13, const T14 &v14, const T15 &v15, const T16 &v16){
63 Fill<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,short>(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,0);}
64 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
65 void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10, const T11 &v11, const T12 &v12, const T13 &v13, const T14 &v14, const T15 &v15, const T16 &v16, const T17 &v17){
66 Fill<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,short>(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,0);}
67 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
68 void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10, const T11 &v11, const T12 &v12, const T13 &v13, const T14 &v14, const T15 &v15, const T16 &v16, const T17 &v17, const T18 &v18){
69 Fill<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,short>(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,0);}
70 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
71 void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10, const T11 &v11, const T12 &v12, const T13 &v13, const T14 &v14, const T15 &v15, const T16 &v16, const T17 &v17, const T18 &v18, const T19 &v19){
72 Fill<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,short>(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,0);}
73
74 template <class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
75 void Fill(const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5, const T6 &v6, const T7 &v7, const T8 &v8, const T9 &v9, const T10 &v10, const T11 &v11, const T12 &v12, const T13 &v13, const T14 &v14, const T15 &v15, const T16 &v16, const T17 &v17, const T18 &v18, const T19 &v19, const T20 &v20){
76 //Elements are copies; TColumn takes care of freeing the memory
77 if (_table.size()>0) _table.at(0)->Add(new T1(v1));
78 if (_table.size()>1) _table.at(1)->Add(new T2(v2));
79 if (_table.size()>2) _table.at(2)->Add(new T3(v3));
80 if (_table.size()>3) _table.at(3)->Add(new T4(v4));
81 if (_table.size()>4) _table.at(4)->Add(new T5(v5));
82 if (_table.size()>5) _table.at(5)->Add(new T6(v6));
83 if (_table.size()>6) _table.at(6)->Add(new T7(v7));
84 if (_table.size()>7) _table.at(7)->Add(new T8(v8));
85 if (_table.size()>8) _table.at(8)->Add(new T9(v9));
86 if (_table.size()>9) _table.at(9)->Add(new T10(v10));
87 if (_table.size()>10) _table.at(10)->Add(new T11(v11));
88 if (_table.size()>11) _table.at(11)->Add(new T12(v12));
89 if (_table.size()>12) _table.at(12)->Add(new T13(v13));
90 if (_table.size()>13) _table.at(13)->Add(new T14(v14));
91 if (_table.size()>14) _table.at(14)->Add(new T15(v15));
92 if (_table.size()>15) _table.at(15)->Add(new T16(v16));
93 if (_table.size()>16) _table.at(16)->Add(new T17(v17));
94 if (_table.size()>17) _table.at(17)->Add(new T18(v18));
95 if (_table.size()>18) _table.at(18)->Add(new T19(v19));
96 if (_table.size()>19) _table.at(19)->Add(new T20(v20));
97 };
98 unsigned Length() const {
99 unsigned length=0;
100 for (std::vector<TColumnBase*>::const_iterator it=_table.begin();it!=_table.end();++it)
101 if ((*it)->Size()>length) length = (*it)->Size();
102 return length;
103 };
104 const std::vector<TColumnBase*> * GetTable() const {return &_table;};
105 std::string GetHeader() const{return _header;};
106 std::string GetDelimiter() const{return _delimiter;};
107 std::string GetCaption() const{return _caption;};
108 void SetHeader(const std::string s){_header=s;};
109 void SetDelimiter(const std::string s){_delimiter=s;};
110 void SetCaption(const std::string s){_caption=s;};
111 void SetStyle(TableStyle s){_style=s;};
112 TableStyle GetStyle() const {return _style;};
113 void SetPrecision(unsigned i, unsigned p){_table[i]->SetPrecision(p);};
114 void SetPrecision(unsigned p){
115 for (std::vector<TColumnBase*>::const_iterator it=_table.begin();it!=_table.end();++it)
116 (*it)->SetPrecision(p);};
117
118 friend std::ostream& operator<<( std::ostream& os, const TTable& tab );
119
120 protected:
121 std::string _header, _delimiter, _caption;
122 std::vector<TColumnBase*> _table;
123 TableStyle _style;
124 };
125
126
127 #endif