Esempio n. 1
0
/*!
 *  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;
}
Esempio n. 2
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;
}
Esempio n. 3
0
/*!
 *  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;
}