/*! * recogaWriteStream() * * Input: stream (opened for "wb") * recoga * filename (output serialized filename; embedded in file) * Return: 0 if OK, 1 on error */ l_int32 recogaWriteStream(FILE *fp, L_RECOGA *recoga, const char *filename) { l_int32 i; L_RECOG *recog; PROCNAME("recogaWriteStream"); if (!fp) return ERROR_INT("stream not defined", procName, 1); if (!recoga) return ERROR_INT("recoga not defined", procName, 1); fprintf(fp, "\nRecog Version %d\n", RECOG_VERSION_NUMBER); fprintf(fp, "Number of recognizers = %d\n\n", recoga->n); for (i = 0; i < recoga->n; i++) { fprintf(fp, "==============================\n"); fprintf(fp, "Recognizer %d\n", i); recog = recogaGetRecog(recoga, i); recogWriteStream(fp, recog, filename); fprintf(fp, "\n"); } return 0; }
/*! * \brief recogWriteMem() * * \param[out] pdata data of serialized recog (not ascii) * \param[out] psize size of returned data * \param[in] recog * \return 0 if OK, 1 on error * * <pre> * Notes: * (1) Serializes a recog in memory and puts the result in a buffer. * </pre> */ l_int32 recogWriteMem(l_uint8 **pdata, size_t *psize, L_RECOG *recog) { l_int32 ret; FILE *fp; PROCNAME("recogWriteMem"); if (pdata) *pdata = NULL; if (psize) *psize = 0; if (!pdata) return ERROR_INT("&data not defined", procName, 1); if (!psize) return ERROR_INT("&size not defined", procName, 1); if (!recog) return ERROR_INT("recog not defined", procName, 1); #if HAVE_FMEMOPEN if ((fp = open_memstream((char **)pdata, psize)) == NULL) return ERROR_INT("stream not opened", procName, 1); ret = recogWriteStream(fp, recog); #else L_INFO("work-around: writing to a temp file\n", procName); #ifdef _WIN32 if ((fp = fopenWriteWinTempfile()) == NULL) return ERROR_INT("tmpfile stream not opened", procName, 1); #else if ((fp = tmpfile()) == NULL) return ERROR_INT("tmpfile stream not opened", procName, 1); #endif /* _WIN32 */ ret = recogWriteStream(fp, recog); rewind(fp); *pdata = l_binaryReadStream(fp, psize); #endif /* HAVE_FMEMOPEN */ fclose(fp); return ret; }
/*! * recogWrite() * * Input: filename * recog * Return: 0 if OK, 1 on error */ l_int32 recogWrite(const char *filename, L_RECOG *recog) { FILE *fp; PROCNAME("recogWrite"); if (!filename) return ERROR_INT("filename not defined", procName, 1); if (!recog) return ERROR_INT("recog not defined", procName, 1); if ((fp = fopenWriteStream(filename, "wb")) == NULL) return ERROR_INT("stream not opened", procName, 1); if (recogWriteStream(fp, recog, filename)) return ERROR_INT("recog not written to stream", procName, 1); fclose(fp); return 0; }