#ifndef __MString_h__
#define __MString_h__

#include "ZString.h"

namespace coreutils {

   ///
   /// Use the MString object when you need a permanent backing store on the heap 
   /// for a ZString style functionality.
   ///
   
   class MString : public ZString {

    public:

      ///
      ///
      ///
      
      MString();
      
      ///
      ///
      ///

      MString(const char *data);

      ///
      /// Consructor providing the initial setup of the ZString object.
      ///

      MString(char *data, size_t length);

      MString(const char *data, size_t length);

      ///
      /// Consructor providing a copy of a ZString.
      ///

      MString(const MString &zstring);

      ///
      /// Consructor from a string.
      ///

      MString(std::string string);

      ~MString();

      int write(char ch);

      int write(ZString &value);
      
    private:
      int bufferSize = 0;
      void setSize(int size);
	         
   };

}

#endif
