From 4f25fa9ae42a0d43c20e954e8e50c66a6b057c92 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Fri, 27 Oct 2023 17:20:23 -0400 Subject: We can output a code for witnesspuzzles --- ext/wittle_generator/Serializer.h | 76 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 ext/wittle_generator/Serializer.h (limited to 'ext/wittle_generator/Serializer.h') diff --git a/ext/wittle_generator/Serializer.h b/ext/wittle_generator/Serializer.h new file mode 100644 index 0000000..86b262d --- /dev/null +++ b/ext/wittle_generator/Serializer.h @@ -0,0 +1,76 @@ +#ifndef SERIALIZER_H_51D08D41 +#define SERIALIZER_H_51D08D41 + +#include + +constexpr int SERIALIZER_VERSION = 0; + +class Serializer { + public: + enum CellType : char { + Null = 0, + Line = 1, + Square = 2, + Star = 3, + Nega = 4, + Triangle = 5, + Poly = 6, + Ylop = 7, + Nonce = 8 + }; + + enum CellPart : char { + Start = 1, + EndLeft = 2, + EndRight = 4, + EndTop = 8, + EndBottom = 16 + }; + + enum GenericFlag : char { + Autosolved = 1, + Symmetrical = 2, + SymmetryX = 4, + SymmetryY = 8, + Pillar = 16 + }; + + enum LineColor : char { + LineNone = 0, + LineBlack = 1, + LineBlue = 2, + LineYellow = 3 + }; + + enum DotColor : char { + DotNone = 0, + DotBlack = 1, + DotBlue = 2, + DotYellow = 3, + DotInvisible = 4 + }; + + enum SettingsFlag : char { + NegationsCancelNegations = 1, + ShapelessZeroPoly = 2, + PrecisePolyominos = 4, + FlashForErrors = 8, + FatStartpoints = 16, + CustomMechanics = 32 + }; + + enum GapType : char { GapNone = 0, GapBreak = 1, GapFull = 2 }; + + void writeByte(char val); + void writeInt(int val); + void writeLong(long val); + void writeColor(int val); + void writeString(const std::string& val); + + std::string str() const; + + private: + std::string buffer_; +}; + +#endif /* end of include guard: SERIALIZER_H_51D08D41 */ -- cgit 1.4.1