68 #include <config_auto.h> 72 #include "allheaders.h" 75 static const l_uint32 MaxArraySize = 1000000000;
101 PROCNAME(
"l_byteaCreate");
103 if (nbytes <= 0 || nbytes > MaxArraySize)
106 ba->
data = (l_uint8 *)LEPT_CALLOC(nbytes + 1,
sizeof(l_uint8));
109 return (
L_BYTEA *)ERROR_PTR(
"ba array not made", procName, NULL);
130 PROCNAME(
"l_byteaInitFromMem");
133 return (
L_BYTEA *)ERROR_PTR(
"data not defined", procName, NULL);
135 return (
L_BYTEA *)ERROR_PTR(
"no bytes to initialize", procName, NULL);
136 if (size > MaxArraySize)
137 return (
L_BYTEA *)ERROR_PTR(
"size is too big", procName, NULL);
140 return (
L_BYTEA *)ERROR_PTR(
"ba not made", procName, NULL);
141 memcpy(ba->
data, data, size);
159 PROCNAME(
"l_byteaInitFromFile");
162 return (
L_BYTEA *)ERROR_PTR(
"fname not defined", procName, NULL);
165 return (
L_BYTEA *)ERROR_PTR(
"file stream not opened", procName, NULL);
169 return (
L_BYTEA *)ERROR_PTR(
"ba not made", procName, NULL);
187 PROCNAME(
"l_byteaInitFromStream");
190 return (
L_BYTEA *)ERROR_PTR(
"stream not defined", procName, NULL);
193 return (
L_BYTEA *)ERROR_PTR(
"data not read", procName, NULL);
196 return (
L_BYTEA *)ERROR_PTR(
"ba not made", procName, NULL);
198 memcpy(ba->
data, data, nbytes);
221 PROCNAME(
"l_byteaCopy");
224 return (
L_BYTEA *)ERROR_PTR(
"bas not defined", procName, NULL);
254 PROCNAME(
"l_byteaDestroy");
257 L_WARNING(
"ptr address is null!\n", procName);
261 if ((ba = *pba) == NULL)
286 PROCNAME(
"l_byteaGetSize");
289 return ERROR_INT(
"ba not defined", procName, 0);
310 PROCNAME(
"l_byteaGetData");
313 return (l_uint8 *)ERROR_PTR(
"ba not defined", procName, NULL);
315 return (l_uint8 *)ERROR_PTR(
"&size not defined", procName, NULL);
341 PROCNAME(
"l_byteaCopyData");
344 return (l_uint8 *)ERROR_PTR(
"&size not defined", procName, NULL);
347 return (l_uint8 *)ERROR_PTR(
"ba not defined", procName, NULL);
367 const l_uint8 *newdata,
370 size_t size, nalloc, reqsize;
372 PROCNAME(
"l_byteaAppendData");
375 return ERROR_INT(
"ba not defined", procName, 1);
377 return ERROR_INT(
"newdata not defined", procName, 1);
380 reqsize = size + newbytes + 1;
382 if (nalloc < reqsize) {
384 return ERROR_INT(
"extension failed", procName, 1);
387 memcpy(ba->
data + size, newdata, newbytes);
388 ba->
size += newbytes;
404 size_t size, len, nalloc, reqsize;
406 PROCNAME(
"l_byteaAppendString");
409 return ERROR_INT(
"ba not defined", procName, 1);
411 return ERROR_INT(
"str not defined", procName, 1);
415 reqsize = size + len + 1;
417 if (nalloc < reqsize) {
419 return ERROR_INT(
"extension failed", procName, 1);
422 memcpy(ba->
data + size, str, len);
445 PROCNAME(
"l_byteaExtendArrayToSize");
448 return ERROR_INT(
"ba not defined", procName, 1);
449 if (ba->
nalloc > MaxArraySize)
450 return ERROR_INT(
"ba has too many ptrs", procName, 1);
451 if (size > MaxArraySize)
452 return ERROR_INT(
"size > 1 GB; too large", procName, 1);
453 if (size <= ba->nalloc) {
454 L_INFO(
"size too small; no extension\n", procName);
460 return ERROR_INT(
"new array not returned", procName, 1);
490 PROCNAME(
"l_byteaJoin");
493 return ERROR_INT(
"ba1 not defined", procName, 1);
495 return ERROR_INT(
"&ba2 not defined", procName, 1);
496 if ((ba2 = *pba2) == NULL)
return 0;
520 size_t nbytes1, nbytes2;
522 PROCNAME(
"l_byteaSplit");
525 return ERROR_INT(
"&ba2 not defined", procName, 1);
528 return ERROR_INT(
"ba1 not defined", procName, 1);
531 if (splitloc >= nbytes1)
532 return ERROR_INT(
"splitloc invalid", procName, 1);
533 nbytes2 = nbytes1 - splitloc;
539 memset(data1 + splitloc, 0, nbytes2);
540 ba1->
size = splitloc;
559 const l_uint8 *sequence,
566 PROCNAME(
"l_byteaFindEachSequence");
569 return ERROR_INT(
"&da not defined", procName, 1);
572 return ERROR_INT(
"ba not defined", procName, 1);
574 return ERROR_INT(
"sequence not defined", procName, 1);
604 PROCNAME(
"l_byteaWrite");
607 return ERROR_INT(
"fname not defined", procName, 1);
609 return ERROR_INT(
"ba not defined", procName, 1);
612 return ERROR_INT(
"stream not opened", procName, 1);
636 size_t size, maxbytes;
638 PROCNAME(
"l_byteaWriteStream");
641 return ERROR_INT(
"stream not defined", procName, 1);
643 return ERROR_INT(
"ba not defined", procName, 1);
646 if (startloc >= size)
647 return ERROR_INT(
"invalid startloc", procName, 1);
648 maxbytes = size - startloc;
649 nbytes = (nbytes == 0) ? maxbytes : L_MIN(nbytes, maxbytes);
651 fwrite(data + startloc, 1, nbytes, fp);
l_ok l_byteaWriteStream(FILE *fp, L_BYTEA *ba, size_t startloc, size_t nbytes)
l_byteaWriteStream()
size_t l_byteaGetSize(L_BYTEA *ba)
l_byteaGetSize()
L_BYTEA * l_byteaCopy(L_BYTEA *bas, l_int32 copyflag)
l_byteaCopy()
l_ok l_byteaAppendString(L_BYTEA *ba, const char *str)
l_byteaAppendString()
L_DNA * arrayFindEachSequence(const l_uint8 *data, size_t datalen, const l_uint8 *sequence, size_t seqlen)
arrayFindEachSequence()
L_BYTEA * l_byteaCreate(size_t nbytes)
l_byteaCreate()
l_uint8 * l_byteaGetData(L_BYTEA *ba, size_t *psize)
l_byteaGetData()
L_BYTEA * l_byteaInitFromMem(const l_uint8 *data, size_t size)
l_byteaInitFromMem()
L_BYTEA * l_byteaInitFromStream(FILE *fp)
l_byteaInitFromStream()
l_ok l_byteaAppendData(L_BYTEA *ba, const l_uint8 *newdata, size_t newbytes)
l_byteaAppendData()
l_ok l_byteaSplit(L_BYTEA *ba1, size_t splitloc, L_BYTEA **pba2)
l_byteaSplit()
static const l_int32 InitialArraySize
void * reallocNew(void **pindata, size_t oldsize, size_t newsize)
reallocNew()
L_BYTEA * l_byteaInitFromFile(const char *fname)
l_byteaInitFromFile()
l_uint8 * l_binaryCopy(const l_uint8 *datas, size_t size)
l_binaryCopy()
FILE * fopenWriteStream(const char *filename, const char *modestring)
fopenWriteStream()
l_ok l_byteaFindEachSequence(L_BYTEA *ba, const l_uint8 *sequence, size_t seqlen, L_DNA **pda)
l_byteaFindEachSequence()
FILE * fopenReadStream(const char *filename)
fopenReadStream()
l_uint8 * l_binaryReadStream(FILE *fp, size_t *pnbytes)
l_binaryReadStream()
static l_int32 l_byteaExtendArrayToSize(L_BYTEA *ba, size_t size)
l_byteaExtendArrayToSize()
l_ok l_byteaWrite(const char *fname, L_BYTEA *ba, size_t startloc, size_t nbytes)
l_byteaWrite()
void l_byteaDestroy(L_BYTEA **pba)
l_byteaDestroy()
l_ok l_byteaJoin(L_BYTEA *ba1, L_BYTEA **pba2)
l_byteaJoin()
l_uint8 * l_byteaCopyData(L_BYTEA *ba, size_t *psize)
l_byteaCopyData()