termreader.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2006  SRI International
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00017  *
00018  * SRI International: 333 Ravenswood Ave, Menlo Park, CA 94025
00019  */
00020 
00021 #ifndef TERMREADER_H
00022 #define TERMREADER_H
00023 
00024 #include "libicl.h"
00025 #include "glib.h"
00026 
00027 #ifdef NORMAL_GC
00028 #undef CHECK_LEAKS
00029 #include <gc/leak_detector.h>
00030 #undef strdup
00031   EXTERN char* gc_strdup(char*s);
00032 #define strdup(s) gc_strdup(s)
00033 #else
00034 #define CHECK_LEAKS()
00035 #endif
00036 
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040 
00041   struct TermReaderStruct;
00042   typedef struct TermReaderStruct TermReader;
00043 
00044   typedef ICLTerm* (*TermReaderGetNext)(TermReader*, double);
00045   typedef void (*TermReaderCleanup)(TermReader*);
00046 
00047   enum TermReaderTypeEnum {
00048     UNKNOWNTERMREADERTYPE = -1,
00049     STRINGTERMREADERTYPE = 0,
00050     BINARYTERMREADERTYPE = 1,
00051     FILETERMREADERTYPE = 2
00052   }
00053   ;
00054   typedef enum TermReaderTypeEnum TermReaderType;
00055 
00056   enum TermReaderErrorNum {
00057     TERMREADER_BINUNREACHABLE = -106,
00058     TERMREADER_BINNOTENOUGHARGS = -105,
00059     TERMREADER_BINBADICLSTRUCT = -104,
00060     TERMREADER_BINBADICLSTR = -103,
00061     TERMREADER_BINBADICLVAR = -102,
00062     TERMREADER_BINUNEXPECTEDTYPE = -101,
00063     TERMREADER_BINUNEXPECTEDSENTINEL = -100,
00064     
00065     TERMREADER_NOTINITIALIZED = -3,
00066     TERMREADER_READERR = -2,
00067     TERMREADER_SELECTERR = -1,
00068 
00069     TERMREADER_OKAY = 0,
00070 
00071     TERMREADER_TIMEOUT = 1,
00072     TERMREADER_NOCONN = 2,
00073     TERMREADER_EOF = 3,
00074     TERMREADER_BINNOTENOUGHDATA = 100
00075   }
00076   ;
00077 
00078   EXTERN TermReader* termReader_create();
00079   EXTERN void termReader_free(TermReader* t);
00080 
00081   EXTERN void termReader_setError(TermReader* t, gint errnum);
00082   EXTERN gint termReader_getError(TermReader* t);
00083   EXTERN void termReader_setSocket(TermReader* t, gint newsocket);
00084   EXTERN gint termReader_getSocket(TermReader* t);
00085   EXTERN void termReader_setType(TermReader* t, TermReaderType type);
00086   EXTERN TermReaderType termReader_getType(TermReader* t);
00087   EXTERN void termReader_setReaderSpecificData(TermReader* t, gpointer g);
00088   EXTERN gpointer termReader_getReaderSpecificData(TermReader* t);
00089   EXTERN void termReader_setGetNextCallback(TermReader* t, TermReaderGetNext g);
00090   EXTERN void termReader_setCleanupCallback(TermReader* t, TermReaderCleanup c);
00091   
00095   EXTERN ICLTerm* termReader_getNextTerm(TermReader* t, double timeout);
00096 
00097 #ifdef __cplusplus
00098 }
00099 #endif
00100 
00101 #endif

Generated on Wed May 23 17:20:13 2007 using doxygen 1.5.2