neptools

Modding tools to Neptunia games
git clone https://git.neptards.moe/neptards/neptools.git
Log | Files | Refs | Submodules | README | LICENSE

txt_serializable.hpp (799B)


      1 #ifndef UUID_E17CE799_6569_40E4_A8FE_39F088AE30AB
      2 #define UUID_E17CE799_6569_40E4_A8FE_39F088AE30AB
      3 #pragma once
      4 
      5 #include <libshit/meta.hpp>
      6 #include <libshit/lua/type_traits.hpp>
      7 #include <libshit/lua/dynamic_object.hpp>
      8 
      9 #include <iosfwd>
     10 #include <string>
     11 
     12 namespace Neptools
     13 {
     14 
     15   class TxtSerializable : public Libshit::Lua::DynamicObject
     16   {
     17     LIBSHIT_LUA_CLASS;
     18   public:
     19     LIBSHIT_NOLUA void WriteTxt(std::ostream& os) const { WriteTxt_(os); }
     20     LIBSHIT_NOLUA void WriteTxt(std::ostream&& os) const { WriteTxt_(os); }
     21     LIBSHIT_NOLUA void ReadTxt(std::istream& is) { ReadTxt_(is); }
     22     LIBSHIT_NOLUA void ReadTxt(std::istream&& is) { ReadTxt_(is); }
     23 
     24   private:
     25     virtual void WriteTxt_(std::ostream& os) const = 0;
     26     virtual void ReadTxt_(std::istream& is) = 0;
     27   };
     28 
     29 }
     30 #endif