Browse Source

Fixed new array from struct data.

woollybah 8 years ago
parent
commit
7748df8879
2 changed files with 16 additions and 1 deletions
  1. 15 1
      blitz.mod/blitz_array.c
  2. 1 0
      blitz.mod/blitz_array.h

+ 15 - 1
blitz.mod/blitz_array.c

@@ -102,7 +102,7 @@ static BBArray *allocateArray( const char *type,int dims,int *lens, unsigned sho
 	case 'k':size=sizeof(BBFLOAT128);break;
 	case 'm':size=sizeof(BBDOUBLE128);break;
 	#endif
-	case '#':size=data_size;flags=0;break; // extern structs
+	case '@':size=data_size;flags=0;break; // structs
 	}
 	size*=length;
 
@@ -307,6 +307,20 @@ BBArray *bbArrayFromData( const char *type,int length,void *data ){
 	return arr;
 }
 
+BBArray *bbArrayFromDataStruct( const char *type,int length,void *data, unsigned short data_size ){
+
+	int k;
+	BBArray *arr;
+
+	if( length<=0 ) return &bbEmptyArray;
+	
+	arr=allocateArray( type,1,&length, data_size );
+
+	memcpy( BBARRAYDATA( arr,1 ),data,arr->size );
+
+	return arr;
+}
+
 BBArray *bbArrayDimensions( BBArray *arr ){
 	int *p,i,n;
 	BBArray *dims;

+ 1 - 0
blitz.mod/blitz_array.h

@@ -48,6 +48,7 @@ void*	bbArrayIndex( BBArray *, int, int );
 
 BBArray*	bbArrayNew1DStruct( const char *type,int length, unsigned short data_size );
 BBArray*	bbArrayNewStruct( const char *type,int dims, unsigned short data_size,... );
+BBArray*	bbArrayFromDataStruct( const char *type,int length,void *data, unsigned short data_size );
 
 #ifdef __cplusplus
 }