TickHook: Fix crash when TickHook isn't set.
[gemrb.git] / gemrb / core / TableMgr.cpp
blobfb47c68b50fe57bf6e3961e67a4966aeb56ff266
1 /* GemRB - Infinity Engine Emulator
2 * Copyright (C) 2003 The GemRB Project
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 #include "TableMgr.h"
23 #include "GameData.h"
24 #include "Interface.h"
26 TableMgr::TableMgr()
29 TableMgr::~TableMgr()
34 AutoTable::AutoTable()
38 AutoTable::AutoTable(const char* ResRef)
40 load(ResRef);
43 AutoTable::AutoTable(const AutoTable& other)
45 *this = other;
48 AutoTable& AutoTable::operator=(const AutoTable& other)
50 if (other.table) {
51 tableref = other.tableref;
52 table = gamedata->GetTable(tableref);
53 } else {
54 table.release();
56 return *this;
59 bool AutoTable::load(const char* ResRef)
61 release();
63 int ref = gamedata->LoadTable(ResRef);
64 if (ref == -1)
65 return false;
67 tableref = (unsigned int)ref;
68 table = gamedata->GetTable(tableref);
69 return true;
72 AutoTable::~AutoTable()
74 release();
77 void AutoTable::release()
79 if (table) {
80 gamedata->DelTable(tableref);
81 table.release();