00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00035 #include <stdlib.h>
00036 #include <string.h>
00037 #include <stdio.h>
00038
00039 #include "debug.h"
00040 #include "utils.h"
00041 #include "easydbus-core.h"
00042
00050 int
00051 easydbus_variant_add_string (EasyDbus_container * container,
00052 char *string)
00053 {
00054 int string_length = 0;
00055
00056 if (container == NULL || string == NULL)
00057 return -1;
00058
00059 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00060 return -1;
00061
00062 if (container->nel)
00063 return -1;
00064 string_length = strlen (string) + 1;
00065 container->p_data = malloc (string_length);
00066 if (container->p_data == NULL)
00067 return -1;
00068
00069 EASYDBUS_MEMCOPY (container->p_data, string, string_length);
00070
00071 container->nel = 1;
00072 container->elem_type = EASYDBUS_ELTYPE_STRING;
00073 return 0;
00074 }
00075
00083 int
00084 easydbus_variant_add_obj_path (EasyDbus_container * container,
00085 char *string)
00086 {
00087 int string_length = 0;
00088
00089 if (container == NULL || string == NULL)
00090 return -1;
00091
00092 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00093 return -1;
00094
00095 if (container->nel)
00096 return -1;
00097 string_length = strlen (string) + 1;
00098 container->p_data = malloc (string_length);
00099 if (container->p_data == NULL)
00100 return -1;
00101
00102 EASYDBUS_MEMCOPY (container->p_data, string, string_length);
00103
00104 container->nel = 1;
00105 container->elem_type = EASYDBUS_ELTYPE_OBJECT_PATH;
00106 return 0;
00107 }
00108
00109
00118 int
00119 easydbus_variant_add_signature (EasyDbus_container * container,
00120 char *string)
00121 {
00122 int string_length = 0;
00123
00124 if (container == NULL || string == NULL)
00125 return -1;
00126
00127 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00128 return -1;
00129
00130 if (container->nel)
00131 return -1;
00132 string_length = strlen (string) + 1;
00133 container->p_data = malloc (string_length);
00134 if (container->p_data == NULL)
00135 return -1;
00136
00137 EASYDBUS_MEMCOPY (container->p_data, string, string_length);
00138
00139 container->nel = 1;
00140 container->elem_type = EASYDBUS_ELTYPE_SIGNATURE;
00141 return 0;
00142 }
00143
00151 int
00152 easydbus_variant_add_i32 (EasyDbus_container * container,
00153 int i32)
00154 {
00155 int *temp;
00156
00157 if (container == NULL)
00158 return -1;
00159
00160 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00161 return -1;
00162
00163 if (container->nel)
00164 return -1;
00165 temp = (int *) malloc (sizeof (int));
00166 if (temp == NULL)
00167 return -1;
00168 memset (temp, 0, sizeof (int));
00169 *temp = i32;
00170 container->p_data = (void *) temp;
00171 container->nel = 1;
00172 container->elem_type = EASYDBUS_ELTYPE_INT32;
00173 return 0;
00174 }
00175
00183 int
00184 easydbus_variant_add_ui32 (EasyDbus_container * container,
00185 unsigned int ui32)
00186 {
00187 unsigned int *temp;
00188
00189 if (container == NULL)
00190 return -1;
00191
00192 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00193 return -1;
00194
00195 if (container->nel)
00196 return -1;
00197 temp = (unsigned int *) malloc (sizeof (int));
00198 if (temp == NULL)
00199 return -1;
00200 memset (temp, 0, sizeof (int));
00201 *temp = ui32;
00202 container->p_data = (void *) temp;
00203 container->nel = 1;
00204 container->elem_type = EASYDBUS_ELTYPE_UINT32;
00205 return 0;
00206 }
00207
00215 int
00216 easydbus_variant_add_i16 (EasyDbus_container * container,
00217 short i16)
00218 {
00219 short *temp;
00220
00221 if (container == NULL)
00222 return -1;
00223
00224 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00225 return -1;
00226
00227 if (container->nel)
00228 return -1;
00229 temp = (short *) malloc (sizeof (short));
00230 if (temp == NULL)
00231 return -1;
00232 memset (temp, 0, sizeof (short));
00233 *temp = i16;
00234 container->p_data = (void *) temp;
00235 container->nel = 1;
00236 container->elem_type = EASYDBUS_ELTYPE_INT16;
00237 return 0;
00238 }
00239
00248 int
00249 easydbus_variant_add_ui16 (EasyDbus_container * container,
00250 unsigned short ui16)
00251 {
00252 unsigned short *temp;
00253
00254 if (container == NULL)
00255 return -1;
00256
00257 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00258 return -1;
00259
00260 if (container->nel)
00261 return -1;
00262 temp = (unsigned short *) malloc (sizeof (short));
00263 if (temp == NULL)
00264 return -1;
00265 memset (temp, 0, sizeof (short));
00266 *temp = ui16;
00267 container->p_data = (void *) temp;
00268 container->nel = 1;
00269 container->elem_type = EASYDBUS_ELTYPE_UINT16;
00270 return 0;
00271 }
00272
00281 int
00282 easydbus_variant_add_ui64 (EasyDbus_container * container,
00283 unsigned long long ui64)
00284 {
00285 unsigned long long *temp;
00286
00287 if (container == NULL)
00288 return -1;
00289
00290 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00291 return -1;
00292
00293 if (container->nel)
00294 return -1;
00295 temp = (unsigned long long *) malloc (sizeof (long long));
00296 if (temp == NULL)
00297 return -1;
00298 memset (temp, 0, sizeof (long long));
00299 *temp = ui64;
00300 container->p_data = (void *) temp;
00301 container->nel = 1;
00302 container->elem_type = EASYDBUS_ELTYPE_UINT64;
00303 return 0;
00304 }
00305
00314 int
00315 easydbus_variant_add_i64 (EasyDbus_container * container,
00316 long long i64)
00317 {
00318 long long *temp;
00319
00320 if (container == NULL)
00321 return -1;
00322
00323 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00324 return -1;
00325
00326 if (container->nel)
00327 return -1;
00328 temp = (long long *) malloc (sizeof (long long));
00329 if (temp == NULL)
00330 return -1;
00331 memset (temp, 0, sizeof (long long));
00332 *temp = i64;
00333 container->p_data = (void *) temp;
00334 container->nel = 1;
00335 container->elem_type = EASYDBUS_ELTYPE_INT64;
00336 return 0;
00337 }
00338
00339
00347 int
00348 easydbus_variant_add_double (EasyDbus_container * container, double d)
00349 {
00350 double *temp;
00351
00352 if (container == NULL)
00353 return -1;
00354
00355 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00356 return -1;
00357
00358 if (container->nel)
00359 return -1;
00360 temp = (double *) malloc (sizeof (double));
00361 if (temp == NULL)
00362 return -1;
00363 memset (temp, 0, sizeof (double));
00364 *temp = d;
00365 container->p_data = (void *) temp;
00366 container->nel = 1;
00367 container->elem_type = EASYDBUS_ELTYPE_DOUBLE;
00368 return 0;
00369 }
00370
00378 int
00379 easydbus_variant_add_byte (EasyDbus_container * container,
00380 char byte)
00381 {
00382 if (container == NULL)
00383 return -1;
00384
00385 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00386 return -1;
00387
00388 if (container->nel)
00389 return -1;
00390 container->p_data = malloc (1);
00391 if (container->p_data == NULL)
00392 return -1;
00393 memset (container->p_data, 0, 1);
00394 memcpy (container->p_data, &byte, 1);
00395 container->nel = 1;
00396 container->elem_type = EASYDBUS_ELTYPE_BYTE;
00397 return 0;
00398 }
00399
00407 int
00408 easydbus_variant_add_boolean (EasyDbus_container * container,
00409 char boolean)
00410 {
00411 if (container == NULL)
00412 return -1;
00413
00414 if (container->container_type != EASYDBUS_ELTYPE_VARIANT)
00415 return -1;
00416
00417 if (container->nel)
00418 return -1;
00419 container->p_data = malloc (1);
00420 if (container->p_data == NULL)
00421 return -1;
00422 EASYDBUS_MEMCOPY (container->p_data, &boolean, 1);
00423 container->nel = 1;
00424 container->elem_type = EASYDBUS_ELTYPE_BOOLEAN;
00425 return 0;
00426 }
00427
00434 const char *
00435 easydbus_variant_get_string (EasyDbus_container * variant)
00436 {
00437 if (variant == NULL ||
00438 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00439 variant->elem_type != EASYDBUS_ELTYPE_STRING)
00440 return NULL;
00441 return (const char *) variant->p_data;
00442 }
00443
00450 const char *
00451 easydbus_variant_get_obj_path (EasyDbus_container * variant)
00452 {
00453 if (variant == NULL ||
00454 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00455 variant->elem_type != EASYDBUS_ELTYPE_OBJECT_PATH)
00456 return NULL;
00457 return (const char *) variant->p_data;
00458 }
00459
00466 const char *
00467 easydbus_variant_get_signature (EasyDbus_container * variant)
00468 {
00469 if (variant == NULL ||
00470 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00471 variant->elem_type != EASYDBUS_ELTYPE_SIGNATURE)
00472 return NULL;
00473 return (const char *) variant->p_data;
00474 }
00475
00482 int
00483 easydbus_variant_get_i32 (EasyDbus_container * variant)
00484 {
00485 if (variant == NULL ||
00486 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00487 variant->elem_type != EASYDBUS_ELTYPE_INT32)
00488 return -1;
00489
00490 return (int) *((int *) variant->p_data);
00491 }
00492
00499 unsigned int
00500 easydbus_variant_get_ui32 (EasyDbus_container * variant)
00501 {
00502 if (variant == NULL ||
00503 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00504 variant->elem_type != EASYDBUS_ELTYPE_UINT32)
00505 return -1;
00506
00507 return (unsigned int) *((unsigned int *) variant->p_data);
00508 }
00509
00516 short
00517 easydbus_variant_get_i16 (EasyDbus_container * variant)
00518 {
00519 if (variant == NULL ||
00520 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00521 variant->elem_type != EASYDBUS_ELTYPE_INT16)
00522 return -1;
00523
00524 return (short) *((short *) variant->p_data);
00525 }
00526
00533 unsigned short
00534 easydbus_variant_get_ui16 (EasyDbus_container * variant)
00535 {
00536 if (variant == NULL ||
00537 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00538 variant->elem_type != EASYDBUS_ELTYPE_UINT16)
00539 return -1;
00540
00541 return (unsigned short) *((unsigned short *) variant->p_data);
00542 }
00543
00550 unsigned long long
00551 easydbus_variant_get_ui64 (EasyDbus_container * variant)
00552 {
00553 if (variant == NULL ||
00554 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00555 variant->elem_type != EASYDBUS_ELTYPE_UINT64)
00556 return -1;
00557
00558 return (unsigned long long)
00559 *((unsigned long long *) variant->p_data);
00560 }
00561
00568 long long
00569 easydbus_variant_get_i64 (EasyDbus_container * variant)
00570 {
00571 if (variant == NULL ||
00572 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00573 variant->elem_type != EASYDBUS_ELTYPE_INT64)
00574 return -1;
00575
00576 return (long long)
00577 *((long long *) variant->p_data);
00578 }
00579
00586 double
00587 easydbus_variant_get_double (EasyDbus_container * variant)
00588 {
00589 if (variant == NULL ||
00590 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00591 variant->elem_type != EASYDBUS_ELTYPE_DOUBLE)
00592 return -1;
00593
00594 return (double) *((double *) variant->p_data);
00595 }
00596
00603 char
00604 easydbus_variant_get_boolean (EasyDbus_container * variant)
00605 {
00606 if (variant == NULL ||
00607 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00608 variant->elem_type != EASYDBUS_ELTYPE_BOOLEAN)
00609 return -1;
00610
00611 return (char) *((char *) variant->p_data);
00612 }
00613
00620 char
00621 easydbus_variant_get_byte (EasyDbus_container * variant)
00622 {
00623 if (variant == NULL ||
00624 variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00625 variant->elem_type != EASYDBUS_ELTYPE_BYTE)
00626 return -1;
00627
00628 return (char) *((char *) variant->p_data);
00629 }
00630