88 #include "allheaders.h" 91 #define TEMPLATE1 "stringtemplate1.txt" 92 #define TEMPLATE2 "stringtemplate2.txt" 108 {0,
"INVALID",
"invalid",
"invalid",
"invalid" },
109 {1,
"BOXA",
"Boxa",
"boxaRead",
"boxaReadMem" },
110 {2,
"BOXAA",
"Boxaa",
"boxaaRead",
"boxaaReadMem" },
111 {3,
"L_DEWARP",
"Dewarp",
"dewarpRead",
"dewarpReadMem" },
112 {4,
"L_DEWARPA",
"Dewarpa",
"dewarpaRead",
"dewarpaReadMem" },
113 {5,
"L_DNA",
"L_Dna",
"l_dnaRead",
"l_dnaReadMem" },
114 {6,
"L_DNAA",
"L_Dnaa",
"l_dnaaRead",
"l_dnaaReadMem" },
115 {7,
"DPIX",
"DPix",
"dpixRead",
"dpixReadMem" },
116 {8,
"FPIX",
"FPix",
"fpixRead",
"fpixReadMem" },
117 {9,
"NUMA",
"Numa",
"numaRead",
"numaReadMem" },
118 {10,
"NUMAA",
"Numaa",
"numaaRead",
"numaaReadMem" },
119 {11,
"PIX",
"Pix",
"pixRead",
"pixReadMem" },
120 {12,
"PIXA",
"Pixa",
"pixaRead",
"pixaReadMem" },
121 {13,
"PIXAA",
"Pixaa",
"pixaaRead",
"pixaaReadMem" },
122 {14,
"PIXACOMP",
"Pixacomp",
"pixacompRead",
"pixacompReadMem" },
123 {15,
"PIXCMAP",
"Pixcmap",
"pixcmapRead",
"pixcmapReadMem" },
124 {16,
"PTA",
"Pta",
"ptaRead",
"ptaReadMem" },
125 {17,
"PTAA",
"Ptaa",
"ptaaRead",
"ptaaReadMem" },
126 {18,
"RECOG",
"Recog",
"recogRead",
"recogReadMem" },
127 {19,
"SARRAY",
"Sarray",
"sarrayRead",
"sarrayReadMem" }
135 static char *
l_genDescrString(
const char *filein, l_int32 ifunc, l_int32 itype);
160 PROCNAME(
"strcodeCreate");
165 return (
L_STRCODE *)ERROR_PTR(
"strcode not made", procName, NULL);
186 PROCNAME(
"strcodeDestroy");
188 if (pstrcode == NULL) {
189 L_WARNING(
"ptr address is null!\n", procName);
193 if ((strcode = *pstrcode) == NULL)
235 PROCNAME(
"strcodeCreateFromFile");
238 return ERROR_INT(
"filein not defined", procName, 1);
241 return ERROR_INT(
"data not read from file", procName, 1);
245 return ERROR_INT(
"sa not made", procName, 1);
248 return ERROR_INT(
"no filenames in the file", procName, 1);
253 for (i = 0; i < n; i++) {
255 if (fname[0] ==
'#')
continue;
257 L_ERROR(
"File %s has no recognizable type\n", procName, fname);
260 L_INFO(
"File %s is type %s\n", procName, fname, type);
293 char *strdata, *strfunc, *strdescr;
296 PROCNAME(
"strcodeGenerate");
299 return ERROR_INT(
"strcode not defined", procName, 1);
301 return ERROR_INT(
"filein not defined", procName, 1);
303 return ERROR_INT(
"type not defined", procName, 1);
307 return ERROR_INT(
"data type unknown", procName, 1);
311 return ERROR_INT(
"strdata not made", procName, 1);
340 char *filestr, *casestr, *descr, *datastr, *realoutdir;
341 l_int32 actstart, end, newstart, fileno, nbytes;
346 PROCNAME(
"strcodeFinalize");
350 if (!pstrcode || *pstrcode == NULL)
351 return ERROR_INT(
"No input data", procName, 1);
354 L_INFO(
"no outdir specified; writing to /tmp/lept/auto\n", procName);
355 realoutdir =
stringNew(
"/tmp/lept/auto");
376 snprintf(buf,
sizeof(buf),
" * autogen.%d.c", fileno);
385 descr[strlen(descr) - 1] =
'\0';
391 snprintf(buf,
sizeof(buf),
"#include \"autogen.%d.h\"", fileno);
399 snprintf(buf,
sizeof(buf),
" * l_autodecode_%d()", fileno);
407 snprintf(buf,
sizeof(buf),
"l_autodecode_%d(l_int32 index)", fileno);
415 snprintf(buf,
sizeof(buf),
"l_int32 nfunc = %d;\n", strcode->
n);
419 snprintf(buf,
sizeof(buf),
" PROCNAME(\"l_autodecode_%d\");", fileno);
428 casestr[strlen(casestr) - 1] =
'\0';
437 nbytes = strlen(filestr);
438 snprintf(buf,
sizeof(buf),
"%s/autogen.%d.c", realoutdir, fileno);
459 snprintf(buf,
sizeof(buf),
" * autogen.%d.h", fileno);
467 snprintf(buf,
sizeof(buf),
"#ifndef LEPTONICA_AUTOGEN_%d_H\n" 468 "#define LEPTONICA_AUTOGEN_%d_H",
477 snprintf(buf,
sizeof(buf),
"void *l_autodecode_%d(l_int32 index);", fileno);
486 datastr[strlen(datastr) - 1] =
'\0';
490 snprintf(buf,
sizeof(buf),
"#endif /* LEPTONICA_AUTOGEN_%d_H */", fileno);
495 nbytes = strlen(filestr);
496 snprintf(buf,
sizeof(buf),
"%s/autogen.%d.h", realoutdir, fileno);
499 LEPT_FREE(realoutdir);
531 PROCNAME(
"l_getStructStrFromFile");
534 return ERROR_INT(
"&str not defined", procName, 1);
537 return ERROR_INT(
"filename not defined", procName, 1);
540 return ERROR_INT(
"invalid field", procName, 1);
543 return ERROR_INT(
"index not retrieved", procName, 1);
577 PROCNAME(
"l_getIndexFromType");
580 return ERROR_INT(
"&index not defined", procName, 1);
583 return ERROR_INT(
"type string not defined", procName, 1);
587 if (strcmp(type,
l_assoc[i].type) == 0) {
617 PROCNAME(
"l_getIndexFromStructname");
620 return ERROR_INT(
"&index not defined", procName, 1);
623 return ERROR_INT(
"sn string not defined", procName, 1);
627 if (strcmp(sn,
l_assoc[i].structname) == 0) {
651 l_int32 notfound, format;
654 PROCNAME(
"l_getIndexFromFile");
657 return ERROR_INT(
"&index not defined", procName, 1);
660 return ERROR_INT(
"filename not defined", procName, 1);
665 return ERROR_INT(
"stream not opened", procName, 1);
667 if ((fgets(buf,
sizeof(buf), fp)) == NULL) {
669 return ERROR_INT(
"fgets read fail", procName, 1);
671 }
while (buf[0] ==
'\n');
684 return ERROR_INT(
"no file type identified", procName, 1);
704 char *cdata1, *cdata2, *cdata3;
705 l_uint8 *data1, *data2;
706 l_int32 csize1, csize2;
710 PROCNAME(
"l_genDataString");
713 return (
char *)ERROR_PTR(
"filein not defined", procName, NULL);
718 return (
char *)ERROR_PTR(
"bindata not returned", procName, NULL);
720 cdata1 = encodeBase64(data2, size2, &csize1);
721 cdata2 = reformatPacked64(cdata1, csize1, 4, 72, 1, &csize2);
728 snprintf(buf,
sizeof(buf),
"static const char *l_strdata_%d =\n", ifunc);
757 snprintf(buf,
sizeof(buf),
" case %d:\n", ifunc);
759 snprintf(buf,
sizeof(buf),
760 " data1 = decodeBase64(l_strdata_%d, strlen(l_strdata_%d), " 761 "&size1);\n", ifunc, ifunc);
764 " data2 = zlibUncompress(data1, size1, &size2);\n");
765 snprintf(buf,
sizeof(buf),
766 " result = (void *)%s(data2, size2);\n",
792 PROCNAME(
"l_genDescrString");
795 return (
char *)ERROR_PTR(
"filein not defined", procName, NULL);
798 snprintf(buf,
sizeof(buf),
" * %-2d %-10s %-14s %s",
l_uint8 * zlibCompress(l_uint8 *datain, size_t nin, size_t *pnout)
zlibCompress()
l_int32 lept_mkdir(const char *subdir)
lept_mkdir()
char * sarrayToString(SARRAY *sa, l_int32 addnlflag)
sarrayToString()
l_ok strcodeCreateFromFile(const char *filein, l_int32 fileno, const char *outdir)
strcodeCreateFromFile()
static l_int32 l_getIndexFromFile(const char *file, l_int32 *pindex)
l_getIndexFromFile()
char * stringNew(const char *src)
stringNew()
static char * l_genDataString(const char *filein, l_int32 ifunc)
l_genDataString()
SARRAY * sarrayCreate(l_int32 n)
sarrayCreate()
l_int32 strcodeFinalize(L_STRCODE **pstrcode, const char *outdir)
strcodeFinalize()
static void strcodeDestroy(L_STRCODE **pstrcode)
strcodeDestroy()
l_ok sarrayAppendRange(SARRAY *sa1, SARRAY *sa2, l_int32 start, l_int32 end)
sarrayAppendRange()
l_int32 l_getStructStrFromFile(const char *filename, l_int32 field, char **pstr)
l_getStructStrFromFile()
static const struct L_GenAssoc l_assoc[]
l_ok l_binaryWrite(const char *filename, const char *operation, const void *data, size_t nbytes)
l_binaryWrite()
l_uint8 * l_binaryRead(const char *filename, size_t *pnbytes)
l_binaryRead()
static l_int32 l_getIndexFromType(const char *type, l_int32 *pindex)
l_getIndexFromType()
l_ok sarrayAddString(SARRAY *sa, const char *string, l_int32 copyflag)
sarrayAddString()
l_ok stringJoinIP(char **psrc1, const char *src2)
stringJoinIP()
l_ok strcodeGenerate(L_STRCODE *strcode, const char *filein, const char *type)
strcodeGenerate()
L_STRCODE * strcodeCreate(l_int32 fileno)
strcodeCreate()
l_ok findFileFormat(const char *filename, l_int32 *pformat)
findFileFormat()
char * sarrayGetString(SARRAY *sa, l_int32 index, l_int32 copyflag)
sarrayGetString()
static char * l_genCaseString(l_int32 ifunc, l_int32 itype)
l_genCaseString()
SARRAY * sarrayCreateLinesFromString(const char *string, l_int32 blankflag)
sarrayCreateLinesFromString()
l_ok splitPathAtDirectory(const char *pathname, char **pdir, char **ptail)
splitPathAtDirectory()
FILE * fopenReadStream(const char *filename)
fopenReadStream()
l_int32 sarrayGetCount(SARRAY *sa)
sarrayGetCount()
static char * l_genDescrString(const char *filein, l_int32 ifunc, l_int32 itype)
l_genDescrString()
static const l_int32 l_ntypes
l_int32 sarrayParseRange(SARRAY *sa, l_int32 start, l_int32 *pactualstart, l_int32 *pend, l_int32 *pnewstart, const char *substr, l_int32 loc)
sarrayParseRange()
static l_int32 l_getIndexFromStructname(const char *sn, l_int32 *pindex)
l_getIndexFromStructname()
SARRAY * sarrayCreateWordsFromString(const char *string)
sarrayCreateWordsFromString()
void sarrayDestroy(SARRAY **psa)
sarrayDestroy()