diff --git a/sandbox_vs2012.cpp b/vs2012/sandbox_vs2012.cpp similarity index 96% rename from sandbox_vs2012.cpp rename to vs2012/sandbox_vs2012.cpp index 85686f2b..b123eb86 100644 --- a/sandbox_vs2012.cpp +++ b/vs2012/sandbox_vs2012.cpp @@ -1,191 +1,191 @@ -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -struct Archive {}; - -struct Test -{ - template - void serialize( Archive & ar ) - { - std::cout << "hey there" << std::endl; - } - - template - void save( Archive & ar ) const - { - std::cout << "saved by the bell" << std::endl; - } - - template - void load( Archive & ar ) - { - std::cout << "locked and loaded" << std::endl; - } - - template - static Test * load_and_allocate( Archive & ar ) - { } -}; - -template -void serialize( Archive & ar, Test & t ) -{ } - -template -void load( Archive & ar, Test & t ) -{ } - -template -void save( Archive & ar, Test const & t ) -{ } - -namespace cereal -{ - template <> - struct LoadAndAllocate - { - template - static Test * load_and_allocate( Archive & ar ) - { } - }; -} - -struct A -{ - virtual void foo() = 0; -}; - -struct B : A -{ - void foo() {} -}; - -struct C -{ - char a; -}; - -CEREAL_REGISTER_TYPE(B); - -int main() -{ - - typedef Test T; - - // Test Load and Allocate internal/external - std::cout << "\tload_and_allocate" << std::endl; - std::cout << cereal::traits::has_member_load_and_allocate::value << std::endl; - std::cout << cereal::traits::has_non_member_load_and_allocate::value << std::endl; - - // serialize - std::cout << "\tserialize" << std::endl; - std::cout << cereal::traits::has_member_serialize::value << std::endl; - std::cout << cereal::traits::has_non_member_serialize::value << std::endl; - - // load - std::cout << "\tload" << std::endl; - std::cout << cereal::traits::has_member_load::value << std::endl; - std::cout << cereal::traits::has_non_member_load::value << std::endl; - - // save - std::cout << "\tsave" << std::endl; - std::cout << cereal::traits::has_member_save::value << std::endl; - std::cout << cereal::traits::has_non_member_save::value << std::endl; - - // splittable - std::cout << "\t splittable" << std::endl; - std::cout << cereal::traits::has_member_split::value << std::endl; - std::cout << cereal::traits::has_non_member_split::value << std::endl; - - // serialiable - std::cout << "\toutput serializable" << std::endl; - std::cout << cereal::traits::is_output_serializable::value << std::endl; - std::cout << cereal::traits::is_input_serializable::value << std::endl; - - // specialized - std::cout << "\tspecialized" << std::endl; - std::cout << cereal::traits::detail::is_specialized_member_serialize::value << std::endl; - std::cout << cereal::traits::detail::is_specialized_member_load_save::value << std::endl; - std::cout << cereal::traits::detail::is_specialized_non_member_serialize::value << std::endl; - std::cout << cereal::traits::detail::is_specialized_non_member_load_save::value << std::endl; - std::cout << cereal::traits::detail::is_specialized_error::value << std::endl; - std::cout << cereal::traits::is_specialized::value << std::endl; - - // array size - typedef int arr[5][3][2]; - std::cout << "\tarray size" << std::endl; - std::cout << cereal::traits::sizeof_array::value << std::endl; - - std::cout << typeid(A).name() << std::endl; - std::cout << typeid(cereal::traits::has_load_and_allocate).name() << std::endl; - - Archive a; - T t; - - cereal::access::member_save( a, t ); - cereal::access::member_load( a, t ); - cereal::access::member_serialize( a, t ); - - //std::stringstream ss; - { - cereal::JSONOutputArchive ar( std::cout ); - ar( 5 ); - ar( cereal::make_nvp("hello", 2.4f ) ); - std::string s = "hey yo"; - ar( CEREAL_NVP( s ) ); - } - //{ - // cereal::JSONInputArchive ar( ss ); - // int x; - // ar( x ); - // assert( x == 5 ); - // float f; - // ar( f ); - // assert( f == 2.4f ); - // std::string s; - // ar( s ); - // assert( s == "hey yo" ); - //} - - return 0; +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +struct Archive {}; + +struct Test +{ + template + void serialize( Archive & ar ) + { + std::cout << "hey there" << std::endl; + } + + template + void save( Archive & ar ) const + { + std::cout << "saved by the bell" << std::endl; + } + + template + void load( Archive & ar ) + { + std::cout << "locked and loaded" << std::endl; + } + + template + static Test * load_and_allocate( Archive & ar ) + { } +}; + +template +void serialize( Archive & ar, Test & t ) +{ } + +template +void load( Archive & ar, Test & t ) +{ } + +template +void save( Archive & ar, Test const & t ) +{ } + +namespace cereal +{ + template <> + struct LoadAndAllocate + { + template + static Test * load_and_allocate( Archive & ar ) + { } + }; +} + +struct A +{ + virtual void foo() = 0; +}; + +struct B : A +{ + void foo() {} +}; + +struct C +{ + char a; +}; + +CEREAL_REGISTER_TYPE(B); + +int main() +{ + + typedef Test T; + + // Test Load and Allocate internal/external + std::cout << "\tload_and_allocate" << std::endl; + std::cout << cereal::traits::has_member_load_and_allocate::value << std::endl; + std::cout << cereal::traits::has_non_member_load_and_allocate::value << std::endl; + + // serialize + std::cout << "\tserialize" << std::endl; + std::cout << cereal::traits::has_member_serialize::value << std::endl; + std::cout << cereal::traits::has_non_member_serialize::value << std::endl; + + // load + std::cout << "\tload" << std::endl; + std::cout << cereal::traits::has_member_load::value << std::endl; + std::cout << cereal::traits::has_non_member_load::value << std::endl; + + // save + std::cout << "\tsave" << std::endl; + std::cout << cereal::traits::has_member_save::value << std::endl; + std::cout << cereal::traits::has_non_member_save::value << std::endl; + + // splittable + std::cout << "\t splittable" << std::endl; + std::cout << cereal::traits::has_member_split::value << std::endl; + std::cout << cereal::traits::has_non_member_split::value << std::endl; + + // serialiable + std::cout << "\toutput serializable" << std::endl; + std::cout << cereal::traits::is_output_serializable::value << std::endl; + std::cout << cereal::traits::is_input_serializable::value << std::endl; + + // specialized + std::cout << "\tspecialized" << std::endl; + std::cout << cereal::traits::detail::is_specialized_member_serialize::value << std::endl; + std::cout << cereal::traits::detail::is_specialized_member_load_save::value << std::endl; + std::cout << cereal::traits::detail::is_specialized_non_member_serialize::value << std::endl; + std::cout << cereal::traits::detail::is_specialized_non_member_load_save::value << std::endl; + std::cout << cereal::traits::detail::is_specialized_error::value << std::endl; + std::cout << cereal::traits::is_specialized::value << std::endl; + + // array size + typedef int arr[5][3][2]; + std::cout << "\tarray size" << std::endl; + std::cout << cereal::traits::sizeof_array::value << std::endl; + + std::cout << typeid(A).name() << std::endl; + std::cout << typeid(cereal::traits::has_load_and_allocate).name() << std::endl; + + Archive a; + T t; + + cereal::access::member_save( a, t ); + cereal::access::member_load( a, t ); + cereal::access::member_serialize( a, t ); + + //std::stringstream ss; + { + cereal::JSONOutputArchive ar( std::cout ); + ar( 5 ); + ar( cereal::make_nvp("hello", 2.4f ) ); + std::string s = "hey yo"; + ar( CEREAL_NVP( s ) ); + } + //{ + // cereal::JSONInputArchive ar( ss ); + // int x; + // ar( x ); + // assert( x == 5 ); + // float f; + // ar( f ); + // assert( f == 2.4f ); + // std::string s; + // ar( s ); + // assert( s == "hey yo" ); + //} + + return 0; } \ No newline at end of file diff --git a/vs2012/vs2012.vcxproj b/vs2012/vs2012.vcxproj index 9c011e81..2db0a654 100644 --- a/vs2012/vs2012.vcxproj +++ b/vs2012/vs2012.vcxproj @@ -74,9 +74,6 @@ true - - - @@ -128,6 +125,9 @@ + + + diff --git a/vs2012/vs2012.vcxproj.filters b/vs2012/vs2012.vcxproj.filters index 9092fd90..1dfb0d7c 100644 --- a/vs2012/vs2012.vcxproj.filters +++ b/vs2012/vs2012.vcxproj.filters @@ -14,11 +14,6 @@ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - Source Files - - Header Files @@ -168,4 +163,9 @@ Header Files + + + Source Files + + \ No newline at end of file