#include "config.h"
#include "smallwrite_dump.h"
#include "smallwrite_internal.h"
#include "ue2common.h"
#include "nfa/nfa_build_util.h"
#include "nfa/nfa_dump_api.h"
#include "nfa/nfa_internal.h"
#include "util/dump_util.h"
#include <cstdio>
#include <string>
#ifndef DUMP_SUPPORT
#error No dump support!
#endif
using namespace std;
namespace ue2 {
void smwrDumpText(const SmallWriteEngine *smwr, FILE *f) {
if (!smwr) {
fprintf(f, "<< no smallwrite >>\n");
return;
}
const struct NFA *n = getSmwrNfa(smwr);
fprintf(f, "SmallWrite:\n\n");
fprintf(f, "%s\n", describe(*n).c_str());
fprintf(f, "States: %u\n", n->nPositions);
fprintf(f, "Length: %u\n", n->length);
fprintf(f, "Largest Short Buffer: %u\n", smwr->largestBuffer);
fprintf(f, "Start Offset: %u\n", smwr->start_offset);
}
void smwrDumpNFA(const SmallWriteEngine *smwr, bool dump_raw,
const string &base) {
if (!smwr) {
DEBUG_PRINTF("no smallwrite\n");
return;
}
const struct NFA *n = getSmwrNfa(smwr);
nfaGenerateDumpFiles(n, base + "smallwrite_nfa");
if (dump_raw) {
StdioFile f(base + "smallwrite_nfa.raw", "w");
fwrite(n, 1, n->length, f);
}
}
}