This repository has been archived on 2024-06-01. You can view files and clone it, but cannot push or open issues or pull requests.
cathook/class_dumping/generate-class-headers.js
2018-05-08 12:35:22 -05:00

78 lines
1.6 KiB
JavaScript
Executable File

const fs = require("fs");
var fullClassTable = {};
try {
fullClassTable = JSON.parse(fs.readFileSync("full-class-table.json").toString());
} catch (e) {}
const file = fs.readFileSync(process.argv[2]).toString().split("\n");
const modname = process.argv[3];
console.log("Generating info for", modname, "from", process.argv[2]);
var classes = {};
for (var i in file) {
var classInfo = /\[(\d+)\] (\w+)/gi.exec(file[i]);
if (classInfo) {
fullClassTable[classInfo[2]] = true;
classes[classInfo[2]] = parseInt(classInfo[1]);
}
}
fs.writeFileSync("full-class-table.json", JSON.stringify(fullClassTable));
var headerConstexpr = `/*
AUTO-GENERATED HEADER - DO NOT MODIFY
CONSTEXPR HEADER FOR $mod
*/
#ifndef $mod_CONSTEXPR_AUTOGEN_HPP
#define $mod_CONSTEXPR_AUTOGEN_HPP
namespace client_classes_constexpr {
class $mod {
public:
`;
var header = `/*
AUTO-GENERATED HEADER - DO NOT MODIFY
NON-CONSTEXPR HEADER FOR $mod
*/
#ifndef $mod_AUTOGEN_HPP
#define $mod_AUTOGEN_HPP
namespace client_classes {
class $mod {
public:
`;
for (var clz in fullClassTable) {
var value = "0";
if (classes[clz]) value = classes[clz];
headerConstexpr += "\t\tstatic constexpr int " + clz + " = " + value + ";\n";
header += "\t\tint " + clz + " { " + value + " };\n";
}
header += `
};
extern $mod $mod_list;
}
#endif /* $mod_AUTOGEN_HPP */`;
headerConstexpr += `
};
}
#endif /* $mod_CONSTEXPR_AUTOGEN_HPP */`;
fs.writeFileSync("include/classinfo/" + modname + ".gen.hpp", header.replace(/\$mod/g, modname));
fs.writeFileSync("include/classinfo/" + modname + "_constexpr.gen.hpp", headerConstexpr.replace(/\$mod/g, modname));
console.log(classes);