]> Dogcows Code - chaz/yoink/blobdiff - src/Moof/Log.cc
settings subsystem now using lua
[chaz/yoink] / src / Moof / Log.cc
index 0639a601dba5f2edb4e64212eba3862425e8873e..96c70955da1231d9d687260f75698ba5d9c74f74 100644 (file)
@@ -31,6 +31,7 @@
 #include <cstring>             // strcpy
 
 #include "Log.hh"
+#include "Script.hh"
 
 
 namespace Mf {
@@ -50,6 +51,9 @@ inline void printLog_(int logLevel, const char* fmt, va_list args)
                case LOG_WARNING:
                        fprintf(stderr, "warning: ");
                        break;
+               case LOG_SCRIPT:
+                       fprintf(stderr, " script: ");
+                       break;
                case LOG_INFO:
                        fprintf(stderr, "   info: ");
                        break;
@@ -112,6 +116,56 @@ void logDebug(const char* fmt, ...)
        va_end(args);
 }
 
+static 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 importLogScript(Script& script)
+{
+       script.importFunction("print", (int (*)(Script&))logScript);
+}
+
 
 } // namespace Mf
 
This page took 0.018672 seconds and 4 git commands to generate.