54 lines
783 B
C
54 lines
783 B
C
|
/*
|
||
|
* obitypes.c
|
||
|
*
|
||
|
* Created on: 23 mai 2015
|
||
|
* Author: coissac
|
||
|
*/
|
||
|
|
||
|
#include <obitypes.h>
|
||
|
|
||
|
size_t obi_sizeof(OBIType_t type) {
|
||
|
size_t size=0
|
||
|
|
||
|
switch (type) {
|
||
|
case OBI_VOID: size = 1;
|
||
|
break;
|
||
|
|
||
|
case OBI_INT: size = sizeof(obiint_t);
|
||
|
break;
|
||
|
|
||
|
case OBI_FLOAT: size = sizeof(obifloat_t);
|
||
|
break;
|
||
|
|
||
|
case OBI_CHAR: size = sizeof(obichar_t);
|
||
|
break;
|
||
|
|
||
|
case OBI_IDX: size = sizeof(obiidx_t);
|
||
|
break;
|
||
|
|
||
|
default: size = 0;
|
||
|
}
|
||
|
|
||
|
return size;
|
||
|
}
|
||
|
|
||
|
|
||
|
size_t obi_array_sizeof(OBIType_t type,size_t nbelement) {
|
||
|
size_t size;
|
||
|
size_t rsize;
|
||
|
size_t psize;
|
||
|
|
||
|
size = obi_sizeof(type) * nbelement;
|
||
|
|
||
|
psize= getpagesize();
|
||
|
rsize= size % psize;
|
||
|
|
||
|
// Round at a size multiple of pagesize
|
||
|
if (rsize)
|
||
|
size = (size / psize) * psize + psize;
|
||
|
|
||
|
|
||
|
return size;
|
||
|
}
|
||
|
|