libicl_private.h

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

H
89
字号
#ifndef _ICLLIB_PRIVATE_H_INCLUDED
#define _ICLLIB_PRIVATE_H_INCLUDED

#ifdef __cplusplus
extern "C" {
#endif

#include <stdlib.h>
#include "libicl.h"

#define ICL_MAGIC_COOKIE 123456

  struct iclTerm {
    int  magic_cookie;
    enum ICLType iclType;
    void *p;
    size_t len;
    int refCount;
    int glibAlloc;
    int hadQuotes;
  }; 

  struct iclListType {
    struct iclTerm *elt;
    struct iclListType *next;
  };

  struct iclGroupType {
    char startChar;
    char *separator;
    struct iclListType *list;
  };

  struct iclStructType {
    char *name;
    int numArgs;
    struct iclTerm *args;
  };

  /****************************************************************************
   * Type: A dynamic array 
   ****************************************************************************/
  struct dyn_array {
    int count;
    int allocated;
    char **item;
  };

  typedef struct SOperator_s {
    char mName[255];
    int mPriority;
  } SOperator;

  EXTERN char* ICLDATAQSTART;
  EXTERN size_t ICLDATAQSTARTLEN;
  EXTERN SOperator operators[];
  EXTERN char last_separator;

  void icl_addChild(ICLTerm* compound, ICLTerm* child);
  int icl_toWireString(ICLTerm* t, char** termAsString, size_t* termAsStringLen);
  ICLTerm* icl_NewDataQNoCopy(void* data, size_t dataLen);
  ICLTerm* icl_NewStrNoCopy(char *s);
  ICLTerm* icl_NewVarNoCopy(char *name);
  ICLTerm* icl_NewTermFromDataDebug(char* data, size_t len);

  EXTERN void icl_stTrim(char* s);
  EXTERN int icl_safeStHeadTailPtr(char* tearms, size_t len, char** aterm, size_t* atermLen, char** restTerms, size_t* restTermsLen);
  EXTERN void icl_safeStFunctorArgs(char* structure, size_t structLen, char** func, size_t* funcLen, char** args, size_t* argsLen);
  EXTERN int icl_stIsOperatorChar(char t);
  EXTERN int icl_safeStTerm(char* terems, size_t len, char** aterm, size_t* atermLen, char** restterms, size_t* restTermsLen);
  EXTERN void icl_safeStListToTerms(char* s, size_t len, size_t* newLen);
  int icl_member_strlist(char *elt,
                         struct dyn_array strlist,
                         int incr,
                         int case_ins);
  void icl_free_dyn_list(struct dyn_array* slist);
  void icl_append_dyn_array(struct dyn_array *slist, void *str);
  int find_first_operator(char* s, char* op);
  char icl_stGetLastSeparator();
  EXTERN int icl_stIsOperator(char *t);
  EXTERN void	icl_safeStRemoveQuotes(char *t, size_t len, size_t* newLen);
  EXTERN void	icl_safeStUndoubleQuotes(char *t, size_t len, size_t* newLen);

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

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