# | Line 1 | Line 1 | |
---|---|---|
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 | #include <algorithm> | |
21 | #include "extradata.h" | |
22 | ||
23 | < | //member function for TExtraData |
23 | > | /*********************************************************************** |
24 | > | * Class TExtraData |
25 | > | ***********************************************************************/ |
26 | > | |
27 | TExtraData::TExtraData() | |
28 | { | |
29 | _ident = "unknown"; | |
# | Line 14 | Line 36 | TExtraData::TExtraData(const TExtraData & extraData) | |
36 | _type = extraData._type; | |
37 | } | |
38 | ||
39 | < | TExtraData &TExtraData::operator =(const TExtraData extraData) |
39 | > | TExtraData &TExtraData::operator =(const TExtraData &extraData) |
40 | { | |
41 | < | if (this == &extraData) |
41 | > | if (this == &extraData) |
42 | return *this; | |
43 | < | |
44 | < | _indet = extraData._ident; |
43 | > | |
44 | > | _ident = extraData._ident; |
45 | _type = extraData._type; | |
46 | return *this; | |
47 | } | |
48 | ||
49 | < | //member function for Energy Data |
50 | < | TEnergyData::TEnergyData() |
51 | < | { |
30 | < | _ident = "Energy"; |
31 | < | _type = TExtraDataType::ENERGY; |
32 | < | } |
49 | > | /*********************************************************************** |
50 | > | * Class TExtraDataList |
51 | > | ***********************************************************************/ |
52 | ||
53 | < | TEnergyData::TEnergyData(const TEnergyData &energyData) : TExtraData(energyData) |
53 | > | void TExtraDataList::AddExtraData(TExtraData *extraData) |
54 | { | |
55 | < | _energy = energyData._energy; |
56 | < | } |
55 | > | if (extraData != NULL) |
56 | > | { |
57 | > | push_back(extraData); |
58 | > | } |
59 | ||
39 | – | TEnergyData &TEnergyData::operator =(TEnergyData &energyData) |
40 | – | { |
41 | – | if (this == &energyData) |
42 | – | return *this; |
43 | – | TExtraData::operator =(enrgyData); |
44 | – | _energy = energyDataType._energy; |
60 | } | |
61 | ||
62 | < | TEnergyData::~TEnergyData() |
62 | > | void TExtraDataList::RemoveExtraData(TExtraData *extraData) |
63 | { | |
64 | < | _energy.clear(); |
50 | < | } |
64 | > | vector<TExtraData *>::iterator i; |
65 | ||
66 | < | map<int, float>::iterator TEnergyData::FindEnergy(int energyType) |
53 | < | { |
54 | < | return find(_energy.begin(), _energy.end(), energyType); |
55 | < | } |
66 | > | i = find(begin(), end(), extraData); |
67 | ||
68 | < | void TEnergyData::AddEnergy(int energyType, float value) |
69 | < | { |
70 | < | _energy.insert(map<int,float>::value_type(energyType, value)); |
71 | < | } |
68 | > | if (i != end()) |
69 | > | { |
70 | > | erase(i); |
71 | > | } |
72 | > | else |
73 | > | {//warning |
74 | ||
75 | < | void TEnergyData::ReplaceEnergy(int energyType, float value) |
76 | < | { |
64 | < | map<int, float>::iterator i; |
65 | < | i = FindEnergy(energyType); |
66 | < | |
67 | < | if (i != _energy.end()) |
68 | < | { |
69 | < | *i = value; |
70 | < | } |
75 | > | } |
76 | > | |
77 | } | |
78 | ||
79 | < | void TEnergyData::DeleteEnergy(int energyType) |
79 | > | TExtraData *TExtraDataList::GetExtraData(int type) |
80 | { | |
81 | < | map<int, float>::iterator i; |
82 | < | i = FindEnergy(energyType); |
83 | < | |
84 | < | if (i != _energy.end()) |
85 | < | { |
86 | < | _energy.erase(i); |
87 | < | } |
81 | > | vector<TExtraData *>::iterator i; |
82 | > | |
83 | > | //Don't know the reason can not use functor here |
84 | > | // i = find_if(begin(), end(), TMatchExtraData(type)); |
85 | > | |
86 | > | for (i=begin(); i<end(); i++) |
87 | > | { |
88 | > | if ((*i)->GetType() == type) |
89 | > | return *i; |
90 | > | } |
91 | > | |
92 | > | return NULL; |
93 | } | |
94 | ||
95 | < | //return the energy with specified type, return NULL if not find |
85 | < | float *TEnergyData::GetEnergy(int energyType) |
95 | > | TExtraData *TExtraDataList::GetExtraData(string ident) |
96 | { | |
97 | < | map<int, float>::iterator i; |
88 | < | i = FindEnergy(energyType); |
97 | > | vector<TExtraData *>::iterator i; |
98 | ||
99 | < | if (i != _energy.end()) |
100 | < | { |
101 | < | return *i; |
102 | < | } |
103 | < | else |
104 | < | { |
105 | < | return NULL; |
106 | < | } |
99 | > | //Don't know the reason can not use functor here |
100 | > | // i = find_if(begin(), end(), TMatchExtraData(ident)); |
101 | > | |
102 | > | for (i=begin(); i<end(); i++) |
103 | > | { |
104 | > | if ((*i)->GetIdent() == ident) |
105 | > | return *i; |
106 | > | } |
107 | > | |
108 | > | return NULL; |
109 | > | |
110 | } | |
111 | + | |
112 | + | |
113 | + | /*********************************************************************** |
114 | + | * Class TBitVector |
115 | + | ***********************************************************************/ |
116 | + |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |