Esempio n. 1
0
const std::string& VariantImpl::getString() const
{
    switch(type) {
      case VAR_STRING: return *reinterpret_cast<std::string*>(value.v);
      default: throw InvalidConversion(QPID_MSG("Variant is not a string; use asString() if conversion is required."));
    }
}
Esempio n. 2
0
const Variant::Map& VariantImpl::asMap() const
{
    switch(type) {
      case VAR_MAP: return *reinterpret_cast<Variant::Map*>(value.v);
      default: throw InvalidConversion(QPID_MSG("Cannot convert from " << getTypeName(type) << " to " << getTypeName(VAR_MAP)));
    }
}
Esempio n. 3
0
Variant::List& VariantImpl::asList()
{
    switch(type) {
      case VAR_LIST: return *reinterpret_cast<Variant::List*>(value.v);
      default: throw InvalidConversion(QPID_MSG("Cannot convert from " << getTypeName(type) << " to " << getTypeName(VAR_LIST)));
    }
}
Esempio n. 4
0
		int EMailImapService::toInt(std::string s)
		{
			std::stringstream ss(s);
			int ret;
			ss >> ret;
			if (ss.rdbuf()->in_avail() == 0) return ret;
			else throw InvalidConversion("Invalid integer " + s + ".");
		}
Esempio n. 5
0
float VariantImpl::asFloat() const
{
    switch(type) {
      case VAR_FLOAT: return value.f;
      case VAR_STRING: return convertFromString<float>();
      default: throw InvalidConversion(QPID_MSG("Cannot convert from " << getTypeName(type) << " to " << getTypeName(VAR_FLOAT)));
    }
}
Esempio n. 6
0
int8_t VariantImpl::asInt8() const
{
    switch(type) {
      case VAR_INT8: return value.i8;
      case VAR_STRING: return convertFromString<int8_t>();
      default: throw InvalidConversion(QPID_MSG("Cannot convert from " << getTypeName(type) << " to " << getTypeName(VAR_INT8)));
    }
}
Esempio n. 7
0
double VariantImpl::asDouble() const
{
    switch(type) {
      case VAR_FLOAT: return value.f;
      case VAR_DOUBLE: return value.d;
      case VAR_STRING: return convertFromString<double>();
      default: throw InvalidConversion(QPID_MSG("Cannot convert from " << getTypeName(type) << " to " << getTypeName(VAR_DOUBLE)));
    }
}
Esempio n. 8
0
uint16_t VariantImpl::asUint16() const
{
    switch(type) {
      case VAR_UINT8: return value.ui8;
      case VAR_UINT16: return value.ui16;
      case VAR_STRING: return convertFromString<uint16_t>();
      default: throw InvalidConversion(QPID_MSG("Cannot convert from " << getTypeName(type) << " to " << getTypeName(VAR_UINT16)));
    }
}
Esempio n. 9
0
 template<class T> T convertFromString() const
 {
     std::string* s = reinterpret_cast<std::string*>(value.v);
     try {
         return boost::lexical_cast<T>(*s);
     } catch(const boost::bad_lexical_cast&) {
         throw InvalidConversion(QPID_MSG("Cannot convert " << *s));
     }
 }
Esempio n. 10
0
		void EMailImapService::addEIDList(dtn::data::Block &block, vmime::utility::ref<const vmime::attachment> &attachment)
		{
			std::vector<vmime::ref<vmime::headerField> > eidFiels =
					attachment->getHeader().constCast<vmime::header>()->findAllFields("Block-EID-Reference");
			try {
				for(std::vector<vmime::ref<vmime::headerField> >::iterator it = eidFiels.begin(); it != eidFiels.end(); ++it)
					block.addEID(dtn::data::EID((*it)->getValue()->generate()));
			}catch(vmime::exceptions::no_such_field&) {
				throw InvalidConversion("Invalid EID field.");
			}
		}
Esempio n. 11
0
		dtn::data::BundleID EMailImapService::extractBID(const std::string &message) {
			try {
				dtn::data::BundleID ret;

				ret.source = searchString("Bundle-Source: ", message);
				ret.timestamp = toInt(searchString("Bundle-Creation-Time: ", message));
				ret.sequencenumber = toInt(searchString("Bundle-Sequence-Number: ", message));
				try {
					ret.fragmentoffset = toInt(searchString("Bundle-Fragment-Offset: ", message));
					ret.setFragment(true);
				}catch(...){}

				return ret;
			}catch(...) {
				throw InvalidConversion("No bundle ID was found");
			}
		}
Esempio n. 12
0
bool VariantImpl::asBool() const
{
    switch(type) {
      case VAR_VOID: return false;
      case VAR_BOOL: return value.b;
      case VAR_UINT8: return value.ui8;
      case VAR_UINT16: return value.ui16;
      case VAR_UINT32: return value.ui32;
      case VAR_UINT64: return value.ui64;
      case VAR_INT8: return value.i8;
      case VAR_INT16: return value.i16;
      case VAR_INT32: return value.i32;
      case VAR_INT64: return value.i64;
      case VAR_STRING: return toBool(*reinterpret_cast<std::string*>(value.v));
      default: throw InvalidConversion(QPID_MSG("Cannot convert from " << getTypeName(type) << " to " << getTypeName(VAR_BOOL)));
    }
}
Esempio n. 13
0
std::string VariantImpl::asString() const
{
    switch(type) {
      case VAR_VOID: return EMPTY;
      case VAR_BOOL: return value.b ? TRUE : FALSE;
      case VAR_UINT8: return boost::lexical_cast<std::string>((int) value.ui8);
      case VAR_UINT16: return boost::lexical_cast<std::string>(value.ui16);
      case VAR_UINT32: return boost::lexical_cast<std::string>(value.ui32);
      case VAR_UINT64: return boost::lexical_cast<std::string>(value.ui64);
      case VAR_INT8: return boost::lexical_cast<std::string>((int) value.i8);
      case VAR_INT16: return boost::lexical_cast<std::string>(value.i16);
      case VAR_INT32: return boost::lexical_cast<std::string>(value.i32);
      case VAR_INT64: return boost::lexical_cast<std::string>(value.i64);
      case VAR_DOUBLE: return boost::lexical_cast<std::string>(value.d);
      case VAR_FLOAT: return boost::lexical_cast<std::string>(value.f);
      case VAR_STRING: return *reinterpret_cast<std::string*>(value.v);
      case VAR_LIST: return toString(asList());
      case VAR_MAP: return toString(asMap());
      default: throw InvalidConversion(QPID_MSG("Cannot convert from " << getTypeName(type) << " to " << getTypeName(VAR_STRING)));
    }
}