亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sexp.h

?? 機器人足球AI設計比賽
?? H
?? 第 1 頁 / 共 2 頁
字號:
 */typedef struct pcont {  /**   * The parser stack used for iterative parsing.   */  faststack_t *stack;  /**   * The last full s-expression encountered by the parser.  If this is   * NULL, the parser has not encountered a full s-expression and more   * data is required for the current s-expression being parsed.  If this   * is non-NULL, then the parser has encountered one s-expression and may   * be partially through parsing the next s-expression.   */  sexp_t     *last_sexp;  /**   * Pointer to a temporary buffer used to store atom values during parsing.   */  char        *val;  /**   * Current number of bytes allocated for val.   */  size_t          val_allocated;  /**   * Current number of used bytes in val.   */  size_t          val_used;  /**   * Pointer to the character following the last character in the current   * atom value being parsed.   */  char        *vcur;  /**   * Pointer to the last character to examine in the string being parsed.   * When the parser is called with the continuation, this is the first   * character that will be processed.  If this is NULL, the parser will   * start parsing at the beginning of the string passed into the parser.   */  char        *lastPos;  /**   * This is a pointer to the beginning of the current string being   * processed.  lastPos is a pointer to some value inside the string   * that this points to.   */  char        *sbuffer;  /**   * This is the depth of parenthesis (the number of left parens encountered)   * that the parser is currently working with.   */  unsigned int depth;  /**   * This is the depth of parenthesis encountered after a single quote (tick)   * if the character immediately following the tick was a left paren.   */  unsigned int qdepth;  /**   * This is the state ID of the current state of the parser in the   * DFA representing the parser.  The current parser is a DFA based parser   * to simplify restoring the proper state from a continuation.   */  unsigned int state;  /**   * This is a flag indicating whether the next character to be processed   * should be assumed to have been prefaced with a '\' character to escape   * it.   */  unsigned int esc;  /**   * Flag whether or not we are processing an atom that was preceeded by   * a single quote.   */  unsigned int squoted;  /**   * Error code.  Used to indicate that the continuation being returned does   * not represent a successful parsing and thus the contents aren't of much   * value.  If this value is 0, no error occurred.  Otherwise, it will be 1.   */  unsigned int error;  /**   * Mode.  The parsers' specialized behaviours can be activated by   * tweaking the mode setting.  There are currently two available:   * normal and inline_binary.  Inline_binary treats atoms that start   * with \#b\# specially, assuming that they have the structure:   *   *    \#b\#s\#data   *   * Where s is a positive (greater than 0) integer representing the length   * of the data, and data is s bytes of binary data following the \#   * sign.  After the s bytes, it is assumed normal s-expression data   * continues.   */  parsermode_t mode;  /* -----------------------------------------------------------------   * These fields below are related to dealing with INLINE_BINARY mode   * ----------------------------------------------------------------- */  /**   * Length to expect of the current binary data being read in.   * this also corresponds to the size of the memory allocated for   * reading this binary data into.   */  size_t binexpected;  /**   * Number of bytes of the binary blob that have already been read in.   */  size_t binread;    /**   * Pointer to the memory containing the binary data being read in.   */  char *bindata;} pcont_t;/** * \ingroup IO * This structure is a wrapper around a standard I/O file descriptor and * the parsing infrastructure (continuation and a buffer) required to * parse off of it.  This is used so that routines can hide the loops and * details required to accumulate up data read off of the file descriptor * and parse expressions individually out of it. */typedef struct sexp_iowrap {  /**   * Continuation used to parse off of the file descriptor.   */  pcont_t *cc;  /**   * The file descriptor.  Currently CANNOT be a socket since implementation   * uses read(), not recv().   */  int fd;  /**   * Buffer to read data into before parsing.   */  char buf[BUFSIZ];    /**   * Byte count for last read.  If it is -1, there was an error.  Otherwise,   * it will be a value from 0 to BUFSIZ.   */  int cnt;} sexp_iowrap_t;/*===========*//* FUNCTIONS *//*===========*//* this is for C++ users */#ifdef __cplusplusextern "C" {#endif  /**   * \ingroup parser   * Set the parameters on atom value buffer allocation and growth sizes.   * This is an important point for performance tuning, as many factors in   * the expected expression structure must be taken into account such as:   *   *   - Average size of atom values   *   - Variance in sizes of atom values   *   - Amount of memory that is tolerably ''wasted'' (allocated but not   *     used)   *   * The \a ss parameter specifies the initial size of all atom buffers.   * Ideally, this should be sufficiently large to capture MOST atom values,   * or at least close enough such that one growth is required.  The   * \a gs parameter specifies the number of bytes to increase the buffer size   * by when space is exhausted.  A safe choice for parameter sizes would   * be on the order of the average size for \a ss, and one standard   * deviation for \a gs.  This ensures that 50% of all expressions are   * guaranteed to fit in the initial buffer, and rougly 80-90% will fit in   * one growth.  If memory is not an issue, choosing ss to be the mean plus   * one standard deviation will capture 80-90% of expressions in the initial   * buffer, and a gs of one standard deviation will capture nearly all   * expressions.   *   * Note: These parameters can be tuned at runtime as needs change, and they   * will be applied to all expressions and expression elements parsed after   * they are modified.  They will not be applied retroactively to expressions   * that have already been parsed.   */  void set_parser_buffer_params(size_t ss, size_t gs);  /**   * return an allocated sexp_t.  This structure may be an already allocated   * one from the stack or a new one if none are available.  Use this instead   * of manually mallocing if you want to avoid excessive mallocs.  <I>Note:   * Mallocing your own expressions is fine - you can even use    * sexp_t_deallocate to deallocate them and put them in the pool.</I>   * Also, if the stack has not been initialized yet, this does so.   */  sexp_t *sexp_t_allocate(void);  /**   * given a malloc'd sexp_t element, put it back into the already-allocated   * element stack.  This method will allocate a stack if one has not been   * allocated already.   */  void sexp_t_deallocate(sexp_t *s);    /**   * In the event that someone wants us to release ALL of the memory used   * between calls by the library, they can free it.  If you don't call   * this, the caches will be persistent for the lifetime of the library   * user.   */  void sexp_cleanup(void);  /**   * print a sexp_t struct as a string in the LISP style.  If the buffer   * is large enough and the conversion is successful, the return value   * represents the length of the string contained in the buffer.  If the   * buffer was too small, or some other error occurred, the return   * value is -1 and the contents of the buffer should not be assumed to   * contain any useful information.   */  int print_sexp(char *loc, size_t size, const sexp_t *e);  /**   * print a sexp_t structure to a buffer, growing it as necessary instead   * of relying on fixed size buffers like print_sexp.  Important arguments   * to tune for performance reasons are <tt>ss</tt> and <tt>gs</tt> - the   * buffer start size and growth size.   */  int print_sexp_cstr(CSTRING **s, const sexp_t *e, size_t ss, size_t gs);  /**   * Allocate a new sexp_t element representing a list.   */  sexp_t *new_sexp_list(sexp_t *l);    /**   * allocate a new sexp_t element representing a value    */  sexp_t *new_sexp_atom(const char *buf, size_t bs);      /**    * create an initial continuation for parsing the given string    */  pcont_t *init_continuation(char *str);  /**   * destroy a continuation.  This involves cleaning up what it contains,   * and cleaning up the continuation itself.   */  void destroy_continuation (pcont_t * pc);  /**   * \ingroup IO   * create an IO wrapper structure around a file descriptor.   */  sexp_iowrap_t *init_iowrap(int fd);  /**   * \ingroup IO   * destroy an IO wrapper structure.  The file descriptor wrapped in the   * wrapper will <B>not</B> be closed, so the caller is responsible   * for manually calling close on the file descriptor.   */  void destroy_iowrap(sexp_iowrap_t *iow);  /**   * \ingroup IO   * given and IO wrapper handle, read one s-expression off of it.  this   * expression may be contained in a continuation, so there is no   * guarantee that under the covers an IO read actually is occuring.   * returning null implies no s-expression was able to be read.   */  sexp_t *read_one_sexp(sexp_iowrap_t *iow);    /**    * \ingroup parser   * wrapper around parser for compatibility.    */  sexp_t *parse_sexp(char *s, size_t len);  /**    * \ingroup parser   * wrapper around parser for friendlier continuation use    * pre-condition : continuation (cc) is NON-NULL!    */  sexp_t *iparse_sexp(char *s, size_t len, pcont_t *cc);    /**   * \ingroup parser   * given a LISP style s-expression string, parse it into a set of   * connected sexp_t structures.    */  pcont_t *cparse_sexp(char *s, size_t len, pcont_t *pc);    /**   * given a sexp_t structure, free the memory it uses (and recursively free   * the memory used by all sexp_t structures that it references).  Note   * that this will call the deallocation routine for sexp_t elements.   * This means that memory isn't freed, but stored away in a cache of   * pre-allocated elements.  This is an optimization to speed up the   * parser to eliminate wasteful free and re-malloc calls.   */  void destroy_sexp(sexp_t *s);/* this is for C++ users */#ifdef __cplusplus}#endif#include "sexp_ops.h"#endif /* __SEXP_H__ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
