ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/FAS/src/extradata.h
Revision: 88
Committed: Mon Aug 19 20:49:08 2002 UTC (21 years, 11 months ago) by tim
Content type: text/plain
File size: 2798 byte(s)
Log Message:
*** empty log message ***

File Contents

# Content
1 /**********************************************************************
2 * Copyright (C) 2002-2003 by Gezelter's Group
3 *This program is free software; you can redistribute it and/or modify
4 *it under the terms of the GNU General Public License as published by
5 *the Free Software Foundation version 2 of the License.
6 *
7 *This program is distributed in the hope that it will be useful,
8 *but WITHOUT ANY WARRANTY; without even the implied warranty of
9 *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 *GNU General Public License for more details.
11 *
12 ************************************************************************
13 *Author: Teng Lin Email: tlin@nd.edu
14 *Date: 08/13/2002 Version: 1.0
15 *
16 ************************************************************************
17 *Description:
18 *
19 ***********************************************************************/
20 #ifndef EXTRADATA_H
21 #define EXTRADATA_H
22 #include <iostream>
23 #include <vector>
24 #include <map>
25
26
27
28 using namespace std;
29
30 // the advantage of using namespace over enum type is that you can
31 // add the new type as you want but make sure do not have conflict value
32
33 namespace TExtraDataType
34 {
35 const int UNKNOWN = 0;
36 const int COMMENT = 1;
37 const int ENERGY = 2;
38 const int FORCE = 3;
39 const int DISTANCE = 4;
40 const int ANGLE = 5;
41 const int DIHE = 6;
42 const int IMPR = 7;
43 const int IC = 8;
44 };
45
46
47
48 class TExtraData
49 {
50 protected:
51 string _ident;
52 int _type;
53
54 public:
55 TExtraData();
56 TExtraData(const TExtraData &extraData);
57 TExtraData& operator =(const TExtraData &extraData);
58 virtual ~TExtraData() {}
59
60 string GetIdent() { return _ident;}
61 int GetType() { return _type;}
62
63 void SetIdent(string ident) { _ident = ident;}
64 void SetType(int type) { _type = type;}
65
66 };
67
68 class TExtraDataList :public vector<TExtraData *>
69 {
70 public:
71 void AddExtraData(TExtraData *extraData);
72 void RemoveExtraData(TExtraData *extraData);
73 TExtraData *GetExtraData(int type);
74 TExtraData *GetExtraData(string indet);
75 };
76
77 class TMatchExtraData : public unary_function<TExtraData *, bool>
78 {
79 private:
80 string _ident;
81 int _type;
82
83 enum TMatchExtraType {meIdent, meType} _matchExtraType;
84 public:
85 TMatchExtraData(const string &ident) : _ident(ident){ _matchExtraType = meIdent;}
86 TMatchExtraData(const int &type) : _type(type){ _matchExtraType = meType;}
87
88 bool operator ()(const TExtraData & extraData) const
89 {
90 bool result;
91
92 switch (_matchExtraType)
93 {
94 case meIdent:
95 result = (_ident == extraData.GetIdent());
96 return result;
97 case meType:
98 result = (_type == extraData.GetType());
99 return result;
100 default:
101 //Error
102 ;
103 }
104 }
105
106 };
107
108 #endif