53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "guid.h"
 | 
						|
#include "yaml/yaml.h"
 | 
						|
#include <iostream>
 | 
						|
#include <cassert>
 | 
						|
using namespace refl;
 | 
						|
using namespace std;
 | 
						|
void testGuid() {
 | 
						|
	Guid guid = Guid::Make();
 | 
						|
	YAML::TextArchive::Register<Guid>();
 | 
						|
	string text = YAML::Text_Serialize(guid);
 | 
						|
	auto res = YAML::Text_Unserialize<Guid>(text);
 | 
						|
	Guid guid2 = res.value();
 | 
						|
	assert(guid == guid2);
 | 
						|
	std::cout << guid << std::endl;
 | 
						|
}
 | 
						|
void testMeta() {
 | 
						|
	MetaBundle mb1;
 | 
						|
	mb1.metadatas.push_back({ Guid::Make() , "hello1" });
 | 
						|
	mb1.metadatas.push_back({ Guid::Make() , "hello2" });
 | 
						|
	mb1.metadatas.push_back({ Guid::Make() , "hello3" });
 | 
						|
	mb1.metadatas.push_back({ Guid::Make() , "hello4" });
 | 
						|
	string rmb1 = YAML::Text_Serialize(mb1);
 | 
						|
	std::cout << rmb1 << std::endl;
 | 
						|
	auto rmb2 = YAML::Text_Unserialize<MetaBundle>(rmb1);
 | 
						|
	if (rmb2) {
 | 
						|
		MetaBundle aa = rmb2.value();
 | 
						|
		std::cout << "success!\n" << YAML::Text_Serialize(aa) << std::endl;
 | 
						|
	}
 | 
						|
}
 | 
						|
void testTuple() {
 | 
						|
	std::map<int, string> table;
 | 
						|
	table.insert(std::make_pair(111,"hello\nworld!!"));
 | 
						|
	table.insert(std::make_pair(222, "yaml\n????"));
 | 
						|
	table.insert(std::make_pair(333, YAML::Text_Serialize(table)));
 | 
						|
	using T = std::map<int, string>;
 | 
						|
	string rtable = YAML::Text_Serialize(table);
 | 
						|
	std::cout << rtable << std::endl;
 | 
						|
	auto table2 = YAML::Text_Unserialize<std::map<int, string>>(rtable);
 | 
						|
	if (table2) {
 | 
						|
		std::map<int, string> aa = table2.value();
 | 
						|
		std::cout << "success!\n" << YAML::Text_Serialize(aa) << std::endl;
 | 
						|
	}
 | 
						|
}
 | 
						|
using size_impl = size_t(*)(const void*);
 | 
						|
int main() {
 | 
						|
	constexpr bool m1 = refl::is_map_v<std::vector<int>>;
 | 
						|
	constexpr bool m2 = refl::is_sequence_v<std::map<int, float>>;
 | 
						|
	auto cls = &TypeInfo<Guid>::StaticClass;
 | 
						|
	testGuid();
 | 
						|
	testMeta();
 | 
						|
	testTuple();
 | 
						|
	return 0;
 | 
						|
} |