72 #include <config_auto.h>
76 #include "allheaders.h"
104 l_int32 n, i, j, gap;
107 return (
SARRAY *)ERROR_PTR(
"sain not defined", __func__, NULL);
112 else if (sain != saout)
113 return (
SARRAY *)ERROR_PTR(
"invalid: not in-place", __func__, NULL);
114 array = saout->
array;
118 for (gap = n/2; gap > 0; gap = gap / 2) {
119 for (i = gap; i < n; i++) {
120 for (j = i - gap; j >= 0; j -= gap) {
127 array[j] = array[j + gap];
128 array[j + gap] = tmp;
154 return (
SARRAY *)ERROR_PTR(
"sain not defined", __func__, NULL);
156 return (
SARRAY *)ERROR_PTR(
"naindex not defined", __func__, NULL);
160 for (i = 0; i < n; i++) {
187 l_int32 i, len1, len2, len;
190 return ERROR_INT(
"str1 not defined", __func__, 1);
192 return ERROR_INT(
"str2 not defined", __func__, 1);
196 len = L_MIN(len1, len2);
198 for (i = 0; i < len; i++) {
199 if (str1[i] == str2[i])
201 if (str1[i] > str2[i])
233 return (
L_ASET *)ERROR_PTR(
"sa not defined", __func__, NULL);
235 set = l_asetCreate(L_UINT_TYPE);
237 for (i = 0; i < n; i++) {
241 l_asetInsert(set, key);
277 return ERROR_INT(
"&sad not defined", __func__, 1);
280 return ERROR_INT(
"sas not defined", __func__, 1);
282 set = l_asetCreate(L_UINT_TYPE);
286 for (i = 0; i < n; i++) {
290 if (!l_asetFind(set, key)) {
292 l_asetInsert(set, key);
327 return ERROR_INT(
"&sad not defined", __func__, 1);
330 return ERROR_INT(
"sa1 not defined", __func__, 1);
332 return ERROR_INT(
"sa2 not defined", __func__, 1);
338 return ERROR_INT(
"join failed for sa3", __func__, 1);
374 l_int32 n1, n2, i, n;
378 SARRAY *sa_small, *sa_big, *sad;
381 return ERROR_INT(
"&sad not defined", __func__, 1);
384 return ERROR_INT(
"sa1 not defined", __func__, 1);
386 return ERROR_INT(
"sa2 not defined", __func__, 1);
391 sa_small = (n1 < n2) ? sa1 : sa2;
392 sa_big = (n1 < n2) ? sa2 : sa1;
399 set2 = l_asetCreate(L_UINT_TYPE);
400 for (i = 0; i < n; i++) {
404 if (l_asetFind(set1, key) && !l_asetFind(set2, key)) {
406 l_asetInsert(set2, key);
410 l_asetDestroy(&set1);
411 l_asetDestroy(&set2);
435 return (
L_HASHMAP *)ERROR_PTR(
"sa not defined", __func__, NULL);
438 if ((hmap = l_hmapCreate(0.51 * n, 2)) == NULL)
439 return (
L_HASHMAP *)ERROR_PTR(
"hmap not made", __func__, NULL);
440 for (i = 0; i < n; i++) {
443 hitem = l_hmapLookup(hmap, key, i, L_HMAP_CREATE);
468 if (phmap) *phmap = NULL;
470 return ERROR_INT(
"&sad not defined", __func__, 1);
473 return ERROR_INT(
"sas not defined", __func__, 1);
477 return ERROR_INT(
"hmap not made", __func__, 1);
481 for (i = 0; i < tabsize; i++) {
493 l_hmapDestroy(&hmap);
514 return ERROR_INT(
"&sad not defined", __func__, 1);
517 return ERROR_INT(
"sa1 not defined", __func__, 1);
519 return ERROR_INT(
"sa2 not defined", __func__, 1);
524 return ERROR_INT(
"sa3 join failed", __func__, 1);
545 l_int32 i, n1, n2, n;
548 SARRAY *sa_small, *sa_big, *sa3, *sad;
553 return ERROR_INT(
"&sad not defined", __func__, 1);
556 return ERROR_INT(
"sa1 not defined", __func__, 1);
558 return ERROR_INT(
"sa2 not defined", __func__, 1);
563 sa_small = (n1 < n2) ? sa1 : sa2;
564 sa_big = (n1 < n2) ? sa2 : sa1;
566 return ERROR_INT(
"hmap not made", __func__, 1);
580 for (i = 0; i < n; i++) {
583 hitem = l_hmapLookup(hmap, key, i, L_HMAP_CHECK);
587 l_hmapDestroy(&hmap);
610 return (
SARRAY *)ERROR_PTR(
"sa not made", __func__, NULL);
611 for (i = 0; i < n; i++) {
612 snprintf(buf,
sizeof(buf),
"%d", i);
643 const char *keystring,
646 char *key, *val, *str;
651 return ERROR_INT(
"&valstring not defined", __func__, 1);
654 return ERROR_INT(
"sa not defined", __func__, 1);
656 return ERROR_INT(
"keystring not defined", __func__, 1);
659 for (i = 0; i < n; i++) {
662 sarraySplitString(sa1, str,
",");
669 if (!strcmp(key, keystring)) {
l_ok numaGetIValue(NUMA *na, l_int32 index, l_int32 *pival)
numaGetIValue()
SARRAY * sarrayCreate(l_int32 n)
sarrayCreate()
char * sarrayGetString(SARRAY *sa, l_int32 index, l_int32 copyflag)
sarrayGetString()
l_ok sarrayJoin(SARRAY *sa1, SARRAY *sa2)
sarrayJoin()
l_int32 sarrayGetCount(SARRAY *sa)
sarrayGetCount()
void sarrayDestroy(SARRAY **psa)
sarrayDestroy()
l_ok sarrayAddString(SARRAY *sa, const char *string, l_int32 copyflag)
sarrayAddString()
SARRAY * sarrayCopy(SARRAY *sa)
sarrayCopy()
SARRAY * sarraySortByIndex(SARRAY *sain, NUMA *naindex)
sarraySortByIndex()
SARRAY * sarrayGenerateIntegers(l_int32 n)
sarrayGenerateIntegers()
l_ok sarrayRemoveDupsByAset(SARRAY *sas, SARRAY **psad)
sarrayRemoveDupsByAset()
l_ok sarrayIntersectionByHmap(SARRAY *sa1, SARRAY *sa2, SARRAY **psad)
sarrayIntersectionByHmap()
SARRAY * sarraySort(SARRAY *saout, SARRAY *sain, l_int32 sortorder)
sarraySort()
l_ok sarrayUnionByAset(SARRAY *sa1, SARRAY *sa2, SARRAY **psad)
sarrayUnionByAset()
l_int32 stringCompareLexical(const char *str1, const char *str2)
stringCompareLexical()
l_ok sarrayLookupCSKV(SARRAY *sa, const char *keystring, char **pvalstring)
sarrayLookupCSKV()
l_ok sarrayUnionByHmap(SARRAY *sa1, SARRAY *sa2, SARRAY **psad)
sarrayUnionByHmap()
l_ok sarrayIntersectionByAset(SARRAY *sa1, SARRAY *sa2, SARRAY **psad)
sarrayIntersectionByAset()
L_ASET * l_asetCreateFromSarray(SARRAY *sa)
l_asetCreateFromSarray()
L_HASHMAP * l_hmapCreateFromSarray(SARRAY *sa)
l_hmapCreateFromSarray()
l_ok sarrayRemoveDupsByHmap(SARRAY *sas, SARRAY **psad, L_HASHMAP **phmap)
sarrayRemoveDupsByHmap()
struct L_Hashitem ** hashtab
l_ok l_hashStringToUint64Fast(const char *str, l_uint64 *phash)
l_hashStringToUint64Fast()
char * stringNew(const char *src)
stringNew()