CoreUtils/MString.h
Matt Arant badfc4c709 merge
2023-10-07 02:31:33 +00:00

166 lines
3.5 KiB
C++

#ifndef __MString_h__
#define __MString_h__
#include "ZString.h"
#include <iostream>
#include <sstream>
namespace coreutils
{
///
/// Use the MString object when you need a permanent backing store on the heap
/// for a ZString style functionality. Because MString has a backing store we
/// added functionalities to build strings as well as the parsing power of the
/// ZString.
///
class MString : public ZString
{
public:
///
///
///
MString();
///
///
///
MString(const char *data);
MString(void *alias);
///
/// Consructor providing the initial setup of the MString object.
///
MString(unsigned char *data, size_t length);
MString(const char *data, size_t length);
MString(const unsigned char *data, size_t length);
///
/// Consructor providing a copy of a ZString.
///
///
/// Consructor providing a copy of a ZString.
///
MString(ZString &zstring);
MString(ZString zstring);
///
/// Consructor providing a copy of a ZString.
///
MString(const MString &mstring);
///
/// Consructor from a string.
///
MString(std::string data);
///
///
///
MString(char *data, size_t length);
MString(std::FILE *file);
///
///
///
virtual ~MString();
~MString();
///
/// Assignment operator will copy data to backing store.
///
// MString& operator=(coreutils::ZString& data);
///
/// Assignment operator will copy data to backing store.
///
// MString& operator=(coreutils::ZString& data);
MString &operator=(coreutils::ZString &data);
///
/// Assignment operator will copy data to backing store.
///
MString &operator=(const char *data);
///
/// Assignment operator will copy data to backing store.
///
MString &operator=(char data);
///
///
///
MString &operator<<(const char *value);
MString &operator<<(const int value);
// MString& operator<<(coreutils::ZString &zstring);
MString &operator<<(coreutils::ZString zstring);
MString &operator<<(std::string value);
///
///
///
void insert(char ch, int offset);
void insert(ZString &value, int offset);
void insert(std::string value, int offset);
///
///
///
void replace(char ch, int offset);
void replace(ZString &value, int offset);
void replace(std::string value, int offset);
///
///
///
void remove(int offset, int length);
///
///
///
MString &write(char ch);
///
///
///
MString &write(ZString &value);
int offset();
private:
int bufferSize = 0;
void setSize(int size);
};
}
#endif