from the default type, they need to be prefixed with a type symbol.
@lisp
-(dbus-call-method @dots{} :array '(:int32 @var{NAT-NUMBER} :int32 @var{NAT-NUMBER}))
+(dbus-call-method @dots{} '(:array :int32 @var{NAT-NUMBER} :int32 @var{NAT-NUMBER}))
@end lisp
There is an alternative form to specify a compound D-Bus type. The
keyword @code{:type}, followed by a type specifier, denotes a compound
-type as a list of type symbols. For example, a type specifier
-@code{(:array :int32)} stands for an array of @code{DBUS_TYPE_INT32}
-elements.
+type as a list of type symbols.@footnote{This alternative form is
+available only if the subfeature @code{:type} exists. Check it with
+
+@lisp
+(featurep 'dbus :type)
+@end lisp
+}
+For example, a type specifier @code{(:array :int32)} stands for an
+array of @code{DBUS_TYPE_INT32} elements.
The above example is equivalent to:
(dbus-call-method @dots{} :type '(:array :int32) '(@var{NAT-NUMBER} @var{NAT-NUMBER}))
@end lisp
+The D-Bus compound type rules are:
+
@itemize
@item An array must contain only elements of the same D-Bus type. It
can be empty.
#define DBUS_NUM_MESSAGE_TYPES 5
#endif
-
/* Some platforms define the symbol "interface", but we want to use it
* as a variable name below. */
if (XD_BASIC_DBUS_TYPE (dtype))
xd_append_basic_arg (dtype, object, iter);
+
else /* Compound types. */
{
wrong_type_argument (intern ("D-Bus"), spec);
sprintf (signature, "%c", dtype);
}
+
else /* Compound types. */
{
char *subsig;
wrong_type_argument (intern ("D-Bus"), spec);
xd_append_basic_arg (dtype, object, iter);
}
+
else /* Compound types. */
{
char signature[DBUS_MAXIMUM_SIGNATURE_LENGTH];
staticpro (&xd_registered_buses);
/* Add subfeature `:type'. */
- subfeatures = pure_cons (pure_cons (QCdbus_type_type, pure_cons (Qt, Qnil)),
- subfeatures);
-
+ subfeatures = Fcons (QCdbus_type_type, subfeatures);
Fprovide (intern_c_string ("dbusbind"), subfeatures);
}