Skip to content

Commit

Permalink
Vutils
Browse files Browse the repository at this point in the history
  • Loading branch information
vic4key committed Sep 30, 2023
1 parent 77919df commit 7e4c4a5
Showing 1 changed file with 65 additions and 65 deletions.
130 changes: 65 additions & 65 deletions include/Vutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -1065,6 +1065,71 @@ class Buffer
size_t m_size;
};

/**
* Variant
*/

template <class T>
class VariantT
{
public:
VariantT();
VariantT(VariantT& right);
virtual ~VariantT();

VariantT& operator=(VariantT& right);

T& data()
{
return *m_data;
}

template<typename T>
friend VariantT& operator<<(VariantT& stream, T v)
{
stream.data() << v;
return stream;
}

bool empty() const;

int to_int() const;
unsigned int to_uint() const;
__int64 to_int64() const;
unsigned __int64 to_uint64() const;
bool to_bool() const;
float to_float() const;
double to_double() const;
std::unique_ptr<byte[]> to_bytes() const;

protected:
std::unique_ptr<T> m_data;
};

#define VariantTA VariantT<std::stringstream>

class VariantA : public VariantTA
{
public:
VariantA();
VariantA(VariantA& right);
virtual ~VariantA();

std::string to_string() const;
};

#define VariantTW VariantT<std::wstringstream>

class VariantW : public VariantTW
{
public:
VariantW();
VariantW(VariantW& right);
virtual ~VariantW();

std::wstring to_string() const;
};

/**
* Library
*/
Expand Down Expand Up @@ -2747,71 +2812,6 @@ class PEFileTW : public PEFileTX<T>
FileMappingW m_file_map;
};

/**
* Variant
*/

template <class T>
class VariantT
{
public:
VariantT();
VariantT(VariantT& right);
virtual ~VariantT();

VariantT& operator=(VariantT& right);

T& data()
{
return *m_data;
}

template<typename T>
friend VariantT& operator<<(VariantT& stream, T v)
{
stream.data() << v;
return stream;
}

bool empty() const;

int to_int() const;
unsigned int to_uint() const;
__int64 to_int64() const;
unsigned __int64 to_uint64() const;
bool to_bool() const;
float to_float() const;
double to_double() const;
std::unique_ptr<byte[]> to_bytes() const;

protected:
std::unique_ptr<T> m_data;
};

#define VariantTA VariantT<std::stringstream>

class VariantA : public VariantTA
{
public:
VariantA();
VariantA(VariantA& right);
virtual ~VariantA();

std::string to_string() const;
};

#define VariantTW VariantT<std::wstringstream>

class VariantW : public VariantTW
{
public:
VariantW();
VariantW(VariantW& right);
virtual ~VariantW();

std::wstring to_string() const;
};

/**
* WDTControl
*/
Expand Down

0 comments on commit 7e4c4a5

Please sign in to comment.