168 #include <config_auto.h> 173 #include "allheaders.h" 176 static const l_uint32 MaxFloatArraySize = 100000000;
177 static const l_uint32 MaxPtrArraySize = 1000000;
198 PROCNAME(
"numaCreate");
200 if (n <= 0 || n > MaxFloatArraySize)
203 na = (
NUMA *)LEPT_CALLOC(1,
sizeof(
NUMA));
204 if ((na->
array = (l_float32 *)LEPT_CALLOC(n,
sizeof(l_float32))) == NULL) {
206 return (
NUMA *)ERROR_PTR(
"number array not made", procName, NULL);
240 PROCNAME(
"numaCreateFromIArray");
243 return (
NUMA *)ERROR_PTR(
"iarray not defined", procName, NULL);
245 return (
NUMA *)ERROR_PTR(
"size must be > 0", procName, NULL);
248 for (i = 0; i < size; i++)
278 PROCNAME(
"numaCreateFromFArray");
281 return (
NUMA *)ERROR_PTR(
"farray not defined", procName, NULL);
283 return (
NUMA *)ERROR_PTR(
"size must be > 0", procName, NULL);
285 return (
NUMA *)ERROR_PTR(
"invalid copyflag", procName, NULL);
293 for (i = 0; i < size; i++)
318 l_int32 i, n, nerrors;
323 PROCNAME(
"numaCreateFromString");
325 if (!str || (strlen(str) == 0))
326 return (
NUMA *)ERROR_PTR(
"str not defined or empty", procName, NULL);
329 sarraySplitString(sa, str,
",");
333 for (i = 0; i < n; i++) {
335 if (sscanf(substr,
"%f", &val) != 1) {
336 L_ERROR(
"substr %d not float\n", procName, i);
346 return (
NUMA *)ERROR_PTR(
"non-floats in string", procName, NULL);
370 PROCNAME(
"numaDestroy");
373 L_WARNING(
"ptr address is NULL\n", procName);
377 if ((na = *pna) == NULL)
384 LEPT_FREE(na->
array);
404 PROCNAME(
"numaCopy");
407 return (
NUMA *)ERROR_PTR(
"na not defined", procName, NULL);
410 return (
NUMA *)ERROR_PTR(
"cna not made", procName, NULL);
414 for (i = 0; i < na->
n; i++)
430 PROCNAME(
"numaClone");
433 return (
NUMA *)ERROR_PTR(
"na not defined", procName, NULL);
456 PROCNAME(
"numaEmpty");
459 return ERROR_INT(
"na not defined", procName, 1);
483 PROCNAME(
"numaAddNumber");
486 return ERROR_INT(
"na not defined", procName, 1);
491 return ERROR_INT(
"extension failed", procName, 1);
513 size_t oldsize, newsize;
515 PROCNAME(
"numaExtendArray");
518 return ERROR_INT(
"na not defined", procName, 1);
519 if (na->
nalloc > MaxFloatArraySize)
520 return ERROR_INT(
"na has too many ptrs", procName, 1);
521 oldsize = na->
nalloc *
sizeof(l_float32);
522 newsize = 2 * oldsize;
523 if (newsize > 4 * MaxFloatArraySize)
524 return ERROR_INT(
"newsize > 400 MB; too large", procName, 1);
527 oldsize, newsize)) == NULL)
528 return ERROR_INT(
"new ptr array not returned", procName, 1);
559 PROCNAME(
"numaInsertNumber");
562 return ERROR_INT(
"na not defined", procName, 1);
564 if (index < 0 || index > n) {
565 L_ERROR(
"index %d not in [0,...,%d]\n", procName, index, n);
571 return ERROR_INT(
"extension failed", procName, 1);
573 for (i = n; i > index; i--)
575 na->
array[index] = val;
601 PROCNAME(
"numaRemoveNumber");
604 return ERROR_INT(
"na not defined", procName, 1);
606 if (index < 0 || index >= n) {
607 L_ERROR(
"index %d not in [0,...,%d]\n", procName, index, n - 1);
611 for (i = index + 1; i < n; i++)
633 PROCNAME(
"numaReplaceNumber");
636 return ERROR_INT(
"na not defined", procName, 1);
638 if (index < 0 || index >= n) {
639 L_ERROR(
"index %d not in [0,...,%d]\n", procName, index, n - 1);
643 na->
array[index] = val;
660 PROCNAME(
"numaGetCount");
663 return ERROR_INT(
"na not defined", procName, 0);
688 PROCNAME(
"numaSetCount");
691 return ERROR_INT(
"na not defined", procName, 1);
692 if (newcount > na->
nalloc) {
694 sizeof(l_float32) * na->
nalloc,
695 sizeof(l_float32) * newcount)) == NULL)
696 return ERROR_INT(
"new ptr array not returned", procName, 1);
723 PROCNAME(
"numaGetFValue");
726 return ERROR_INT(
"&val not defined", procName, 1);
729 return ERROR_INT(
"na not defined", procName, 1);
731 if (index < 0 || index >= na->
n)
732 return ERROR_INT(
"index not valid", procName, 1);
734 *pval = na->
array[index];
760 PROCNAME(
"numaGetIValue");
763 return ERROR_INT(
"&ival not defined", procName, 1);
766 return ERROR_INT(
"na not defined", procName, 1);
768 if (index < 0 || index >= na->
n)
769 return ERROR_INT(
"index not valid", procName, 1);
771 val = na->
array[index];
772 *pival = (l_int32)(val + L_SIGN(val) * 0.5);
790 PROCNAME(
"numaSetValue");
793 return ERROR_INT(
"na not defined", procName, 1);
794 if (index < 0 || index >= na->
n)
795 return ERROR_INT(
"index not valid", procName, 1);
797 na->
array[index] = val;
815 PROCNAME(
"numaShiftValue");
818 return ERROR_INT(
"na not defined", procName, 1);
819 if (index < 0 || index >= na->
n)
820 return ERROR_INT(
"index not valid", procName, 1);
822 na->
array[index] += diff;
852 PROCNAME(
"numaGetIArray");
855 return (l_int32 *)ERROR_PTR(
"na not defined", procName, NULL);
858 if ((array = (l_int32 *)LEPT_CALLOC(n,
sizeof(l_int32))) == NULL)
859 return (l_int32 *)ERROR_PTR(
"array not made", procName, NULL);
860 for (i = 0; i < n; i++) {
898 PROCNAME(
"numaGetFArray");
901 return (l_float32 *)ERROR_PTR(
"na not defined", procName, NULL);
907 if ((array = (l_float32 *)LEPT_CALLOC(n,
sizeof(l_float32))) == NULL)
908 return (l_float32 *)ERROR_PTR(
"array not made", procName, NULL);
909 for (i = 0; i < n; i++)
910 array[i] = na->
array[i];
926 PROCNAME(
"numaGetRefcount");
929 return ERROR_INT(
"na not defined", procName, UNDEF);
945 PROCNAME(
"numaChangeRefcount");
948 return ERROR_INT(
"na not defined", procName, 1);
967 PROCNAME(
"numaGetParameters");
969 if (!pdelx && !pstartx)
970 return ERROR_INT(
"no return val requested", procName, 1);
971 if (pstartx) *pstartx = 0.0;
972 if (pdelx) *pdelx = 1.0;
974 return ERROR_INT(
"na not defined", procName, 1);
976 if (pstartx) *pstartx = na->
startx;
977 if (pdelx) *pdelx = na->
delx;
997 PROCNAME(
"numaSetParameters");
1000 return ERROR_INT(
"na not defined", procName, 1);
1019 l_float32 start, binsize;
1021 PROCNAME(
"numaCopyParameters");
1024 return ERROR_INT(
"nas and nad not both defined", procName, 1);
1060 char fmt[32], strbuf[64];
1065 PROCNAME(
"numaConvertToSarray");
1068 return (
SARRAY *)ERROR_PTR(
"na not defined", procName, NULL);
1070 return (
SARRAY *)ERROR_PTR(
"invalid type", procName, NULL);
1074 snprintf(fmt,
sizeof(fmt),
"%%0%dd", size1);
1076 snprintf(fmt,
sizeof(fmt),
"%%%dd", size1);
1078 snprintf(fmt,
sizeof(fmt),
"%%%d.%df", size1, size2);
1083 return (
SARRAY *)ERROR_PTR(
"sa not made", procName, NULL);
1085 for (i = 0; i < n; i++) {
1088 snprintf(strbuf,
sizeof(strbuf), fmt, ival);
1091 snprintf(strbuf,
sizeof(strbuf), fmt, fval);
1115 PROCNAME(
"numaRead");
1118 return (
NUMA *)ERROR_PTR(
"filename not defined", procName, NULL);
1121 return (
NUMA *)ERROR_PTR(
"stream not opened", procName, NULL);
1125 return (
NUMA *)ERROR_PTR(
"na not read", procName, NULL);
1139 l_int32 i, n, index, ret, version;
1140 l_float32 val, startx, delx;
1143 PROCNAME(
"numaReadStream");
1146 return (
NUMA *)ERROR_PTR(
"stream not defined", procName, NULL);
1148 ret = fscanf(fp,
"\nNuma Version %d\n", &version);
1150 return (
NUMA *)ERROR_PTR(
"not a numa file", procName, NULL);
1152 return (
NUMA *)ERROR_PTR(
"invalid numa version", procName, NULL);
1153 if (fscanf(fp,
"Number of numbers = %d\n", &n) != 1)
1154 return (
NUMA *)ERROR_PTR(
"invalid number of numbers", procName, NULL);
1156 if (n > MaxFloatArraySize) {
1157 L_ERROR(
"n = %d > %d\n", procName, n, MaxFloatArraySize);
1161 return (
NUMA *)ERROR_PTR(
"na not made", procName, NULL);
1163 for (i = 0; i < n; i++) {
1164 if (fscanf(fp,
" [%d] = %f\n", &index, &val) != 2) {
1166 return (
NUMA *)ERROR_PTR(
"bad input data", procName, NULL);
1172 if (fscanf(fp,
"startx = %f, delx = %f\n", &startx, &delx) == 2)
1193 PROCNAME(
"numaReadMem");
1196 return (
NUMA *)ERROR_PTR(
"data not defined", procName, NULL);
1198 return (
NUMA *)ERROR_PTR(
"stream not opened", procName, NULL);
1202 if (!na) L_ERROR(
"numa not read\n", procName);
1227 PROCNAME(
"numaWriteDebug");
1232 L_INFO(
"write to named temp file %s is disabled\n", procName, filename);
1252 PROCNAME(
"numaWrite");
1255 return ERROR_INT(
"filename not defined", procName, 1);
1257 return ERROR_INT(
"na not defined", procName, 1);
1260 return ERROR_INT(
"stream not opened", procName, 1);
1264 return ERROR_INT(
"na not written to stream", procName, 1);
1281 l_float32 startx, delx;
1283 PROCNAME(
"numaWriteStream");
1286 return ERROR_INT(
"na not defined", procName, 1);
1292 fprintf(fp,
"Number of numbers = %d\n", n);
1293 for (i = 0; i < n; i++)
1294 fprintf(fp,
" [%d] = %f\n", i, na->
array[i]);
1299 if (startx != 0.0 || delx != 1.0)
1300 fprintf(fp,
"startx = %f, delx = %f\n", startx, delx);
1316 l_float32 startx, delx;
1318 PROCNAME(
"numaWriteStderr");
1321 return ERROR_INT(
"na not defined", procName, 1);
1326 for (i = 0; i < n; i++)
1332 if (startx != 0.0 || delx != 1.0)
1333 lept_stderr(
"startx = %f, delx = %f\n", startx, delx);
1360 PROCNAME(
"numaWriteMem");
1362 if (pdata) *pdata = NULL;
1363 if (psize) *psize = 0;
1365 return ERROR_INT(
"&data not defined", procName, 1);
1367 return ERROR_INT(
"&size not defined", procName, 1);
1369 return ERROR_INT(
"na not defined", procName, 1);
1372 if ((fp = open_memstream((
char **)pdata, psize)) == NULL)
1373 return ERROR_INT(
"stream not opened", procName, 1);
1377 *psize = *psize - 1;
1379 L_INFO(
"work-around: writing to a temp file\n", procName);
1382 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
1384 if ((fp = tmpfile()) == NULL)
1385 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
1411 PROCNAME(
"numaaCreate");
1413 if (n <= 0 || n > MaxPtrArraySize)
1416 naa = (
NUMAA *)LEPT_CALLOC(1,
sizeof(
NUMAA));
1417 if ((naa->
numa = (
NUMA **)LEPT_CALLOC(n,
sizeof(
NUMA *))) == NULL) {
1419 return (
NUMAA *)ERROR_PTR(
"numa ptr array not made", procName, NULL);
1453 for (i = 0; i < nptr; i++) {
1481 PROCNAME(
"numaaTruncate");
1484 return ERROR_INT(
"naa not defined", procName, 1);
1487 for (i = n - 1; i >= 0; i--) {
1515 PROCNAME(
"numaaDestroy");
1518 L_WARNING(
"ptr address is NULL!\n", procName);
1522 if ((naa = *pnaa) == NULL)
1525 for (i = 0; i < naa->
n; i++)
1527 LEPT_FREE(naa->
numa);
1553 PROCNAME(
"numaaAddNuma");
1556 return ERROR_INT(
"naa not defined", procName, 1);
1558 return ERROR_INT(
"na not defined", procName, 1);
1562 }
else if (copyflag ==
L_COPY) {
1564 return ERROR_INT(
"nac not made", procName, 1);
1565 }
else if (copyflag ==
L_CLONE) {
1568 return ERROR_INT(
"invalid copyflag", procName, 1);
1576 return ERROR_INT(
"extension failed", procName, 1);
1599 size_t oldsize, newsize;
1601 PROCNAME(
"numaaExtendArray");
1604 return ERROR_INT(
"naa not defined", procName, 1);
1605 if (naa->
nalloc > MaxPtrArraySize)
1606 return ERROR_INT(
"naa has too many ptrs", procName, 1);
1608 newsize = 2 * oldsize;
1609 if (newsize > 8 * MaxPtrArraySize)
1610 return ERROR_INT(
"newsize > 8 MB; too large", procName, 1);
1613 oldsize, newsize)) == NULL)
1614 return ERROR_INT(
"new ptr array not returned", procName, 1);
1633 PROCNAME(
"numaaGetCount");
1636 return ERROR_INT(
"naa not defined", procName, 0);
1652 PROCNAME(
"numaaGetNumaCount");
1655 return ERROR_INT(
"naa not defined", procName, 0);
1656 if (index < 0 || index >= naa->
n)
1657 return ERROR_INT(
"invalid index into naa", procName, 0);
1675 PROCNAME(
"numaaGetNumberCount");
1678 return ERROR_INT(
"naa not defined", procName, 0);
1681 for (sum = 0, i = 0; i < n; i++) {
1721 PROCNAME(
"numaaGetPtrArray");
1724 return (
NUMA **)ERROR_PTR(
"naa not defined", procName, NULL);
1744 PROCNAME(
"numaaGetNuma");
1747 return (
NUMA *)ERROR_PTR(
"naa not defined", procName, NULL);
1748 if (index < 0 || index >= naa->
n)
1749 return (
NUMA *)ERROR_PTR(
"index not valid", procName, NULL);
1751 if (accessflag ==
L_COPY)
1753 else if (accessflag ==
L_CLONE)
1756 return (
NUMA *)ERROR_PTR(
"invalid accessflag", procName, NULL);
1782 PROCNAME(
"numaaReplaceNuma");
1785 return ERROR_INT(
"naa not defined", procName, 1);
1787 return ERROR_INT(
"na not defined", procName, 1);
1789 if (index < 0 || index >= n)
1790 return ERROR_INT(
"index not valid", procName, 1);
1793 naa->
numa[index] = na;
1818 PROCNAME(
"numaaGetValue");
1820 if (!pfval && !pival)
1821 return ERROR_INT(
"no return val requested", procName, 1);
1822 if (pfval) *pfval = 0.0;
1823 if (pival) *pival = 0;
1825 return ERROR_INT(
"naa not defined", procName, 1);
1827 if (i < 0 || i >= n)
1828 return ERROR_INT(
"invalid index into naa", procName, 1);
1830 if (j < 0 || j >= na->
n)
1831 return ERROR_INT(
"invalid index into na", procName, 1);
1832 if (pfval) *pfval = na->
array[j];
1833 if (pival) *pival = (l_int32)(na->
array[j]);
1859 PROCNAME(
"numaaAddNumber");
1862 return ERROR_INT(
"naa not defined", procName, 1);
1864 if (index < 0 || index >= n)
1865 return ERROR_INT(
"invalid index in naa", procName, 1);
1889 PROCNAME(
"numaaRead");
1892 return (
NUMAA *)ERROR_PTR(
"filename not defined", procName, NULL);
1895 return (
NUMAA *)ERROR_PTR(
"stream not opened", procName, NULL);
1899 return (
NUMAA *)ERROR_PTR(
"naa not read", procName, NULL);
1913 l_int32 i, n, index, ret, version;
1917 PROCNAME(
"numaaReadStream");
1920 return (
NUMAA *)ERROR_PTR(
"stream not defined", procName, NULL);
1922 ret = fscanf(fp,
"\nNumaa Version %d\n", &version);
1924 return (
NUMAA *)ERROR_PTR(
"not a numa file", procName, NULL);
1926 return (
NUMAA *)ERROR_PTR(
"invalid numaa version", procName, NULL);
1927 if (fscanf(fp,
"Number of numa = %d\n\n", &n) != 1)
1928 return (
NUMAA *)ERROR_PTR(
"invalid number of numa", procName, NULL);
1930 if (n > MaxPtrArraySize) {
1931 L_ERROR(
"n = %d > %d\n", procName, n, MaxPtrArraySize);
1935 return (
NUMAA *)ERROR_PTR(
"naa not made", procName, NULL);
1937 for (i = 0; i < n; i++) {
1938 if (fscanf(fp,
"Numa[%d]:", &index) != 1) {
1940 return (
NUMAA *)ERROR_PTR(
"invalid numa header", procName, NULL);
1944 return (
NUMAA *)ERROR_PTR(
"na not made", procName, NULL);
1967 PROCNAME(
"numaaReadMem");
1970 return (
NUMAA *)ERROR_PTR(
"data not defined", procName, NULL);
1972 return (
NUMAA *)ERROR_PTR(
"stream not opened", procName, NULL);
1976 if (!naa) L_ERROR(
"naa not read\n", procName);
1995 PROCNAME(
"numaaWrite");
1998 return ERROR_INT(
"filename not defined", procName, 1);
2000 return ERROR_INT(
"naa not defined", procName, 1);
2003 return ERROR_INT(
"stream not opened", procName, 1);
2007 return ERROR_INT(
"naa not written to stream", procName, 1);
2026 PROCNAME(
"numaaWriteStream");
2029 return ERROR_INT(
"stream not defined", procName, 1);
2031 return ERROR_INT(
"naa not defined", procName, 1);
2035 fprintf(fp,
"Number of numa = %d\n\n", n);
2036 for (i = 0; i < n; i++) {
2038 return ERROR_INT(
"na not found", procName, 1);
2039 fprintf(fp,
"Numa[%d]:", i);
2069 PROCNAME(
"numaaWriteMem");
2071 if (pdata) *pdata = NULL;
2072 if (psize) *psize = 0;
2074 return ERROR_INT(
"&data not defined", procName, 1);
2076 return ERROR_INT(
"&size not defined", procName, 1);
2078 return ERROR_INT(
"naa not defined", procName, 1);
2081 if ((fp = open_memstream((
char **)pdata, psize)) == NULL)
2082 return ERROR_INT(
"stream not opened", procName, 1);
2086 *psize = *psize - 1;
2088 L_INFO(
"work-around: writing to a temp file\n", procName);
2091 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
2093 if ((fp = tmpfile()) == NULL)
2094 return ERROR_INT(
"tmpfile stream not opened", procName, 1);
NUMAA * numaaReadMem(const l_uint8 *data, size_t size)
numaaReadMem()
NUMAA * numaaRead(const char *filename)
numaaRead()
l_ok numaGetFValue(NUMA *na, l_int32 index, l_float32 *pval)
numaGetFValue()
NUMAA * numaaReadStream(FILE *fp)
numaaReadStream()
NUMA * numaReadMem(const l_uint8 *data, size_t size)
numaReadMem()
NUMA ** numaaGetPtrArray(NUMAA *naa)
numaaGetPtrArray()
static const l_int32 InitialArraySize
NUMA * numaRead(const char *filename)
numaRead()
l_ok numaInsertNumber(NUMA *na, l_int32 index, l_float32 val)
numaInsertNumber()
l_ok numaWriteDebug(const char *filename, NUMA *na)
numaWriteDebug()
l_ok numaAddNumber(NUMA *na, l_float32 val)
numaAddNumber()
l_int32 numaaGetNumberCount(NUMAA *naa)
numaaGetNumberCount()
l_ok numaWriteMem(l_uint8 **pdata, size_t *psize, NUMA *na)
numaWriteMem()
l_ok numaCopyParameters(NUMA *nad, NUMA *nas)
numaCopyParameters()
void lept_stderr(const char *fmt,...)
lept_stderr()
SARRAY * sarrayCreate(l_int32 n)
sarrayCreate()
FILE * fopenReadFromMemory(const l_uint8 *data, size_t size)
fopenReadFromMemory()
l_ok numaWriteStream(FILE *fp, NUMA *na)
numaWriteStream()
NUMA * numaCreate(l_int32 n)
numaCreate()
l_ok numaSetCount(NUMA *na, l_int32 newcount)
numaSetCount()
NUMAA * numaaCreate(l_int32 n)
numaaCreate()
l_ok numaSetValue(NUMA *na, l_int32 index, l_float32 val)
numaSetValue()
void numaaDestroy(NUMAA **pnaa)
numaaDestroy()
l_ok numaaWriteStream(FILE *fp, NUMAA *naa)
numaaWriteStream()
l_int32 numaGetRefcount(NUMA *na)
numaGetRefCount()
l_int32 * numaGetIArray(NUMA *na)
numaGetIArray()
NUMA * numaaGetNuma(NUMAA *naa, l_int32 index, l_int32 accessflag)
numaaGetNuma()
l_ok numaGetIValue(NUMA *na, l_int32 index, l_int32 *pival)
numaGetIValue()
l_int32 numaGetCount(NUMA *na)
numaGetCount()
l_ok sarrayAddString(SARRAY *sa, const char *string, l_int32 copyflag)
sarrayAddString()
l_ok numaWrite(const char *filename, NUMA *na)
numaWrite()
l_ok numaRemoveNumber(NUMA *na, l_int32 index)
numaRemoveNumber()
char * sarrayGetString(SARRAY *sa, l_int32 index, l_int32 copyflag)
sarrayGetString()
l_ok numaSetParameters(NUMA *na, l_float32 startx, l_float32 delx)
numaSetParameters()
void * reallocNew(void **pindata, size_t oldsize, size_t newsize)
reallocNew()
l_ok numaGetParameters(NUMA *na, l_float32 *pstartx, l_float32 *pdelx)
numaGetParameters()
l_ok numaEmpty(NUMA *na)
numaEmpty()
NUMA * numaCreateFromIArray(l_int32 *iarray, l_int32 size)
numaCreateFromIArray()
l_ok numaaTruncate(NUMAA *naa)
numaaTruncate()
l_ok numaChangeRefcount(NUMA *na, l_int32 delta)
numaChangeRefCount()
l_ok numaaReplaceNuma(NUMAA *naa, l_int32 index, NUMA *na)
numaaReplaceNuma()
l_ok numaShiftValue(NUMA *na, l_int32 index, l_float32 diff)
numaShiftValue()
l_ok numaaAddNumber(NUMAA *naa, l_int32 index, l_float32 val)
numaaAddNumber()
NUMA * numaCopy(NUMA *na)
numaCopy()
NUMA * numaCreateFromString(const char *str)
numaCreateFromString()
void numaDestroy(NUMA **pna)
numaDestroy()
#define NUMA_VERSION_NUMBER
FILE * fopenWriteStream(const char *filename, const char *modestring)
fopenWriteStream()
FILE * fopenWriteWinTempfile(void)
fopenWriteWinTempfile()
l_ok numaaGetValue(NUMAA *naa, l_int32 i, l_int32 j, l_float32 *pfval, l_int32 *pival)
numaaGetValue()
FILE * fopenReadStream(const char *filename)
fopenReadStream()
l_uint8 * l_binaryReadStream(FILE *fp, size_t *pnbytes)
l_binaryReadStream()
l_int32 sarrayGetCount(SARRAY *sa)
sarrayGetCount()
l_ok numaaWrite(const char *filename, NUMAA *naa)
numaaWrite()
l_float32 * numaGetFArray(NUMA *na, l_int32 copyflag)
numaGetFArray()
l_int32 numaaGetCount(NUMAA *naa)
numaaGetCount()
l_int32 numaaGetNumaCount(NUMAA *naa, l_int32 index)
numaaGetNumaCount()
static l_int32 numaExtendArray(NUMA *na)
numaExtendArray()
static l_int32 numaaExtendArray(NUMAA *naa)
numaaExtendArray()
l_ok numaReplaceNumber(NUMA *na, l_int32 index, l_float32 val)
numaReplaceNumber()
NUMA * numaClone(NUMA *na)
numaClone()
NUMAA * numaaCreateFull(l_int32 nptr, l_int32 n)
numaaCreateFull()
NUMA * numaCreateFromFArray(l_float32 *farray, l_int32 size, l_int32 copyflag)
numaCreateFromFArray()
SARRAY * numaConvertToSarray(NUMA *na, l_int32 size1, l_int32 size2, l_int32 addzeros, l_int32 type)
numaConvertToSarray()
l_ok numaWriteStderr(NUMA *na)
numaWriteStderr()
l_ok numaaAddNuma(NUMAA *naa, NUMA *na, l_int32 copyflag)
numaaAddNuma()
l_ok numaaWriteMem(l_uint8 **pdata, size_t *psize, NUMAA *naa)
numaaWriteMem()
NUMA * numaReadStream(FILE *fp)
numaReadStream()
void sarrayDestroy(SARRAY **psa)
sarrayDestroy()