version 1.9, 2000/11/08 08:02:49 |
version 1.10, 2000/11/13 01:48:12 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/array.c,v 1.8 2000/09/21 09:19:25 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/array.c,v 1.9 2000/11/08 08:02:49 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "base.h" |
#include "base.h" |
|
|
int len,i,r; |
int len,i,r; |
BYTEARRAY array; |
BYTEARRAY array; |
unsigned char *vb; |
unsigned char *vb; |
|
char *str; |
LIST list; |
LIST list; |
NODE tn; |
NODE tn; |
|
|
|
|
error("newbytearray : invalid size"); |
error("newbytearray : invalid size"); |
MKBYTEARRAY(array,len); |
MKBYTEARRAY(array,len); |
if ( argc(arg) == 2 ) { |
if ( argc(arg) == 2 ) { |
list = (LIST)ARG1(arg); |
if ( !ARG1(arg) ) |
asir_assert(list,O_LIST,"newbytearray"); |
error("newbytearray : invalid initialization"); |
for ( r = 0, tn = BDY(list); tn; r++, tn = NEXT(tn) ); |
switch ( OID((Obj)ARG1(arg)) ) { |
if ( r > len ) { |
case O_LIST: |
*rp = array; |
list = (LIST)ARG1(arg); |
return; |
asir_assert(list,O_LIST,"newbytearray"); |
|
for ( r = 0, tn = BDY(list); tn; r++, tn = NEXT(tn) ); |
|
if ( r <= len ) { |
|
for ( i = 0, tn = BDY(list), vb = BDY(array); tn; |
|
i++, tn = NEXT(tn) ) |
|
vb[i] = (unsigned char)QTOS((Q)BDY(tn)); |
|
} |
|
break; |
|
case O_STR: |
|
str = BDY((STRING)ARG1(arg)); |
|
r = strlen(str); |
|
if ( r <= len ) |
|
bcopy(str,BDY(array),r); |
|
break; |
|
default: |
|
if ( !ARG1(arg) ) |
|
error("newbytearray : invalid initialization"); |
} |
} |
for ( i = 0, tn = BDY(list), vb = BDY(array); tn; i++, tn = NEXT(tn) ) |
|
vb[i] = (unsigned char)QTOS((Q)BDY(tn)); |
|
} |
} |
*rp = array; |
*rp = array; |
} |
} |