/ src / util.cpp
util.cpp
 1  #include "util.h"
 2  
 3  namespace NeovimQt {
 4  
 5  bool decode(const QVariant& in, QVariant& out)
 6  {
 7  	out = in;
 8  	return false;
 9  }
10  
11  } // namespace
12  
13  /**
14   * Overload to use msgpack_object with qDebug()
15   *
16   */
17  QDebug operator<<(QDebug dbg, const msgpack_object& obj)
18  {
19  	switch(obj.type) {
20  	case MSGPACK_OBJECT_NIL:
21  		dbg.space() << "NIL";
22  		break;
23  	case MSGPACK_OBJECT_BOOLEAN:
24  		dbg.space() <<  obj.via.boolean;
25  		break;
26  	case MSGPACK_OBJECT_POSITIVE_INTEGER:
27  		dbg.space() <<  obj.via.u64;
28  		break;
29  	case MSGPACK_OBJECT_NEGATIVE_INTEGER:
30  		dbg.space() <<  obj.via.i64;
31  		break;
32  	case MSGPACK_OBJECT_FLOAT:
33  		dbg.space() <<  obj.via.f64;
34  		break;
35  	case MSGPACK_OBJECT_STR:
36  		dbg.space() << QByteArray(obj.via.str.ptr, obj.via.str.size);
37  		break;
38  	case MSGPACK_OBJECT_BIN:
39  		dbg.space() << QByteArray(obj.via.bin.ptr, obj.via.bin.size);
40  		break;
41  	case MSGPACK_OBJECT_ARRAY:
42  		dbg.nospace() << "[";
43  		for (uint32_t i=0; i<obj.via.array.size; i++) {
44  			dbg.nospace() << obj.via.array.ptr[i];
45  			dbg.space() << ",";
46  		}
47  		dbg.nospace() << "]";
48  		break;
49  	case MSGPACK_OBJECT_MAP:
50  		dbg.nospace() << "{";
51  		for (uint32_t i=0; i<obj.via.map.size; i++) {
52  			dbg.nospace() << obj.via.map.ptr[i].key;
53  			dbg.space() << ":";
54  			dbg.nospace() << obj.via.map.ptr[i].val;
55  			dbg.space() << ",";
56  		}
57  		dbg.nospace() << "}";
58  		break;
59  	default:
60  		dbg.space() <<  "[Unknown msgpack type]";
61  	}
62  	return dbg.maybeSpace();
63  }
64  
65  typedef QPair<QString,QString> Param;
66  QDebug operator<<(QDebug dbg, const NeovimQt::Function& f)
67  {
68  	dbg.space() << f.return_type << f.name << "(";
69  	foreach(Param p, f.parameters) {
70  		dbg.space() << p.first << ",";
71  	}
72  	dbg.space() << ")" << "fails:" << f.can_fail;
73  	return dbg.maybeSpace();
74  }
75  
76