sots-engine/src/mars/stream/dump.h

23 lines
881 B
C++

// mars::stream — text dump of a generic tree, one line per item:
// @<inflated offset> <indent><name> <kind>[?] <value>[ (alt <other reading>)]
// `?` marks a guessed kind; frames print `{ ... }` with item count and size.
// The format matches the reference reader's --dump output line for line so
// the two can be diffed (numbers use Python's float repr, strings JSON quoting).
#pragma once
#include <string>
#include <vector>
#include "node.h"
namespace mars::stream {
// Python-compatible shortest round-trip repr of a double ("240.0", "1e-05", "3.4028234663852886e+38").
std::string py_float_repr(double v);
// JSON string literal for windows-1252 bytes (non-ASCII escaped as \uXXXX, like json.dumps).
std::string json_quote_cp1252(const std::string& bytes);
std::vector<std::string> dump_tree(const Node& root, int max_depth = 999);
} // namespace mars::stream