mirror of
				https://github.com/RetroDECK/ES-DE.git
				synced 2025-04-10 19:15:13 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "rapidjson/document.h"
 | |
| #include "rapidjson/filewritestream.h"
 | |
| #include <rapidjson/prettywriter.h>
 | |
| 
 | |
| #include <algorithm>
 | |
| #include <iostream>
 | |
| 
 | |
| using namespace rapidjson;
 | |
| using namespace std;
 | |
| 
 | |
| static void printIt(const Value &doc) {
 | |
|     char writeBuffer[65536];
 | |
|     FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer));
 | |
|     PrettyWriter<FileWriteStream> writer(os);
 | |
|     doc.Accept(writer);
 | |
|     cout << endl;
 | |
| }
 | |
| 
 | |
| struct NameComparator {
 | |
|     bool operator()(const Value::Member &lhs, const Value::Member &rhs) const {
 | |
|         return (strcmp(lhs.name.GetString(), rhs.name.GetString()) < 0);
 | |
|     }
 | |
| };
 | |
| 
 | |
| int main() {
 | |
|     Document d(kObjectType);
 | |
|     Document::AllocatorType &allocator = d.GetAllocator();
 | |
| 
 | |
|     d.AddMember("zeta", Value().SetBool(false), allocator);
 | |
|     d.AddMember("gama", Value().SetString("test string", allocator), allocator);
 | |
|     d.AddMember("delta", Value().SetInt(123), allocator);
 | |
|     d.AddMember("alpha", Value(kArrayType).Move(), allocator);
 | |
| 
 | |
|     printIt(d);
 | |
| 
 | |
| /*
 | |
| {
 | |
|     "zeta": false,
 | |
|     "gama": "test string",
 | |
|     "delta": 123,
 | |
|     "alpha": []
 | |
| }
 | |
| */
 | |
| 
 | |
| // C++11 supports std::move() of Value so it always have no problem for std::sort().
 | |
| // Some C++03 implementations of std::sort() requires copy constructor which causes compilation error.
 | |
| // Needs a sorting function only depends on std::swap() instead.
 | |
| #if __cplusplus >= 201103L || (!defined(__GLIBCXX__) && (!defined(_MSC_VER) || _MSC_VER >= 1900))
 | |
|     std::sort(d.MemberBegin(), d.MemberEnd(), NameComparator());
 | |
| 
 | |
|     printIt(d);
 | |
| 
 | |
| /*
 | |
| {
 | |
|   "alpha": [],
 | |
|   "delta": 123,
 | |
|   "gama": "test string",
 | |
|   "zeta": false
 | |
| }
 | |
| */
 | |
| #endif
 | |
| }
 | 
