gigatron/rom/Contrib/at67/pragmas.h
2025-01-28 19:17:01 +03:00

44 lines
1.8 KiB
C++

#ifndef PRAGMAS_H
#define PRAGMAS_H
#include <string>
#include <map>
namespace Pragmas
{
enum PragmaResult {PragmaNotFound, PragmaError, PragmaFound};
using PragamFuncPtr = bool (*)(const std::string& input, int codeLineIndex, size_t foundPos);
struct Pragma
{
std::string _name;
PragamFuncPtr _func;
};
std::map<std::string, Pragma>& getPragmas(void);
bool initialise(void);
bool findPragma(std::string code, const std::string& pragma, size_t& foundPos);
PragmaResult handlePragmas(std::string& input, int codeLineIndex);
// Pragmas
bool CODEROMTYPE(const std::string& input, int codeLineIndex, size_t foundPos);
bool RUNTIMEPATH(const std::string& input, int codeLineIndex, size_t foundPos);
bool RUNTIMESTART(const std::string& input, int codeLineIndex, size_t foundPos);
bool USERCODESTART(const std::string& input, int codeLineIndex, size_t foundPos);
bool ARRAYSSTART(const std::string& input, int codeLineIndex, size_t foundPos);
bool STRINGSSTART(const std::string& input, int codeLineIndex, size_t foundPos);
bool STRINGWORKAREA(const std::string& input, int codeLineIndex, size_t foundPos);
bool TEMPVARSIZE(const std::string& input, int codeLineIndex, size_t foundPos);
bool CODEOPTIMISETYPE(const std::string& input, int codeLineIndex, size_t foundPos);
bool ARRAYINDICIESONE(const std::string& input, int codeLineIndex, size_t foundPos);
bool MAXNUMSPRITES(const std::string& input, int codeLineIndex, size_t foundPos);
bool SPRITESTRIPECHUNKS(const std::string& input, int codeLineIndex, size_t foundPos);
bool ENABLE6BITAUDIOEMU(const std::string& input, int codeLineIndex, size_t foundPos);
}
#endif