#include <cstring> // strcpy
#include "Log.hh"
+#include "Script.hh"
namespace Mf {
case LOG_WARNING:
fprintf(stderr, "warning: ");
break;
+ case LOG_SCRIPT:
+ fprintf(stderr, " script: ");
+ break;
case LOG_INFO:
fprintf(stderr, " info: ");
break;
va_end(args);
}
+void logScript(const char* fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+
+ printLog_(LOG_SCRIPT, fmt, args);
+
+ va_end(args);
+}
+
+int logScript(Script& script)
+{
+ Script::Value param = script[1];
+
+ while (!param.isNone())
+ {
+ if (param.isString())
+ {
+ std::string str;
+ param.get(str);
+ logScript("%s", str.c_str());
+ }
+ else if (param.isBoolean())
+ {
+ if (param) logScript("true");
+ else logScript("false");
+
+ }
+ else if (param.isNil())
+ {
+ logScript("nil");
+ }
+ else
+ {
+ logScript("%s (%X)", param.getTypeName().c_str(),
+ param.getIdentifier());
+ }
+
+ param.index++;
+ }
+
+ return 0;
+}
+
+
+void importLogPrintFunction(Script& script)
+{
+ script.importFunction("print", (int (*)(Script&))logScript);
+}
+
} // namespace Mf