termreader.h

来自「SRI international 发布的OAA框架软件」· C头文件 代码 · 共 80 行

H
80
字号
#ifndef TERMREADER_H
#define TERMREADER_H

#include "libicl.h"
#include "glib.h"

#ifdef NORMAL_GC
#undef CHECK_LEAKS
#include <gc/leak_detector.h>
#undef strdup
  EXTERN char* gc_strdup(char*s);
#define strdup(s) gc_strdup(s)
#else
#define CHECK_LEAKS()
#endif

#ifdef __cplusplus
extern "C" {
#endif

  struct TermReaderStruct;
  typedef struct TermReaderStruct TermReader;

  typedef ICLTerm* (*TermReaderGetNext)(TermReader*, double);
  typedef void (*TermReaderCleanup)(TermReader*);

  enum TermReaderTypeEnum {
    UNKNOWNTERMREADERTYPE = -1,
    STRINGTERMREADERTYPE = 0,
    BINARYTERMREADERTYPE = 1
  }
  ;
  typedef enum TermReaderTypeEnum TermReaderType;

  enum TermReaderErrorNum {
    TERMREADER_BINUNREACHABLE = -106,
    TERMREADER_BINNOTENOUGHARGS = -105,
    TERMREADER_BINBADICLSTRUCT = -104,
    TERMREADER_BINBADICLSTR = -103,
    TERMREADER_BINBADICLVAR = -102,
    TERMREADER_BINUNEXPECTEDTYPE = -101,
    TERMREADER_BINUNEXPECTEDSENTINEL = -100,
    
    TERMREADER_NOTINITIALIZED = -3,
    TERMREADER_READERR = -2,
    TERMREADER_SELECTERR = -1,

    TERMREADER_OKAY = 0,

    TERMREADER_TIMEOUT = 1,
    TERMREADER_NOCONN = 2,
    TERMREADER_BINNOTENOUGHDATA = 100
  }
  ;

  EXTERN TermReader* termReader_create();
  EXTERN void termReader_free(TermReader* t);

  EXTERN void termReader_setError(TermReader* t, gint errnum);
  EXTERN gint termReader_getError(TermReader* t);
  EXTERN void termReader_setSocket(TermReader* t, gint newsocket);
  EXTERN gint termReader_getSocket(TermReader* t);
  EXTERN void termReader_setType(TermReader* t, TermReaderType type);
  EXTERN TermReaderType termReader_getType(TermReader* t);
  EXTERN void termReader_setReaderSpecificData(TermReader* t, gpointer g);
  EXTERN gpointer termReader_getReaderSpecificData(TermReader* t);
  EXTERN void termReader_setGetNextCallback(TermReader* t, TermReaderGetNext g);
  EXTERN void termReader_setCleanupCallback(TermReader* t, TermReaderCleanup c);
  
  /**
   * Returns NULL on error--check TermReader.error
   */
  EXTERN ICLTerm* termReader_getNextTerm(TermReader* t, double timeout);

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?