19#include <unordered_map>
20#include <boost/algorithm/string.hpp>
91 static const std::string
END;
98 void Parse(std::string meta_data);
109 void ParseStart(
const std::string& item, std::deque<std::string>& strs);
120 void ParseEnd(
const std::string& item, std::deque<std::string>& strs);
131 void ParseCharId(
const std::string& item, std::deque<std::string>& strs);
141 void ParseEntity(
const std::string& item, std::deque<std::string>& strs);
201 const std::string& entity,
uint32 address,
uint32 opcode
262 default:
return std::to_string(value_or_address);
270 const auto address =
static_cast<uint32>(value_or_address) & 0xFF;
272 bank, value_or_address
274 if (friendly_name.empty())
275 return (boost::format(
"Banks[%1%][%2%]") % bank % address).str();
277 boost::format(
"Banks[%1%][%2%]--[[%3%]]") % bank % address % friendly_name
283 const auto address =
static_cast<uint32>(value_or_address)& 0xFF;
285 if (friendly_name.empty())
286 return (boost::format(
"Banks[%1%][%2%]") % bank % address).str();
288 boost::format(
"Banks[%1%][%2%]--[[%3%]]") % bank % address % friendly_name
295 ) % bank % (
static_cast<uint32>(value_or_address) & 0xFF)
334 std::string line,
bool unindent_before =
false,
bool indent_after =
false
@ LIFO_ARGUMENT_ORDER
First argument is pushed to stack last.
Definition: CodeGenerator.h:48
@ FIFO_ARGUMENT_ORDER
First argument is pushed to stack first.
Definition: CodeGenerator.h:43
boost::adjacency_list< boost::setS, boost::listS, boost::bidirectionalS, GraphProperty, EdgeProperty > Graph
Definition: Graph.h:169
std::vector< InstPtr > InstVec
Type representing a vector of InstPtrs.
Definition: Instruction.h:382
Base class for code generators.
Definition: CodeGenerator.h:58
std::unique_ptr< LuaLanguage > target_lang_
The target language.
Definition: CodeGenerator.h:305
Base class for engines.
Definition: Engine.h:34
The code generator.
Definition: FieldCodeGenerator.h:170
FieldScriptFormatter & formatter_
The formatter.
Definition: FieldCodeGenerator.h:419
virtual bool OutputOnlyRequiredLabels() const override
Checks if only required labels are to be written.
Definition: FieldCodeGenerator.cpp:279
static const std::string FormatInvertedBool(uint32 value)
Formats a value as a boolean.
Definition: FieldCodeGenerator.cpp:316
float GetScaleFactor() const
Retrieves the engine scale factor.
Definition: FieldCodeGenerator.cpp:220
virtual void Generate(InstVec &insts, const Graph &graph) override
Generates the script from the instructions.
Definition: FieldCodeGenerator.cpp:84
std::vector< CodeLine > lines_
Generated lines.
Definition: FieldCodeGenerator.h:414
static const std::string FormatInstructionNotImplemented(const std::string &entity, uint32 address, uint32 opcode)
Generates code for an unimplemented instruction.
Definition: FieldCodeGenerator.cpp:283
virtual void OnEndFunction(const Function &function) override
Finalizes a function.
Definition: FieldCodeGenerator.cpp:263
virtual void AddOutputLine(std::string line, bool unindent_before=false, bool indent_after=false) override
Adds a line to the script.
Definition: FieldCodeGenerator.cpp:216
static const std::string FormatBool(uint32 value)
Formats a value as a boolean.
Definition: FieldCodeGenerator.cpp:312
ValueType
Type of data.
Definition: FieldCodeGenerator.h:177
FieldScriptFormatter & GetFormatter()
Retrieves the formatter.
Definition: FieldCodeGenerator.cpp:281
static const std::string FormatValueOrVariable(FieldScriptFormatter &formatter, uint32 bank, TValue value_or_address, ValueType type=ValueType::Integer, float scale=1.0f)
Formats a data access for a map script.
Definition: FieldCodeGenerator.h:252
FieldCodeGenerator(Engine *engine, const InstVec &insts, std::ostream &output, FieldScriptFormatter &formatter)
Constructor.
Definition: FieldCodeGenerator.h:308
virtual void OnStartFunction(const Function &function) override
Initializes a function.
Definition: FieldCodeGenerator.cpp:234
virtual std::string ConstructFuncSignature(const Function &function) override
Constructs the function signature.
Definition: FieldCodeGenerator.cpp:272
virtual void OnBeforeStartFunction(const Function &function) override
Adds lines to the script before a function.
Definition: FieldCodeGenerator.cpp:223
const InstVec & insts_
The list of instructions in the function to generate.
Definition: FieldCodeGenerator.h:409
Structure for representing an instruction.
Definition: Instruction.h:50
DummyFormatter formatter
Definition: ff7_field_disasm_all_opcodes_by_category_test.cpp:1966
unsigned int uint32
Definition: scummsys.h:435
Structure representing a function.
Definition: Function.h:26