aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/glk/quest/geas_file.cpp46
-rw-r--r--engines/glk/quest/geas_glk.cpp17
-rw-r--r--engines/glk/quest/geas_runner.cpp10
-rw-r--r--engines/glk/quest/geas_state.cpp2
-rw-r--r--engines/glk/quest/geas_util.cpp4
-rw-r--r--engines/glk/quest/geas_util.h4
-rw-r--r--engines/glk/quest/quest.cpp3
-rw-r--r--engines/glk/quest/streams.cpp5
-rw-r--r--engines/glk/quest/streams.h2
9 files changed, 49 insertions, 44 deletions
diff --git a/engines/glk/quest/geas_file.cpp b/engines/glk/quest/geas_file.cpp
index 05c78e3e08..187c7cc101 100644
--- a/engines/glk/quest/geas_file.cpp
+++ b/engines/glk/quest/geas_file.cpp
@@ -89,8 +89,6 @@ bool GeasFile::obj_has_property(String objname, String propname) const {
return get_obj_property(objname, propname, tmp);
}
-Common::WriteStream &operator<< (Common::WriteStream &, const Set<String> &);
-
/**
* Currently only works for actual objects, not rooms or the game
*/
@@ -130,7 +128,7 @@ void GeasFile::get_obj_keys(String obj, Set<String> &rv) const {
vstring params = split_param(param_contents(tok));
for (uint j = 0; j < params.size(); j ++) {
cerr << " handling parameter <" << params[j] << ">\n";
- uint k = params[j].find('=');
+ int k = params[j].find('=');
// SENSITIVE?
if (starts_with(params[j], "not ")) {
rv.insert(trim(params[j].substr(4)));
@@ -189,7 +187,7 @@ void GeasFile::get_type_keys(String typen, Set<String> &rv) const {
else if (tok == "action") {
cerr << " action, skipping\n";
} else {
- uint ch = line.find('=');
+ int ch = line.find('=');
if (ch != -1) {
rv.insert(trim(line.substr(0, ch)));
cerr << " adding <" << trim(line.substr(0, ch)) << ">\n";
@@ -262,7 +260,7 @@ bool GeasFile::get_obj_property(String objname, String propname, String &string_
Common::Array<String> props = split_param(param_contents(tok));
for (uint j = 0; j < props.size(); j ++) {
//cerr << " g_o_p: Comparing against <" << props[j] << ">\n";
- uint index;
+ int index;
if (props[j] == propname) {
//cerr << " g_o_p: Present but empty, blanking\n";
string_rv = "";
@@ -296,6 +294,7 @@ void GeasFile::get_type_property(String typenamex, String propname, bool &bool_r
String line = block->data[i];
//cerr << " Comparing vs. line <" << line << ">\n";
uint c1, c2;
+ int p;
String tok = first_token(line, c1, c2);
// SENSITIVE?
@@ -307,11 +306,11 @@ void GeasFile::get_type_property(String typenamex, String propname, bool &bool_r
bool_rv = true;
string_rv = "";
} else {
- c1 = line.find('=');
- if (c1 != -1) {
- tok = trim(line.substr(0, c1));
+ p = line.find('=');
+ if (p != -1) {
+ tok = trim(line.substr(0, p));
if (tok == propname) {
- string_rv = trim(line.substr(c1 + 1));
+ string_rv = trim(line.substr(p + 1));
bool_rv = true;
}
}
@@ -517,8 +516,7 @@ void GeasFile::register_block(String blockname, String blocktype) {
String errdesc = "Trying to register block of named <" + blockname +
"> of type <" + blocktype + "> when there is already one, of type <" +
obj_types[blockname] + ">";
- debug_print(errdesc);
- throw errdesc;
+ error("%s", errdesc.c_str());
}
obj_types[blockname] = blocktype;
}
@@ -526,14 +524,14 @@ void GeasFile::register_block(String blockname, String blocktype) {
String GeasFile::static_svar_lookup(String varname) const {
cerr << "static_svar_lookup(" << varname << ")" << endl;
//varname = lcase (varname);
- for (uint i = 0; i < size("variable"); i ++)
+ for (uint i = 0; i < size("variable"); i++) {
//if (blocks[i].lname == varname)
if (ci_equal(blocks[i].name, varname)) {
String rv;
String tok;
uint c1, c2;
bool found_typeline = false;
- for (uint j = 0; j < blocks[i].data.size(); j ++) {
+ for (uint j = 0; j < blocks[i].data.size(); j++) {
String line = blocks[i].data[j];
tok = first_token(line, c1, c2);
// SENSITIVE?
@@ -541,26 +539,27 @@ String GeasFile::static_svar_lookup(String varname) const {
tok = next_token(line, c1, c2);
// SENSITIVE?
if (tok == "numeric")
- throw String("Trying to evaluate int var '" + varname +
- "' as String");
+ error("Trying to evaluate int var '%s' as String", varname.c_str());
// SENSITIVE?
if (tok != "String")
- throw String("Bad variable type " + tok);
+ error("Bad variable type %s", tok.c_str());
found_typeline = true;
}
// SENSITIVE?
else if (tok == "value") {
tok = next_token(line, c1, c2);
if (!is_param(tok))
- throw String("Expected param after value in " + line);
+ error("Expected param after value in %s", line.c_str());
rv = param_contents(tok);
}
}
if (!found_typeline)
- throw String(varname + " is a numeric variable");
+ error("%s is a numeric variable", varname.c_str());
cerr << "static_svar_lookup(" << varname << ") -> \"" << rv << "\"" << endl;
return rv;
}
+ }
+
debug_print("Variable <" + varname + "> not found.");
return "";
}
@@ -581,17 +580,16 @@ String GeasFile::static_ivar_lookup(String varname) const {
tok = next_token(line, c1, c2);
// SENSITIVE?
if (tok == "String")
- throw String("Trying to evaluate String var '" + varname +
- "' as numeric");
+ error("Trying to evaluate String var '%s' as numeric", varname.c_str());
// SENSITIVE?
if (tok != "numeric")
- throw String("Bad variable type " + tok);
+ error("Bad variable type %s", tok.c_str());
}
// SENSITIVE?
else if (tok == "value") {
tok = next_token(line, c1, c2);
if (!is_param(tok))
- throw String("Expected param after value in " + line);
+ error("Expected param after value in %s", line.c_str());
rv = param_contents(tok);
}
}
@@ -610,7 +608,7 @@ String GeasFile::static_eval(String input) const {
for (j = i + 1; j < input.length() && input[j] != '#'; j ++)
;
if (j == input.length())
- throw String("Error processing '" + input + "', odd hashes");
+ error("Error processing '%s', odd hashes", input.c_str());
uint k;
for (k = i + 1; k < j && input[k] != ':'; k ++)
;
@@ -643,7 +641,7 @@ String GeasFile::static_eval(String input) const {
for (j = i; j < input.length() && input[j] != '%'; j ++)
;
if (j == input.length())
- throw String("Error processing '" + input + "', unmatched %");
+ error("Error processing '%s', unmatched %%", input.c_str());
rv += static_ivar_lookup(input.substr(i + 1, j - i - 2));
i = j;
} else
diff --git a/engines/glk/quest/geas_glk.cpp b/engines/glk/quest/geas_glk.cpp
index 571be78edc..a71a775f1a 100644
--- a/engines/glk/quest/geas_glk.cpp
+++ b/engines/glk/quest/geas_glk.cpp
@@ -56,17 +56,14 @@ void draw_banner() {
g_vm->glk_window_move_cursor(bannerwin, 1, 0);
if (g_vm->banner.empty())
- g_vm->glk_put_string_stream(stream, (char *)"Geas 0.4");
+ g_vm->glk_put_string_stream(stream, "Geas 0.4");
else
- g_vm->glk_put_string_stream(stream, (char *)g_vm->banner.c_str());
+ g_vm->glk_put_string_stream(stream, g_vm->banner.c_str());
}
}
void glk_put_cstring(const char *s) {
- /* The cast to remove const is necessary because g_vm->glk_put_string
- * receives a "char *" despite the fact that it could equally well use
- * "const char *". */
- g_vm->glk_put_string((char *)s);
+ g_vm->glk_put_string(s);
}
GeasResult GeasGlkInterface::print_normal(const String &s) {
@@ -152,14 +149,14 @@ String GeasGlkInterface::get_string() {
}
uint GeasGlkInterface::make_choice(String label, Common::Array<String> v) {
- size_t n;
+ uint n;
g_vm->glk_window_clear(inputwin);
glk_put_cstring(label.c_str());
g_vm->glk_put_char(0x0a);
n = v.size();
- for (size_t i = 0; i < n; ++i) {
+ for (uint i = 0; i < n; ++i) {
StringStream t;
String s;
t << i + 1;
@@ -176,13 +173,13 @@ uint GeasGlkInterface::make_choice(String label, Common::Array<String> v) {
t << n;
t >> s;
s1 = "Choose [1-" + s + "]> ";
- g_vm->glk_put_string_stream(inputwinstream, (char *)(s1.c_str()));
+ g_vm->glk_put_string_stream(inputwinstream, s1.c_str());
int choice = atoi(get_string().c_str());
if (choice < 1) {
choice = 1;
}
- if ((size_t)choice > n) {
+ if ((uint)choice > n) {
choice = n;
}
diff --git a/engines/glk/quest/geas_runner.cpp b/engines/glk/quest/geas_runner.cpp
index 9d4fd32846..665f27d672 100644
--- a/engines/glk/quest/geas_runner.cpp
+++ b/engines/glk/quest/geas_runner.cpp
@@ -28,7 +28,7 @@
#include "glk/quest/geas_impl.h"
#include "glk/quest/quest.h"
#include "glk/quest/streams.h"
-#include "glk/quest/String.h"
+#include "glk/quest/string.h"
namespace Glk {
namespace Quest {
@@ -744,7 +744,7 @@ void geas_implementation::set_game(const String &fname) {
continue;
// SENSITIVE?
if (tok == "multiplayer")
- throw String("Error: geas is single player only.");
+ error("Error: geas is single player only.");
gi->debug_print("Unexpected game type " + s);
}
// SENSITIVE?
@@ -1239,7 +1239,7 @@ match_rv geas_implementation::match_command(String input, uint ichar, String act
achar ++;
}
if (achar == action.length())
- throw String("Unpaired hashes in command String " + action);
+ error("Unpaired hashes in command String %s", action.c_str());
//rv.bindings.push_back (varname);
int index = rv.bindings.size();
rv.bindings.push_back(match_binding(varname, ichar));
@@ -2491,7 +2491,7 @@ void geas_implementation::run_script(String s, String &rv) {
return;
}
bool is_while = (tok == "while");
- uint start_cond = c2, end_cond = (uint) -1;
+ int start_cond = c2, end_cond = -1;
while ((tok = next_token(s, c1, c2)) != "") {
// SENSITIVE?
if (tok == "do") {
@@ -3444,7 +3444,7 @@ String geas_implementation::eval_string(String s) {
}
*/
//if (j == rv.size())
- if (j == -1) {
+ if (j == (uint)-1) {
gi->debug_print("Unmatched $s in " + s);
return rv + s.substr(i);
}
diff --git a/engines/glk/quest/geas_state.cpp b/engines/glk/quest/geas_state.cpp
index 985b4e935e..3a9b4115c8 100644
--- a/engines/glk/quest/geas_state.cpp
+++ b/engines/glk/quest/geas_state.cpp
@@ -72,7 +72,7 @@ public:
ofstream ofs;
ofs.open(savename.c_str());
if (!ofs.is_open())
- throw String("Unable to open \"" + savename + "\"");
+ error("Unable to open \"%s\"", savename.c_str());
ofs << "QUEST300" << char(0) << gamename << char(0);
String tmp = o.str();
for (uint i = 0; i < tmp.size(); i ++)
diff --git a/engines/glk/quest/geas_util.cpp b/engines/glk/quest/geas_util.cpp
index bc5eaac177..56ea70feef 100644
--- a/engines/glk/quest/geas_util.cpp
+++ b/engines/glk/quest/geas_util.cpp
@@ -66,7 +66,7 @@ int eval_int(String s) {
//cerr << "symbol == " << symbol << "; find --> "
// << String("+-*/").find (symbol) << endl;
- if (String("+-*/").find(symbol) == String::npos)
+ if (String("+-*/").find(symbol) == (int)String::npos)
return arg1;
++ index;
@@ -171,7 +171,7 @@ String lcase(String s) {
Common::Array<String> split_param(String s) {
Common::Array<String> rv;
- uint c1 = 0, c2;
+ int c1 = 0, c2;
for (;;) {
c2 = s.find(';', c1);
diff --git a/engines/glk/quest/geas_util.h b/engines/glk/quest/geas_util.h
index 2cedadde02..d63004ed56 100644
--- a/engines/glk/quest/geas_util.h
+++ b/engines/glk/quest/geas_util.h
@@ -24,7 +24,7 @@
#define GLK_QUEST_GEAS_UTIL
#include "glk/quest/read_file.h"
-#include "common/stream.h"
+#include "glk/quest/streams.h"
namespace Glk {
namespace Quest {
@@ -73,7 +73,7 @@ template<class T> Common::WriteStream &operator<<(Common::WriteStream &o, Common
template <class KEYTYPE, class VALTYPE>
bool has(Common::HashMap<KEYTYPE, VALTYPE, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> m, KEYTYPE key) {
return m.contains(key);
-};
+}
class Logger {
public:
diff --git a/engines/glk/quest/quest.cpp b/engines/glk/quest/quest.cpp
index cbddedaba8..8536f691bb 100644
--- a/engines/glk/quest/quest.cpp
+++ b/engines/glk/quest/quest.cpp
@@ -96,6 +96,9 @@ void Quest::playGame() {
case evtype_Redraw:
draw_banner();
break;
+
+ default:
+ break;
}
}
}
diff --git a/engines/glk/quest/streams.cpp b/engines/glk/quest/streams.cpp
index 1b49d2a6ec..bd64df31f2 100644
--- a/engines/glk/quest/streams.cpp
+++ b/engines/glk/quest/streams.cpp
@@ -60,6 +60,11 @@ Common::WriteStream &operator<<(Common::WriteStream &ws, const String &s) {
return ws;
}
+Common::WriteStream &operator<<(Common::WriteStream &ws, const char *s) {
+ ws.write(s, strlen(s));
+ return ws;
+}
+
Common::WriteStream &operator<<(Common::WriteStream &ws, char c) {
ws.writeByte(c);
return ws;
diff --git a/engines/glk/quest/streams.h b/engines/glk/quest/streams.h
index 3a8d2a4a60..8bfa6ae351 100644
--- a/engines/glk/quest/streams.h
+++ b/engines/glk/quest/streams.h
@@ -75,9 +75,11 @@ extern const char endl;
#define cerr (*g_cerr)
Common::WriteStream &operator<<(Common::WriteStream &, const String &);
+Common::WriteStream &operator<<(Common::WriteStream &, const char *);
Common::WriteStream &operator<<(Common::WriteStream &, char);
Common::WriteStream &operator<<(Common::WriteStream &, int);
Common::WriteStream &operator<<(Common::WriteStream &, uint);
+Common::WriteStream &operator<<(Common::WriteStream &, size_t);
} // End of namespace Quest
} // End of namespace Glk