mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-10-03 18:12:58 -04:00
188 lines
6.9 KiB
C++
Executable File
188 lines
6.9 KiB
C++
Executable File
// ======================================================================
|
|
//
|
|
// LocalizedStringTableRW.h
|
|
// copyright (c) 2001 Sony Online Entertainment
|
|
//
|
|
// ======================================================================
|
|
|
|
#ifndef INCLUDED_LocalizedStringTableRW_H
|
|
#define INCLUDED_LocalizedStringTableRW_H
|
|
|
|
#if WIN32
|
|
// stl warning func not inlined
|
|
#pragma warning (disable:4710)
|
|
// unref inline func removed
|
|
#pragma warning (disable:4514)
|
|
// symbol name too long
|
|
#pragma warning (disable:4786)
|
|
#endif
|
|
|
|
#include "LocalizedStringTable.h"
|
|
#include "LocalizedString.h"
|
|
|
|
#include <ctime>
|
|
#include <cstdlib>
|
|
#include <cstdio>
|
|
#include <map>
|
|
|
|
class AbstractFile;
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
class LocalizedStringTableRW : public LocalizedStringTable
|
|
{
|
|
public:
|
|
|
|
class StringRW;
|
|
|
|
typedef std::map <LocalizedString::id_type, Unicode::NarrowString> IdNameMap_t;
|
|
|
|
explicit LocalizedStringTableRW (const Unicode::NarrowString & name);
|
|
explicit LocalizedStringTableRW (const LocalizedStringTable & rhs);
|
|
|
|
LocalizedString::id_type getNextUniqueId () const;
|
|
void setNextUniqueId (LocalizedString::id_type id);
|
|
|
|
void setName (const Unicode::NarrowString & name);
|
|
Map_t & getMap (); //lint !e1511 // member hides non-virtual member
|
|
|
|
const Unicode::NarrowString * getNameById (LocalizedString::id_type id) const;
|
|
|
|
static LocalizedStringTableRW * loadRW (AbstractFileFactory & fileFactory, const Unicode::NarrowString & filename);
|
|
|
|
bool write (AbstractFile & fl) const;
|
|
bool writeRW (AbstractFileFactory & fileFactory, const Unicode::NarrowString & filename) const;
|
|
|
|
LocalizedString * addString (const Unicode::String & str, Unicode::NarrowString & theNameResult);
|
|
LocalizedString * addString (LocalizedString * locstr, const Unicode::NarrowString & name, std::string & resultStr);
|
|
LocalizedString * addString (LocalizedString * locstr, const Unicode::String & name, std::string & resultStr);
|
|
|
|
bool removeStringByName (const Unicode::NarrowString & name);
|
|
LocalizedString * getLocalizedStringByName (const Unicode::NarrowString & name);
|
|
LocalizedString * getLocalizedStringByName (const Unicode::String & name);
|
|
LocalizedString * getLocalizedString (LocalizedString::id_type id); //lint !e1511 // member hides non-virtual member
|
|
|
|
bool rename (const Unicode::NarrowString & name, const Unicode::NarrowString & newName);
|
|
|
|
static bool str_write (AbstractFile & fl, LocalizedString & locstr);
|
|
|
|
static const Unicode::String & str_getString (LocalizedString & locstr);
|
|
static void str_setString (LocalizedString & locstr, const Unicode::String & str);
|
|
static LocalizedString::id_type & str_getId (LocalizedString & locstr);
|
|
static LocalizedString::crc_type & str_getCrc(LocalizedString & locstr);
|
|
static LocalizedString::crc_type & str_getSourceCrc(LocalizedString & locstr);
|
|
|
|
void prepareTable (const LocalizedStringTableRW & rhs);
|
|
|
|
IdNameMap_t & getIdNameMap ();
|
|
NameMap_t & getNameMap (); //lint !e1511 // member hides non-virtual member
|
|
|
|
private:
|
|
LocalizedStringTableRW ();
|
|
LocalizedStringTableRW (const LocalizedStringTableRW & rhs);
|
|
LocalizedStringTableRW & operator= (const LocalizedStringTableRW & rhs);
|
|
|
|
IdNameMap_t m_idNameMap;
|
|
};
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline LocalizedString::id_type LocalizedStringTableRW::getNextUniqueId () const
|
|
{
|
|
return m_nextUniqueId;
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline void LocalizedStringTableRW::setNextUniqueId (const LocalizedString::id_type id)
|
|
{
|
|
m_nextUniqueId = id;
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline LocalizedStringTableRW::Map_t & LocalizedStringTableRW::getMap ()
|
|
{
|
|
return m_map; //lint !e1536 // exposing low access member
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline const Unicode::String & LocalizedStringTableRW::str_getString (LocalizedString & locstr)
|
|
{
|
|
return locstr.m_str;
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline void LocalizedStringTableRW::str_setString (LocalizedString & locstr, const Unicode::String & str)
|
|
{
|
|
locstr.m_str = str;
|
|
locstr.buildCrc();
|
|
locstr.resetLineCounts ();
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline LocalizedString::id_type & LocalizedStringTableRW::str_getId (LocalizedString & locstr)
|
|
{
|
|
return locstr.m_id;
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline LocalizedString::crc_type & LocalizedStringTableRW::str_getCrc (LocalizedString & locstr)
|
|
{
|
|
return locstr.m_crc;
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline LocalizedString::crc_type & LocalizedStringTableRW::str_getSourceCrc(LocalizedString & locstr)
|
|
{
|
|
return locstr.m_sourceCrc;
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline LocalizedString * LocalizedStringTableRW::getLocalizedStringByName (const Unicode::NarrowString & name)
|
|
{
|
|
return getLocalizedString (getIdByName (name));
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline LocalizedString * LocalizedStringTableRW::getLocalizedString (LocalizedString::id_type id)
|
|
{
|
|
Map_t::const_iterator iter = m_map.find (id);
|
|
|
|
return (iter != m_map.end ()) ? (*iter).second : 0;
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline const Unicode::NarrowString * LocalizedStringTableRW::getNameById (LocalizedString::id_type id) const
|
|
{
|
|
IdNameMap_t::const_iterator iter = m_idNameMap.find (id);
|
|
|
|
return (iter != m_idNameMap.end ()) ? &(*iter).second : 0;
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline LocalizedStringTableRW::IdNameMap_t & LocalizedStringTableRW::getIdNameMap ()
|
|
{
|
|
return m_idNameMap; //lint !e1536 // exposing low access member
|
|
}
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
inline LocalizedStringTable::NameMap_t & LocalizedStringTableRW::getNameMap ()
|
|
{
|
|
return m_nameMap; //lint !e1536 // exposing low access member
|
|
}
|
|
|
|
// ======================================================================
|
|
|
|
#endif
|