array.c

Go to the documentation of this file.
00001 /*
00002  EasyDbus Library: DBUS Binding Library
00003  Copyright (C) 2007  Daniele Rondina aka Ge@@ru, geaaru@gmail.com 
00004 
00005  This program is free software; you can redistribute it and/or
00006  modify it under the terms of the GNU General Public License
00007  as published by the Free Software Foundation; either version 2
00008  of the License, or (at your option) any later version.
00009 
00010  This program is distributed in the hope that it will be useful,
00011  but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  GNU General Public License for more details.
00014 
00015  You should have received a copy of the GNU General Public License
00016  along with this program; if not, write to the Free Software
00017  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
00018 
00019   Filename:  array.c
00020  
00021   Description:  
00022  
00023   Version:  0.1
00024   Created:  06/09/07 11:15:51 CEST
00025   Revision:  
00026      0 - created
00027  
00028   Author:   Daniele Rondina aka ge@@ru (geaaru@gmail.com) 
00029   License:  GPL 2.0
00030 */
00031 
00037 #include <stdlib.h>
00038 #include <string.h>
00039 // easydbus include
00040 #include "easydbus-core.h"
00041 #include "array_internal.h"
00042 #include "elem_internal.h"
00043 #include "utils.h"
00044 #include "debug.h"
00045 
00053 int
00054 easydbus_array_add_array (EasyDbus_container * array_src,
00055                           EasyDbus_container * array_dst)
00056 {
00057 
00058    struct EasyDbus_elem *el = NULL;
00059    struct EasyDbus_elem *elms = NULL;
00060 
00061    if (!array_src || !array_dst ||
00062        array_src->container_type != EASYDBUS_ELTYPE_ARRAY ||
00063        array_dst->container_type != EASYDBUS_ELTYPE_ARRAY)
00064       return -1;
00065 
00066    /* create dict_entry element */
00067    el = easydbus_elem_create (EASYDBUS_ELTYPE_ARRAY);
00068    if (!el)
00069       return -1;
00070 
00071    el->payload.p_container = array_src;
00072 
00073    if (array_dst->nel) {
00074       /* array already contains dict_entry */
00075       elms = (struct EasyDbus_elem *) array_dst->p_data;
00076       while (elms->next)
00077          elms = elms->next;
00078       elms->next = el;
00079    }
00080    else {
00081       /* array is empty */
00082       array_dst->elem_type = EASYDBUS_ELTYPE_ARRAY;
00083       array_dst->p_data = el;
00084    }
00085 
00086    array_dst->nel++;
00087    return 0;
00088 }
00089 
00101 int
00102 easydbus_array_add_dict_entry (EasyDbus_container * dict_entry,
00103                                EasyDbus_container * array)
00104 {
00105 
00106    struct EasyDbus_elem *el = NULL;
00107    struct EasyDbus_elem *elms = NULL;
00108 
00109    if (!array || !dict_entry ||
00110        dict_entry->container_type != EASYDBUS_ELTYPE_DICT_ENTRY ||
00111        array->container_type != EASYDBUS_ELTYPE_ARRAY)
00112       return -1;
00113 
00114    /* create dict_entry element */
00115    el = easydbus_elem_create (EASYDBUS_ELTYPE_DICT_ENTRY);
00116    if (!el)
00117       return -1;
00118 
00119    el->payload.p_container = dict_entry;
00120 
00121    if (array->nel) {
00122       /* array already contains dict_entry */
00123       elms = (struct EasyDbus_elem *) array->p_data;
00124       while (elms->next)
00125          elms = elms->next;
00126       elms->next = el;
00127    }
00128    else {
00129       /* array is empty */
00130       array->elem_type = EASYDBUS_ELTYPE_DICT_ENTRY;
00131       array->p_data = el;
00132    }
00133 
00134    array->nel++;
00135    return 0;
00136 }
00137 
00145 int
00146 easydbus_array_add_variant (EasyDbus_container * variant,
00147                             EasyDbus_container * array)
00148 {
00149 
00150    struct EasyDbus_elem *el = NULL;
00151    struct EasyDbus_elem *elms = NULL;
00152 
00153    if (!array || !variant ||
00154        variant->container_type != EASYDBUS_ELTYPE_VARIANT ||
00155        array->container_type != EASYDBUS_ELTYPE_ARRAY)
00156       return -1;
00157 
00158    /* create dict_entry element */
00159    el = easydbus_elem_create (EASYDBUS_ELTYPE_VARIANT);
00160    if (!el)
00161       return -1;
00162 
00163    el->payload.p_container = variant;
00164 
00165    if (array->nel) {
00166       /* array already contains dict_entry */
00167       elms = (struct EasyDbus_elem *) array->p_data;
00168       while (elms->next)
00169          elms = elms->next;
00170       elms->next = el;
00171    }
00172    else {
00173       /* array is empty */
00174       array->elem_type = EASYDBUS_ELTYPE_VARIANT;
00175       array->p_data = el;
00176    }
00177 
00178    array->nel++;
00179    return 0;
00180 }
00181 
00189 int
00190 easydbus_array_add_struct (EasyDbus_container * struct_internal,
00191                            EasyDbus_container * array)
00192 {
00193 
00194    struct EasyDbus_elem *el = NULL;
00195    struct EasyDbus_elem *elms = NULL;
00196 
00197    if (!array || !struct_internal ||
00198        struct_internal->container_type != EASYDBUS_ELTYPE_STRUCT ||
00199        array->container_type != EASYDBUS_ELTYPE_ARRAY)
00200       return -1;
00201 
00202    /* create dict_entry element */
00203    el = easydbus_elem_create (EASYDBUS_ELTYPE_STRUCT);
00204    if (!el)
00205       return -1;
00206 
00207    el->payload.p_container = struct_internal;
00208 
00209    if (array->nel) {
00210       /* array already contains dict_entry */
00211       elms = (struct EasyDbus_elem *) array->p_data;
00212       while (elms->next)
00213          elms = elms->next;
00214       elms->next = el;
00215    }
00216    else {
00217       /* array is empty */
00218       array->elem_type = EASYDBUS_ELTYPE_STRUCT;
00219       array->p_data = el;
00220    }
00221 
00222    array->nel++;
00223    return 0;
00224 }
00225 
00237 int
00238 easydbus_array_add_byte_array (EasyDbus_container * container,
00239                                unsigned int nel, char *bytes)
00240 {
00241    if (nel == 0 || !bytes || !container)
00242       return -1;
00243 
00244    if (container->container_type != EASYDBUS_ELTYPE_ARRAY)
00245       return -1;
00246 
00247    if (container->nel)
00248       return -1;
00249 
00250 
00251    container->p_data = malloc (nel);
00252    if (!container->p_data)
00253       return -1;
00254 
00255    EASYDBUS_MEMCOPY (container->p_data, bytes, nel);
00256 
00257    container->nel = nel;
00258    container->elem_type = EASYDBUS_ELTYPE_BYTE;
00259    return 0;
00260 }
00261 
00273 int
00274 easydbus_array_add_boolean_array (EasyDbus_container * container,
00275                                   unsigned int nel,
00276                                   char *boolean_array)
00277 {
00278    if (nel == 0 || !boolean_array || !container ||
00279        container->container_type != EASYDBUS_ELTYPE_ARRAY)
00280       return -1;
00281 
00282    if (container->nel)
00283       return -1;
00284 
00285    container->p_data = malloc (nel);
00286    if (!container->p_data)
00287       return -1;
00288 
00289    EASYDBUS_MEMCOPY (container->p_data, boolean_array, nel);
00290 
00291    container->nel = nel;
00292    container->elem_type = EASYDBUS_ELTYPE_BOOLEAN;
00293 
00294    return 0;
00295 }
00296 
00308 int
00309 easydbus_array_add_i16_array (EasyDbus_container * container,
00310                               unsigned int nel, short *i16_array)
00311 {
00312    size_t size_array = 0;
00313 
00314    if (nel == 0 || !i16_array || !container ||
00315        container->container_type != EASYDBUS_ELTYPE_ARRAY)
00316       return -1;
00317 
00318    if (container->nel)
00319       return -1;
00320 
00321    size_array = sizeof (short[nel]);
00322 
00323    container->p_data = malloc (size_array);
00324    if (!container->p_data)
00325       return -1;
00326 
00327    EASYDBUS_MEMCOPY (container->p_data, i16_array, size_array);
00328 
00329    container->nel = nel;
00330    container->elem_type = EASYDBUS_ELTYPE_INT16;
00331 
00332    return 0;
00333 }
00334 
00346 int
00347 easydbus_array_add_ui16_array (EasyDbus_container * container,
00348                                unsigned int nel,
00349                                unsigned short *ui16_array)
00350 {
00351    size_t size_array = 0;
00352 
00353    if (nel == 0 || !ui16_array || !container ||
00354        container->container_type != EASYDBUS_ELTYPE_ARRAY)
00355       return -1;
00356 
00357    if (container->nel)
00358       return -1;
00359 
00360    size_array = sizeof (short[nel]);
00361 
00362    container->p_data = malloc (size_array);
00363    if (!container->p_data)
00364       return -1;
00365 
00366    EASYDBUS_MEMCOPY (container->p_data, ui16_array, size_array);
00367 
00368    container->nel = nel;
00369    container->elem_type = EASYDBUS_ELTYPE_UINT16;
00370 
00371    return 0;
00372 }
00373 
00385 int
00386 easydbus_array_add_i32_array (EasyDbus_container * container,
00387                               unsigned int nel, int *i32_array)
00388 {
00389    size_t size_array = 0;
00390 
00391    if (nel == 0 || !i32_array || !container ||
00392        container->container_type != EASYDBUS_ELTYPE_ARRAY)
00393       return -1;
00394 
00395    if (container->nel)
00396       return -1;
00397 
00398    size_array = sizeof (int[nel]);
00399 
00400    container->p_data = malloc (size_array);
00401    if (!container->p_data)
00402       return -1;
00403 
00404    EASYDBUS_MEMCOPY (container->p_data, i32_array, size_array);
00405 
00406    container->nel = nel;
00407    container->elem_type = EASYDBUS_ELTYPE_INT32;
00408 
00409    return 0;
00410 }
00411 
00423 int
00424 easydbus_array_add_ui32_array (EasyDbus_container * container,
00425                                unsigned int nel,
00426                                unsigned int *ui32_array)
00427 {
00428    size_t size_array = 0;
00429 
00430    if (nel == 0 || !ui32_array || !container ||
00431        container->container_type != EASYDBUS_ELTYPE_ARRAY)
00432       return -1;
00433 
00434    if (container->nel)
00435       return -1;
00436 
00437    size_array = sizeof (int[nel]);
00438 
00439    container->p_data = malloc (size_array);
00440    if (!container->p_data)
00441       return -1;
00442 
00443    EASYDBUS_MEMCOPY (container->p_data, ui32_array, size_array);
00444 
00445    container->nel = nel;
00446    container->elem_type = EASYDBUS_ELTYPE_UINT32;
00447 
00448    return 0;
00449 }
00450 
00462 int
00463 easydbus_array_add_i64_array (EasyDbus_container * container,
00464                               unsigned int nel, long long *i64_array)
00465 {
00466    size_t size_array = 0;
00467 
00468    if (nel == 0 || !i64_array || !container ||
00469        container->container_type != EASYDBUS_ELTYPE_ARRAY)
00470       return -1;
00471 
00472    if (container->nel)
00473       return -1;
00474 
00475    size_array = sizeof (long long[nel]);
00476 
00477    container->p_data = malloc (size_array);
00478    if (!container->p_data)
00479       return -1;
00480 
00481    EASYDBUS_MEMCOPY (container->p_data, i64_array, size_array);
00482    container->nel = nel;
00483    container->elem_type = EASYDBUS_ELTYPE_INT64;
00484 
00485    return 0;
00486 }
00487 
00499 int
00500 easydbus_array_add_ui64_array (EasyDbus_container * container,
00501                                unsigned int nel,
00502                                unsigned long long *ui64_array)
00503 {
00504    size_t size_array = 0;
00505 
00506    if (nel == 0 || !ui64_array || !container ||
00507        container->container_type != EASYDBUS_ELTYPE_ARRAY)
00508       return -1;
00509 
00510    if (container->nel)
00511       return -1;
00512 
00513    size_array = sizeof (long long[nel]);
00514 
00515    container->p_data = malloc (size_array);
00516    if (!container->p_data)
00517       return -1;
00518 
00519    EASYDBUS_MEMCOPY (container->p_data, ui64_array, size_array);
00520    container->nel = nel;
00521    container->elem_type = EASYDBUS_ELTYPE_UINT64;
00522 
00523    return 0;
00524 }
00525 
00537 int
00538 easydbus_array_add_double_array (EasyDbus_container * container,
00539                                  unsigned int nel,
00540                                  double *double_array)
00541 {
00542    size_t size_array = 0;
00543 
00544    if (nel == 0 || !double_array || !container ||
00545        container->container_type != EASYDBUS_ELTYPE_ARRAY)
00546       return -1;
00547 
00548    if (container->nel)
00549       return -1;
00550 
00551    size_array = sizeof (double[nel]);
00552 
00553    container->p_data = malloc (size_array);
00554    if (!container->p_data)
00555       return -1;
00556 
00557    EASYDBUS_MEMCOPY (container->p_data, double_array, size_array);
00558    container->nel = nel;
00559    container->elem_type = EASYDBUS_ELTYPE_DOUBLE;
00560 
00561    return 0;
00562 }
00563 
00576 int
00577 easydbus_array_add_string_array (EasyDbus_container * container,
00578                                  unsigned int nel,
00579                                  char **string_array)
00580 {
00581    char **iterator, **iterator2 = NULL;
00582    int i = 0;
00583 
00584    if (nel == 0 || !string_array || !container ||
00585        container->container_type != EASYDBUS_ELTYPE_ARRAY)
00586       return -1;
00587 
00588    if (container->nel)
00589       return -1;
00590 
00591    container->p_data = malloc (sizeof (char *[nel]));
00592    if (!container->p_data)
00593       return -1;
00594 
00595    memset (container->p_data, 0, nel);
00596 
00597    iterator = string_array;
00598    iterator2 = (char **) container->p_data;
00599 
00600    for (i = 0; i < (int) nel; i++) {
00601       if (!iterator[i])
00602          goto error;
00603       iterator2[i] = (char *) malloc (strlen (iterator[i]) + 1);
00604       if (!iterator2[i])
00605          goto error;
00606 
00607       EASYDBUS_MEMCOPY (iterator2[i], iterator[i], 
00608                         strlen (iterator[i]) + 1);
00609       //memset (*iterator2, 0, strlen (*iterator)+1);
00610       //memcpy (iterator2[i], iterator[i], strlen (iterator[i]) + 1);
00611    }
00612 
00613    container->nel = nel;
00614    container->elem_type = EASYDBUS_ELTYPE_STRING;
00615 
00616    return 0;
00617 
00618  error:
00619    i--;
00620    for (; i > 0; i--) {
00621 
00622       if (iterator2[i])
00623          free (iterator2[i]);
00624    }
00625    free (container->p_data);
00626    return -1;
00627 }
00628 
00641 int
00642 easydbus_array_add_obj_path_array (EasyDbus_container * container,
00643                                    unsigned int nel,
00644                                    char **obj_path_array)
00645 {
00646    char **iterator, **iterator2 = NULL;
00647    int i = 0;
00648 
00649    if (nel == 0 || !obj_path_array || !container ||
00650        container->container_type != EASYDBUS_ELTYPE_ARRAY)
00651       return -1;
00652 
00653    if (container->nel)
00654       return -1;
00655 
00656    container->p_data = malloc (sizeof (char *[nel]));
00657    if (!container->p_data)
00658       return -1;
00659 
00660    memset (container->p_data, 0, nel);
00661 
00662    iterator = obj_path_array;
00663    iterator2 = (char **) container->p_data;
00664 
00665    for (i = 0; i < (int) nel; i++) {
00666       if (!iterator[i])
00667          goto error;
00668       iterator2[i] = (char *) malloc (strlen (iterator[i]) + 1);
00669       if (!iterator2[i])
00670          goto error;
00671       EASYDBUS_MEMCOPY (iterator2[i], iterator[i], 
00672                         strlen (iterator[i]) + 1);
00673       //memset (*iterator2, 0, strlen (*iterator)+1);
00674       //memcpy (iterator2[i], iterator[i], strlen (iterator[i]) + 1);
00675    }
00676 
00677    container->nel = nel;
00678    container->elem_type = EASYDBUS_ELTYPE_OBJECT_PATH;
00679 
00680    return 0;
00681 
00682  error:
00683    i--;
00684    for (; i > 0; i--) {
00685 
00686       if (iterator2[i])
00687          free (iterator2[i]);
00688    }
00689    free (container->p_data);
00690    return -1;
00691 }
00692 
00705 int
00706 easydbus_array_add_signature_array (EasyDbus_container * container,
00707                                     unsigned int nel,
00708                                     char **signature_array)
00709 {
00710    char **iterator, **iterator2 = NULL;
00711    int i = 0;
00712 
00713    if (nel == 0 || !signature_array || !container ||
00714        container->container_type != EASYDBUS_ELTYPE_ARRAY)
00715       return -1;
00716 
00717    if (container->nel)
00718       return -1;
00719 
00720    container->p_data = malloc (sizeof (char *[nel]));
00721    if (!container->p_data)
00722       return -1;
00723 
00724    memset (container->p_data, 0, nel);
00725 
00726    iterator = signature_array;
00727    iterator2 = (char **) container->p_data;
00728 
00729    for (i = 0; i < (int) nel; i++) {
00730       if (!iterator[i])
00731          goto error;
00732       iterator2[i] = (char *) malloc (strlen (iterator[i]) + 1);
00733       if (!iterator2[i])
00734          goto error;
00735       EASYDBUS_MEMCOPY (iterator2[i], iterator[i], 
00736                         strlen (iterator[i]) + 1);
00737       //memset (*iterator2, 0, strlen (*iterator)+1);
00738       //memcpy (iterator2[i], iterator[i], strlen (iterator[i]) + 1);
00739    }
00740 
00741    container->nel = nel;
00742    container->elem_type = EASYDBUS_ELTYPE_SIGNATURE;
00743 
00744    return 0;
00745 
00746  error:
00747    i--;
00748    for (; i > 0; i--) {
00749 
00750       if (iterator2[i])
00751          free (iterator2[i]);
00752    }
00753    free (container->p_data);
00754    return -1;
00755 }
00756 
00767 const EasyDbus_container *
00768 easydbus_array_get_array (EasyDbus_container * array, unsigned int n)
00769 {
00770    EasyDbus_elem *el = NULL;
00771    unsigned int i;
00772 
00773    if (!array || n == 0 || n > array->nel ||
00774        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
00775        array->elem_type != EASYDBUS_ELTYPE_ARRAY)
00776       return NULL;
00777 
00778    // move to correct element
00779    for (i = 1, el = (struct EasyDbus_elem *) array->p_data;
00780         i < n; i++, el = el->next);
00781 
00782    return (el ? (const EasyDbus_container *) el->payload.p_container :
00783            NULL);
00784 }
00785 
00796 const EasyDbus_container *
00797 easydbus_array_get_dict_entry (EasyDbus_container * array,
00798                                unsigned int n)
00799 {
00800    EasyDbus_elem *el = NULL;
00801    unsigned int i;
00802 
00803    if (!array || n == 0 || n > array->nel ||
00804        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
00805        array->elem_type != EASYDBUS_ELTYPE_DICT_ENTRY)
00806       return NULL;
00807 
00808    // move to correct element
00809    for (i = 1, el = (struct EasyDbus_elem *) array->p_data;
00810         i < n; i++, el = el->next);
00811 
00812    return (el ? (const EasyDbus_container *) el->payload.p_container :
00813            NULL);
00814 }
00815 
00816 
00827 const EasyDbus_container *
00828 easydbus_array_get_variant (EasyDbus_container * array,
00829                             unsigned int n)
00830 {
00831    EasyDbus_elem *el = NULL;
00832    unsigned int i;
00833 
00834    if (!array || n == 0 || n > array->nel ||
00835        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
00836        array->elem_type != EASYDBUS_ELTYPE_VARIANT)
00837       return NULL;
00838 
00839    // move to correct element
00840    for (i = 1, el = (struct EasyDbus_elem *) array->p_data;
00841         i < n; i++, el = el->next);
00842 
00843    return (el ? (const EasyDbus_container *) el->payload.p_container :
00844            NULL);
00845 }
00846 
00857 const EasyDbus_container *
00858 easydbus_array_get_struct (EasyDbus_container * array, unsigned int n)
00859 {
00860    EasyDbus_elem *el = NULL;
00861    unsigned int i;
00862 
00863    if (!array || n == 0 || n > array->nel ||
00864        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
00865        array->elem_type != EASYDBUS_ELTYPE_STRUCT)
00866       return NULL;
00867 
00868    // move to correct element
00869    for (i = 1, el = (struct EasyDbus_elem *) array->p_data;
00870         i < n; i++, el = el->next);
00871 
00872    return (el ?
00873            (const EasyDbus_container *) el->payload.p_container :
00874             NULL);
00875 }
00876 
00885 const char *
00886 easydbus_array_get_byte_array (EasyDbus_container * array)
00887 {
00888    if (!array ||
00889        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
00890        array->elem_type != EASYDBUS_ELTYPE_BYTE)
00891       return NULL;
00892 
00893    return (const char *) array->p_data;
00894 }
00895 
00904 const char *
00905 easydbus_array_get_boolean_array (EasyDbus_container * array)
00906 {
00907    if (!array ||
00908        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
00909        array->elem_type != EASYDBUS_ELTYPE_BOOLEAN)
00910       return NULL;
00911 
00912    return (const char *) array->p_data;
00913 }
00914 
00923 const short *
00924 easydbus_array_get_i16_array (EasyDbus_container * array)
00925 {
00926    if (!array ||
00927        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
00928        array->elem_type != EASYDBUS_ELTYPE_INT16)
00929       return NULL;
00930 
00931    return (const short *) array->p_data;
00932 }
00933 
00942 const unsigned short *
00943 easydbus_array_get_ui16_array (EasyDbus_container * array)
00944 {
00945    if (!array ||
00946        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
00947        array->elem_type != EASYDBUS_ELTYPE_UINT16)
00948       return NULL;
00949 
00950    return (const unsigned short *) array->p_data;
00951 }
00952 
00953 
00962 const int *
00963 easydbus_array_get_i32_array (EasyDbus_container * array)
00964 {
00965    if (!array ||
00966        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
00967        array->elem_type != EASYDBUS_ELTYPE_INT32)
00968       return NULL;
00969 
00970    return (const int *) array->p_data;
00971 }
00972 
00981 const unsigned int *
00982 easydbus_array_get_ui32_array (EasyDbus_container * array)
00983 {
00984    if (!array ||
00985        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
00986        array->elem_type != EASYDBUS_ELTYPE_UINT32)
00987       return NULL;
00988 
00989    return (const unsigned int *) array->p_data;
00990 }
00991 
01000 const long long *
01001 easydbus_array_get_i64_array (EasyDbus_container * array)
01002 {
01003    if (!array ||
01004        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
01005        array->elem_type != EASYDBUS_ELTYPE_INT64)
01006       return NULL;
01007 
01008    return (const long long *) array->p_data;
01009 }
01010 
01019 const unsigned long long *
01020 easydbus_array_get_ui64_array (EasyDbus_container * array)
01021 {
01022    if (!array ||
01023        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
01024        array->elem_type != EASYDBUS_ELTYPE_UINT64)
01025       return NULL;
01026 
01027    return (const unsigned long long *) array->p_data;
01028 }
01029 
01038 const double *
01039 easydbus_array_get_double_array (EasyDbus_container * array)
01040 {
01041    if (!array ||
01042        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
01043        array->elem_type != EASYDBUS_ELTYPE_DOUBLE)
01044       return NULL;
01045 
01046    return (const double *) array->p_data;
01047 }
01048 
01057 const char **
01058 easydbus_array_get_string_array (EasyDbus_container * array)
01059 {
01060    if (!array ||
01061        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
01062        array->elem_type != EASYDBUS_ELTYPE_STRING)
01063       return NULL;
01064 
01065    return (const char **) array->p_data;
01066 }
01067 
01076 const char **
01077 easydbus_array_get_obj_path_array (EasyDbus_container * array)
01078 {
01079    if (!array ||
01080        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
01081        array->elem_type != EASYDBUS_ELTYPE_OBJECT_PATH)
01082       return NULL;
01083 
01084    return (const char **) array->p_data;
01085 }
01086 
01095 const char **
01096 easydbus_array_get_signature_array (EasyDbus_container * array)
01097 {
01098    if (!array ||
01099        array->container_type != EASYDBUS_ELTYPE_ARRAY ||
01100        array->elem_type != EASYDBUS_ELTYPE_SIGNATURE)
01101       return NULL;
01102 
01103    return (const char **) array->p_data;
01104 }
01105 
01106 // vim: ts=3 shiftwidth=3 expandtab

Generated on Thu Apr 10 10:00:17 2008 for EasyDbus-0.2 by  doxygen 1.5.4