经典一区二区三区| 青青草国产精品97视觉盛宴| 99国产精品国产精品久久| 亚洲精品乱码久久久久久| 日本福利一区二区| 免费观看在线综合色| 久久女同精品一区二区| 99视频在线观看一区三区| 亚洲成在人线在线播放| 日韩欧美国产麻豆| 99re热这里只有精品视频| 婷婷六月综合网| 欧美国产一区二区在线观看| 在线一区二区视频| 麻豆精品国产91久久久久久| 国产精品乱码妇女bbbb| 精品视频1区2区| 国产成人在线视频网站| 亚洲成人午夜影院| 国产精品成人一区二区艾草| 欧美日韩亚洲综合一区二区三区| 国产乱码精品一区二区三| 一区二区三区欧美亚洲| 久久久精品国产免费观看同学| 在线观看91视频| 国产mv日韩mv欧美| 精品在线一区二区| 亚洲国产综合色| 国产精品乱人伦| 久久久国产一区二区三区四区小说 | 欧美性极品少妇| www.综合网.com| 成人一级片网址| 国产成人a级片| 蜜乳av一区二区| 亚洲gay无套男同| 九九精品一区二区| 视频在线观看一区二区三区| 国产午夜精品美女毛片视频| 3751色影院一区二区三区| 在线欧美小视频| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 一二三四区精品视频| 欧美午夜精品一区| 91无套直看片红桃| 成人精品一区二区三区中文字幕| 麻豆中文一区二区| 蜜桃av一区二区三区电影| 亚洲午夜电影在线| 天天操天天色综合| 亚洲黄色在线视频| 亚洲一区二区美女| 亚洲高清一区二区三区| 亚洲电影中文字幕在线观看| 亚洲综合色噜噜狠狠| 国产精品嫩草99a| 亚洲人123区| 亚洲一区二区在线免费观看视频| 一区二区三区美女| 亚洲成人av一区二区| 亚洲va欧美va人人爽| 视频一区视频二区中文| 亚洲大片免费看| 亚洲h精品动漫在线观看| 日韩高清不卡一区| 国产精品1区2区3区在线观看| 国产精一区二区三区| 一本色道亚洲精品aⅴ| 欧美性高清videossexo| 欧美一激情一区二区三区| 精品国产a毛片| 亚洲色欲色欲www| 同产精品九九九| 国产精品综合在线视频| 色婷婷综合激情| 91精品在线免费| 久久精品综合网| 国产乱码精品1区2区3区| 99精品欧美一区二区三区综合在线| 在线区一区二视频| 久久综合精品国产一区二区三区| 久久精品人人做人人爽人人| 亚洲三级在线看| 免费成人在线视频观看| 在线视频你懂得一区| 久久欧美一区二区| 五月天中文字幕一区二区| 国产精品自在欧美一区| 在线观看一区二区精品视频| 久久色在线视频| 午夜不卡av在线| 色婷婷av一区| 日韩亚洲欧美中文三级| 天堂蜜桃91精品| 91在线播放网址| 国产欧美精品一区二区色综合朱莉| 天堂资源在线中文精品| 91免费视频网址| 国产色91在线| 国产在线麻豆精品观看| 欧美一区二区日韩| 亚洲一区自拍偷拍| 99久久精品免费精品国产| 精品国产三级电影在线观看| 一区二区三区国产豹纹内裤在线 | 免费在线看一区| 在线免费观看日本一区| 国产精品美女久久久久aⅴ| 丰满放荡岳乱妇91ww| 欧美人成免费网站| 午夜一区二区三区在线观看| 欧洲人成人精品| 一区二区三区91| 色婷婷亚洲精品| 国产精品久久久久久久久免费樱桃 | 久久这里只有精品6| 国内精品伊人久久久久av影院| 婷婷成人综合网| 在线精品视频一区二区三四| 一区二区视频在线| 91电影在线观看| 亚洲一二三四区不卡| 欧美一级高清大全免费观看| 久久国产三级精品| 国产天堂亚洲国产碰碰| 99久久久精品| 午夜av电影一区| 日韩精品专区在线影院观看| 国产在线麻豆精品观看| 国产精品精品国产色婷婷| 欧洲国产伦久久久久久久| 亚洲一区二区3| 欧美激情一区不卡| 欧美日韩国产在线播放网站| 久久精品国产77777蜜臀| 蜜桃av一区二区三区电影| 久久精品亚洲精品国产欧美| 国产不卡视频一区| 亚洲国产视频一区| 欧美大片拔萝卜| 成人一级黄色片| 久久精品国产精品亚洲红杏| 国产精品久久久久久亚洲伦| 欧美精品久久99| 成人免费av网站| 日韩精品亚洲专区| 亚洲三级免费电影| 久久人人爽人人爽| 欧美日韩国产另类一区| 91年精品国产| 国产一区二区女| 天堂资源在线中文精品| 国产精品网站一区| 欧美成人在线直播| 色久优优欧美色久优优| 成人国产免费视频| 国产一区二区中文字幕| 日韩国产欧美在线视频| 一区二区三区四区视频精品免费| 欧美精品一区二| 91精品国产综合久久精品性色| 99re在线精品| kk眼镜猥琐国模调教系列一区二区| 国产福利一区在线| 国产麻豆精品久久一二三| 另类欧美日韩国产在线| 色综合一区二区三区| 国产乱码精品一区二区三区忘忧草 | 国产成人免费视频| 黄色日韩三级电影| 久久99国产精品久久| 国产精华液一区二区三区| 国产一区二区伦理| 国产在线视频精品一区| 蜜臀精品一区二区三区在线观看| 午夜影院在线观看欧美| 亚洲大片精品永久免费| 伊人开心综合网| 亚洲成在线观看| 日本亚洲一区二区| 理论电影国产精品| 国产精品 欧美精品| 一本色道久久综合狠狠躁的推荐| 一本到三区不卡视频| 欧美性猛片aaaaaaa做受| 6080亚洲精品一区二区| 日韩一区国产二区欧美三区| 精品久久久久久久久久久久久久久 | 91精品国产全国免费观看| 日韩视频一区二区三区在线播放| 日韩女优电影在线观看| 久久久亚洲精华液精华液精华液| 国产欧美精品在线观看| 亚洲影视在线观看| 国产在线观看免费一区| 色综合天天综合网国产成人综合天| 欧美日本免费一区二区三区| 久久综合九色综合97婷婷 | 色综合一个色综合亚洲| 日韩三级在线观看|