major D-Bus code update
git-svn-id: http://dev.openwengo.org/svn/openwengo/wengophone-ng/branches/wengophone-dbus-api/libs/dbus@7715 30a43799-04e7-0310-8b2b-ea0d24f86d0e
This commit is contained in:
parent
acfeb85b87
commit
42ea920aeb
41 changed files with 958 additions and 1506 deletions
120
src/types.cpp
120
src/types.cpp
|
@ -33,15 +33,16 @@
|
|||
using namespace DBus;
|
||||
|
||||
Variant::Variant()
|
||||
: _msg(CallMessage()), // dummy message used as temporary storage for variant data
|
||||
_it(_msg.w_iter())
|
||||
: _msg(CallMessage()) // dummy message used as temporary storage for variant data
|
||||
{
|
||||
}
|
||||
|
||||
Variant::Variant( MessageIter& it )
|
||||
: _msg(it.msg()),
|
||||
_it(it.recurse())
|
||||
: _msg(CallMessage())
|
||||
{
|
||||
MessageIter vi = it.recurse();
|
||||
MessageIter mi = _msg.writer();
|
||||
vi.copy_data(mi);
|
||||
}
|
||||
|
||||
Variant& Variant::operator = ( const Variant& v )
|
||||
|
@ -49,118 +50,35 @@ Variant& Variant::operator = ( const Variant& v )
|
|||
if(&v != this)
|
||||
{
|
||||
_msg = v._msg;
|
||||
_it = v._it;
|
||||
_signature = v._signature;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
const char* Variant::signature() const
|
||||
void Variant::clear()
|
||||
{
|
||||
char* sigbuf = _it.signature();
|
||||
CallMessage empty;
|
||||
_msg = empty;
|
||||
}
|
||||
|
||||
_signature = sigbuf;
|
||||
const Signature Variant::signature() const
|
||||
{
|
||||
char* sigbuf = reader().signature();
|
||||
|
||||
Signature signature = sigbuf;
|
||||
|
||||
free(sigbuf);
|
||||
|
||||
return _signature.c_str();
|
||||
return signature;
|
||||
}
|
||||
|
||||
MessageIter& operator << ( MessageIter& iter, const Variant& val )
|
||||
{
|
||||
const char* sig = val.signature();
|
||||
const Signature sig = val.signature();
|
||||
|
||||
MessageIter rit = val.iter();
|
||||
MessageIter wit = iter.new_variant(sig);
|
||||
MessageIter rit = val.reader();
|
||||
MessageIter wit = iter.new_variant(sig.c_str());
|
||||
|
||||
for(size_t i = 0; i < strlen(sig); ++i)
|
||||
{
|
||||
switch(sig[i])
|
||||
{
|
||||
case 'b':
|
||||
{
|
||||
Bool b; rit >> b; wit << b;
|
||||
break;
|
||||
}
|
||||
case 'y':
|
||||
{
|
||||
Byte y; rit >> y; wit << y;
|
||||
break;
|
||||
}
|
||||
case 'n':
|
||||
{
|
||||
Int16 n; rit >> n; wit << n;
|
||||
break;
|
||||
}
|
||||
case 'q':
|
||||
{
|
||||
UInt16 q; rit >> q; wit << q;
|
||||
break;
|
||||
}
|
||||
case 'i':
|
||||
{
|
||||
Int32 i; rit >> i; wit << i;
|
||||
break;
|
||||
}
|
||||
case 'u':
|
||||
{
|
||||
UInt32 u; rit >> u; wit << u;
|
||||
break;
|
||||
}
|
||||
case 'x':
|
||||
{
|
||||
Int64 x; rit >> x; wit << x;
|
||||
break;
|
||||
}
|
||||
case 't':
|
||||
{
|
||||
UInt64 t; rit >> t; wit << t;
|
||||
break;
|
||||
}
|
||||
case 'd':
|
||||
{
|
||||
Double d; rit >> d; wit << d;
|
||||
break;
|
||||
}
|
||||
case 's':
|
||||
{
|
||||
String s; rit >> s; wit << s;
|
||||
break;
|
||||
}
|
||||
case 'o':
|
||||
{
|
||||
Path o; rit >> o; wit << o;
|
||||
break;
|
||||
}
|
||||
case 'g':
|
||||
{
|
||||
Signature g; rit >> g; wit << g;
|
||||
break;
|
||||
}
|
||||
case 'a':
|
||||
{
|
||||
break;
|
||||
}
|
||||
case '(':
|
||||
{
|
||||
break;
|
||||
}
|
||||
case ')':
|
||||
{
|
||||
break;
|
||||
}
|
||||
case '{':
|
||||
{
|
||||
break;
|
||||
}
|
||||
case '}':
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: implement marshaling of compound types
|
||||
rit.copy_data(wit);
|
||||
|
||||
iter.close_container(wit);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue