|
#ifndef _Conversion_H
#define _Conversion_H
#include "Reflection.h"
#include <string>
#include <vector>
using namespace std;
string Object2String (Double* object);
string Object2String (Int* object);
string Object2String (Long* object);
string Object2String (Bool* object);
string Object2String (String* object);
bool String2Object (Double* object, string& value);
bool String2Object (Int* object, string& value);
bool String2Object (Long* object, string& value);
bool String2Object (Bool* object, string& value);
bool String2Object (String* object, string& value);
class ConversionHelper;
class IConversion
{
public:
IConversion (const string& name);
virtual ~IConversion ();
virtual string Object2String (object_ptr& objectPtr) = 0;
virtual void String2Object (string& value, object_ptr& objectPtr) = 0;
// Property
string& Name() { return name_; }
private:
string name_;
ConversionHelper* conversionHelper_;
};
template<typename T>
class ConversionBase : public IConversion
{
public:
ConversionBase<T> () : IConversion(typeid(T).name()) {}
virtual string Object2String(object_ptr& objectPtr)
{
return ::Object2String(reinterpret_cast<T*>(objectPtr.value()));
}
virtual void String2Object (string& value, object_ptr& objectPtr)
{
::String2Object(reinterpret_cast<T*>(objectPtr.value()),value);
}
};
#endif
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
MSc in System Engineering from Tallinn Technical University, Estonia. Currently, I work in a hitech enterprise in Israel.