text: #pragma once
  
  #include "types.hpp"
  #include "string.hpp"
  
  namespace gen {
  
  /**
   * An object representing a string parsable version.
   */
  struct version {
  public:
  	/**
  	 * Gets the string parsed version.
  	 * @return The string representation of this object.
  	 */
  	virtual gen::string toString() const = 0;
  };
  
  struct gongen_version : public version {
  private:
  	const uint16 milestone;
  	const uint16 major;
  	const uint16 minor;
  	const uint16 patch;
  public:
  	gongen_version(uint16 milestone, uint16 major, uint16 minor, uint16 patch);
  	gen::string toString() const override;
  };
  
  } // namespace gen
  