blitz_array.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef BLITZ_ARRAY_H
  2. #define BLITZ_ARRAY_H
  3. #include "blitz_types.h"
  4. #ifdef __cplusplus
  5. extern "C"{
  6. #endif
  7. #define BBNULLARRAY (&bbEmptyArray)
  8. #define BBARRAYSIZE(q,n) (20+(n)*sizeof(int)+(q))
  9. #define BBARRAYDATA(p,n) ((void*)((char*)(p)+20+(n)*sizeof(int)))
  10. struct BBArray{
  11. //extends BBObject
  12. BBClass* clas;
  13. int refs;
  14. const char* type; //8
  15. int dims; //12
  16. int size; //16 : total size minus this header
  17. int scales[1]; //20 : [dims]
  18. //sizeof=20+dims*sizeof(int)
  19. };
  20. extern BBClass bbArrayClass;
  21. extern BBArray bbEmptyArray;
  22. BBArray* bbArrayNew( const char *type,int dims,... );
  23. BBArray* bbArrayNew1D( const char *type,int length );
  24. BBArray* bbArrayNewEx( const char *type,int dims,int *lens ); //alternate version of New...
  25. BBArray* bbArraySlice( const char *type,BBArray *arr,int beg,int end );
  26. BBArray* bbArrayFromData( const char *type,int length,void *data );
  27. BBArray* bbArrayCastFromObject( BBObject *o,const char *type_encoding );
  28. void bbArraySort( BBArray *arr,int ascending );
  29. BBArray* bbArrayDimensions( BBArray *arr );
  30. BBArray* bbArrayConcat( const char *type,BBArray *x,BBArray *y );
  31. #ifdef __cplusplus
  32. }
  33. #endif
  34. #endif