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