【Poco】Poco::DynamicAny中的例子

#include "../tmain.hpp"

void test_DynamicAnyInt()
{
	Poco::Int32 src = 32;
	Poco::DynamicAny a1 = src;

	assert (a1.type() == typeid(Poco::Int32));

	std::string s1;
	Poco::Int8 s2;
	Poco::Int16 s3;
	Poco::Int32 s4;
	Poco::Int64 s5;
	Poco::UInt8 s6;
	Poco::UInt16 s7;
	Poco::UInt32 s8;
	Poco::UInt64 s9;
	float s10;
	double s11;
	bool s12;
	char s13;
	long s14;
	unsigned long s15;
	a1.convert(s1);
	a1.convert(s2);
	a1.convert(s3);
	a1.convert(s4);
	a1.convert(s5);
	a1.convert(s6);
	a1.convert(s7);
	a1.convert(s8);
	a1.convert(s9);
	a1.convert(s10);
	a1.convert(s11);
	a1.convert(s12);
	a1.convert(s13);
	a1.convert(s14);
	a1.convert(s15);

	assert (s1 == "32");
	assert (s2 == 32);
	assert (s3 == 32);
	assert (s4 == 32);
	assert (s5 == 32);
	assert (s6 == 32);
	assert (s7 == 32);
	assert (s8 == 32);
	assert (s9 == 32);
	assert (s10 == 32.0f);
	assert (s11 == 32.0);
	assert (s12);
	assert (s13 == ' ');
	assert (s14 == 32);
	assert (s15 == 32);

	Poco::DynamicAny a2(a1);
	std::string t2;
	a2.convert(t2);
	assert (s1 == t2);

	Poco::Int32 value = a1.extract<Poco::Int32>();
	assert (value == 32);

	try
	{
		Poco::Int16 value2; 
		value2 = a1.extract<Poco::Int16>();
	}
	catch (Poco::BadCastException&)
	{
	}
}


你可能感兴趣的:(【Poco】Poco::DynamicAny中的例子)