1 // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
2 // Copyright (C) 2010 Winch Gate Property Limited
4 // This source file has been modified by the following contributors:
5 // Copyright (C) 2015-2020 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
7 // This program is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU Affero General Public License as
9 // published by the Free Software Foundation, either version 3 of the
10 // License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU Affero General Public License for more details.
17 // You should have received a copy of the GNU Affero General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #include "pd_string_mapper.h"
25 std::string
CPDStringMapper::_UnknownString
= "Unknown";
31 CPDStringMapper::CPDStringMapper()
39 void CPDStringMapper::setMapping(const std::string
& str
, uint32 id
)
41 std::string lowMapStr
= NLMISC::toLowerAscii(str
);
42 TStringMap::iterator its
;
44 TIdMap::iterator iti
= _IdMap
.find(id
);
45 if (iti
!= _IdMap
.end())
48 if ((*its
).first
!= lowMapStr
|| (*its
).second
!= id
)
50 nlwarning("CPDStringMapper::setMapping(): failed to map '%s' to '%d', id is already mapped to a different string", str
.c_str(), id
);
57 its
= _StringMap
.find(lowMapStr
);
59 if (its
!= _StringMap
.end())
61 if ((*its
).second
!= id
)
63 nlwarning("CPDStringMapper::setMapping(): failed to map '%s' to '%d', string is already mapped to a different id", str
.c_str(), id
);
70 its
= _StringMap
.insert(std::pair
<std::string
, uint32
>(lowMapStr
, id
)).first
;
77 void CPDStringMapper::serial(NLMISC::IStream
& f
)
79 f
.serialCheck(NELID("PDSM"));
81 uint version
= f
.serialVersion(0);
83 f
.serialCont(_StringMap
);
94 void CPDStringMapper::buildIdMap()
98 TStringMap::iterator it
;
99 for (it
=_StringMap
.begin(); it
!=_StringMap
.end(); ++it
)
101 const std::string
& str
= (*it
).first
;
102 uint32 id
= (*it
).second
;