diff options
Diffstat (limited to 'mdk-stage1/slang/slarrmis.c')
-rw-r--r-- | mdk-stage1/slang/slarrmis.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/mdk-stage1/slang/slarrmis.c b/mdk-stage1/slang/slarrmis.c new file mode 100644 index 000000000..330dcb53f --- /dev/null +++ b/mdk-stage1/slang/slarrmis.c @@ -0,0 +1,38 @@ +/* Misc Array Functions */ +/* Copyright (c) 1997, 1999, 2001 John E. Davis + * This file is part of the S-Lang library. + * + * You may distribute under the terms of either the GNU General Public + * License or the Perl Artistic License. + */ + +#include "slinclud.h" + +#include "slang.h" +#include "_slang.h" + +int SLang_get_array_element (SLang_Array_Type *at, int *indices, VOID_STAR data) +{ + int is_ptr; + + if ((at == NULL) + || (indices == NULL) + || (data == NULL)) + return -1; + + is_ptr = (at->flags & SLARR_DATA_VALUE_IS_POINTER); + if (is_ptr) *(VOID_STAR *) data = NULL; + return _SLarray_aget_transfer_elem (at, indices, data, at->sizeof_type, is_ptr); +} + +int SLang_set_array_element (SLang_Array_Type *at, int *indices, VOID_STAR data) +{ + if ((at == NULL) + || (indices == NULL) + || (data == NULL)) + return -1; + + return _SLarray_aput_transfer_elem (at, indices, data, at->sizeof_type, + at->flags & SLARR_DATA_VALUE_IS_POINTER); +} + |