////////////////////////////////////////////////////////////////////////////////// // // print, pprint, and tostring // // This module implements the heart of the lua 'print', lua 'pprint', and lua // 'tostring' functions. Note that we have to override the lua builtins 'print' // and 'tostring' for two reasons: // // * We need to suppress the printing of table addresses, for determinism. // * We need to channel the output to a PrintBuffer in the world model. // // Note that the actual lua 'print' and 'pprint' routines aren't defined in this // module, they're in the World module, because they send their output into the // PrintBuffer of the world model. But all the tricky code to implement 'print' // and 'pprint' are in this module. // ////////////////////////////////////////////////////////////////////////////////// #ifndef PPRINT_HPP #define PPRINT_HPP #include "luastack.hpp" // Atomic print to a stream. // // This prints an atomic value to a stream. If you give it a table, // it just prints "table". This routine is the heart of the lua // primitives 'print' and 'tostring'. // void atomic_print(LuaStack &LS, LuaSlot val, std::ostream *os); // Pretty print to a stream. // // If indent is >=0, the output is indented. If indent<0, then // the output is emitted without newlines or indentation. // // Maxlen specifies the maximum number of characters output. If // this is exceeded, then the printout is truncated. // void pprint(LuaStack &LS, LuaSlot val, bool indent, std::ostream *os); #endif // PPRINT_HPP