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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sexp.c

?? 機(jī)器人足球AI設(shè)計(jì)比賽
?? C
字號(hào):
/** SFSEXP: Small, Fast S-Expression Library version 1.0Written by Matthew Sottile (matt@lanl.gov)Copyright (2004). The Regents of the University of California. This materialwas produced under U.S. Government contract W-7405-ENG-36 for Los AlamosNational Laboratory, which is operated by the University of California forthe U.S. Department of Energy. The U.S. Government has rights to use,reproduce, and distribute this software. NEITHER THE GOVERNMENT NOR THEUNIVERSITY MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LIABILITYFOR THE USE OF THIS SOFTWARE. If software is modified to produce derivativeworks, such modified software should be clearly marked, so as not to confuseit with the version available from LANL.Additionally, this program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or (at youroption) any later version. Accordingly, this program is distributed in thehope that it will be useful, but WITHOUT ANY WARRANTY; without even theimplied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Seethe GNU General Public License for more details.LA-CC-04-094**/#include <assert.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "sexp.h"#include "faststack.h"/** * Recursively walk an s-expression and free it. */voiddestroy_sexp (sexp_t * s){  if (s == NULL)    return;  if (s->ty == SEXP_LIST)    destroy_sexp (s->list);  if (s->ty == SEXP_VALUE && s->val != NULL) {    sexp_free(s->val, s->val_allocated);  }  s->val = NULL;  destroy_sexp (s->next);  s->next = s->list = NULL;  sexp_t_deallocate(s);}/** * Iterative method to walk sx and turn it back into the string * representation of the s-expression.  Fills the buffer. */intprint_sexp (char *buf, size_t size, const sexp_t * sx){  int retval;  int sz;  char *b = buf, *tc;  size_t left = size;  int depth = 0;  faststack_t *stack;  stack_lvl_t *top;  sexp_t *tdata;  sexp_t *fakehead;  if (sx == NULL) {    fprintf(stderr,"print_sexp: s-expression is null.\n");    return -1;  }  fakehead = sexp_t_allocate();  assert(fakehead!=NULL);  /* duplicate the head to prevent going down a sx->next path     that we don't really want to see. */  fakehead->list = sx->list;  fakehead->ty = sx->ty;  fakehead->next = NULL; /* this is the important part of fakehead */  fakehead->aty = sx->aty;  if (fakehead->ty == SEXP_VALUE) {    assert(sx->val != NULL);    /* duplicate the head value into the fake head */    fakehead->val = (char *)sexp_malloc(sizeof(char)*sx->val_used);    assert(fakehead->val != NULL);    fakehead->val_used = fakehead->val_allocated = sx->val_used;    strcpy(fakehead->val,sx->val);  }  stack = make_stack ();  push (stack, fakehead);  while (stack->top != NULL)    {      top = stack->top;      tdata = (sexp_t *) top->data;      if (tdata == NULL)	{	  pop (stack);	  if (depth > 0)	    {	      b[0] = ')';	      b++;	      left--;	      depth--;	      if (left == 0)		{		  fprintf (stderr,			   "Warning: print_sexp out of buffer space.\n");		  break;		}	    }	  if (stack->top == NULL)	    break;	  top = stack->top;	  top->data = ((sexp_t *) top->data)->next;	  if (top->data != NULL)	    {	      b[0] = ' ';	      b++;	      left--;	      if (left == 0)		{		  fprintf (stderr,			   "Warning: print_sexp out of buffer space.\n");		  break;		}	    }	}      else if (tdata->ty == SEXP_VALUE)	{	  if (tdata->aty == SEXP_DQUOTE)	    {	      b[0] = '\"';	      b++;	      left--;	    }	  else if (tdata->aty == SEXP_SQUOTE)	    {	      b[0] = '\'';	      b++;	      left--;	    }          if (tdata->aty != SEXP_BINARY) {            assert(tdata->val != NULL);            tc = tdata->val;            /* copy value into string */            while (tc[0] != 0 && left > 0)              {                /* escape characters that need escaping. */                if ((tc[0] == '\"' || tc[0] == '\\') &&                    tdata->aty == SEXP_DQUOTE)                  {                    b[0] = '\\';                    b++;                    left--;                    if (left == 0) break;                  }                                b[0] = tc[0];                b++;                tc++;                left--;                if (left == 0)                  break;              }          } else {            if (left > 3) {              b[0] = '#'; b[1] = 'b'; b[2] = '#';              b+=3;              left-=3;#ifndef WIN32              if ((sz = snprintf(b,left,"%lu#",(unsigned long)tdata->binlength)) >= left) {#else              if ((sz = _snprintf(b,left,"%lu#",tdata->binlength)) >= left) {#endif                left = 0;                break;              }              b += sz;              left -= sz;                            if (left < tdata->binlength) {                left = 0;                break;              }              memcpy(b,tdata->bindata,tdata->binlength);              left -= tdata->binlength;              b+=tdata->binlength;              b[0] = ' ';              left--;            } else {              left = 0;               break;            }          }	  if (tdata->aty == SEXP_DQUOTE && left > 0)	    {	      b[0] = '\"';	      b++;	      left--;	    }	  if (left < 0)	    left = 0;	  if (left == 0)	    {	      fprintf (stderr, "Warning: print_sexp out of buffer space.\n");	      break;	    }	  top->data = ((sexp_t *) top->data)->next;	  if (top->data != NULL)	    {	      b[0] = ' ';	      b++;	      left--;	      if (left == 0)		{		  fprintf (stderr,			   "Warning: print_sexp out of buffer space.\n");		  break;		}	    }	}      else if (tdata->ty == SEXP_LIST)	{	  depth++;	  b[0] = '(';	  b++;	  left--;	  if (left == 0)	    {	      fprintf (stderr, "Warning: print_sexp out of buffer space.\n");	      break;	    }	  push (stack, tdata->list);	}      else	{	  fprintf (stderr, "ERROR: Unknown type in sexp_t.\n");	  fflush (stderr);	  return -1;	}    }  while (depth != 0)    {      b[0] = ')';      b++;      left--;      depth--;      if (left == 0)	{	  fprintf (stderr, "Warning: print_sexp out of buffer space.\n");	  break;	}    }  if (left != 0) {    b[0] = 0;    retval = (size-left);  } else {    b--;    b[0] = 0;    retval = -1;  }  destroy_stack (stack);  sexp_t_deallocate(fakehead);  return retval;}/** * Iterative method to walk sx and turn it back into the string * representation of the s-expression.  Fills the CSTRING that is * passed in.  If *s == NULL (new CSTRING, never used), snew() is called * and passed back.  If *s != NULL, *s is used as the CSTRING to print * into.  In the last case, the recycled CSTRING must have sempty() called * to reset the allocated vs. used counters to make it appear to be empty. */intprint_sexp_cstr (CSTRING **s, const sexp_t *sx, size_t ss, size_t gs){  int retval;  char *tc;  int depth = 0;  faststack_t *stack;  stack_lvl_t *top;  sexp_t *tdata;  sexp_t *fakehead;  CSTRING *_s = NULL;  char sbuf[32];  unsigned int i;  if (sx == NULL) {    fprintf(stderr,"print_sexp_cstr warning: s-expression is null.\n");    return -1;  }  if (*s == NULL)    _s = snew(ss);  else    _s = *s;  sgrowsize(gs);  fakehead = sexp_t_allocate();  assert(fakehead!=NULL);  /* duplicate the head to prevent going down a sx->next path     that we don't really want to see. */  fakehead->list = sx->list;  fakehead->ty = sx->ty;  fakehead->next = NULL; /* this is the important part of fakehead */  fakehead->aty = sx->aty;  if (fakehead->ty == SEXP_VALUE) {    assert(sx->val != NULL);        /* duplicate the value of the head into the fake head */    fakehead->val = (char *)sexp_malloc(sizeof(char)*sx->val_allocated);    assert(fakehead->val != NULL);    fakehead->val_allocated = sx->val_allocated;    fakehead->val_used = sx->val_used;    strcpy(fakehead->val,sx->val);  } else {    fakehead->val = NULL;    fakehead->val_allocated = fakehead->val_used = 0;  }  stack = make_stack ();  push (stack, fakehead);  while (stack->top != NULL)    {      top = stack->top;      tdata = (sexp_t *) top->data;      if (tdata == NULL)	{	  pop (stack);	  if (depth > 0)	    {	      _s = saddch(_s, ')');	      depth--;	    }	  if (stack->top == NULL)	    break;	  top = stack->top;	  top->data = ((sexp_t *) top->data)->next;	  if (top->data != NULL)	    {	      _s = saddch(_s, ' ');	    }	}      else if (tdata->ty == SEXP_VALUE)	{	  if (tdata->aty == SEXP_DQUOTE)	    {	      _s = saddch(_s,'\"');	    }	  else if (tdata->aty == SEXP_SQUOTE)	    {	      _s = saddch(_s,'\'');	    }          if (tdata->aty == SEXP_BINARY) {            assert(tdata->bindata != NULL);            assert(tdata->binlength > 0);            sprintf(sbuf,"#b#%lu#",(unsigned long)tdata->binlength);            _s = sadd(_s,sbuf);            for (i=0;i<tdata->binlength;i++)              _s = saddch(_s,tdata->bindata[i]);            _s = saddch(_s,' ');          } else {            assert(tdata->val != NULL);            tc = tdata->val;                        /* copy value into string */            while (tc[0] != 0)              {                /* escape characters that need escaping. */                if ((tc[0] == '\"' ||                     tc[0] == '\\') && tdata->aty == SEXP_DQUOTE)                  {                    _s = saddch(_s,'\\');                  }                                _s = saddch(_s,tc[0]);                tc++;              }          }	  if (tdata->aty == SEXP_DQUOTE)	    {	      _s = saddch(_s,'\"');	    }	  top->data = ((sexp_t *) top->data)->next;	  if (top->data != NULL)	    {	      _s = saddch(_s,' ');	    }	}      else if (tdata->ty == SEXP_LIST)	{	  depth++;	  _s = saddch(_s,'(');	  push (stack, tdata->list);	}      else	{	  fprintf (stderr, "ERROR: Unknown type in sexp_t.\n");	  fflush (stderr);	  return -1;	}    }  while (depth != 0)    {      _s = saddch(_s,')');      depth--;    }  *s = _s;  assert(_s != NULL);  retval = _s->curlen;  destroy_stack (stack);  assert(fakehead != NULL);  sexp_t_deallocate(fakehead);  return retval;}/** * Allocate a new sexp_t element representing a list. */sexp_t *new_sexp_list(sexp_t *l) {  sexp_t *sx = sexp_t_allocate();  sx->ty = SEXP_LIST;  sx->list = l;  sx->next = NULL;  sx->val = NULL;  sx->val_used = sx->val_allocated = 0;  return sx;}/** * allocate a new sexp_t element representing a value  */sexp_t *new_sexp_atom(const char *buf, size_t bs) {  sexp_t *sx = sexp_t_allocate();  sx->ty = SEXP_VALUE;  sx->aty = SEXP_BASIC;  sx->val = (char *)sexp_malloc(sizeof(char)*(bs+1));  assert(sx->val != NULL);  sx->val_used = sx->val_allocated = bs+1;  strcpy(sx->val,buf);  sx->list = sx->next = NULL;  return sx;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re成人精品视频| 欧美日韩在线免费视频| 国产一区二区三区免费| 日韩精品成人一区二区在线| 亚洲一二三区在线观看| 亚洲精品乱码久久久久久 | 中文字幕日韩av资源站| 精品国产凹凸成av人网站| 日韩欧美一区在线观看| 日韩午夜精品视频| 精品国产青草久久久久福利| 久久麻豆一区二区| 亚洲国产精品成人综合| 亚洲丝袜精品丝袜在线| 一区二区在线观看视频| 亚洲国产aⅴ天堂久久| 亚洲成人三级小说| 免费成人性网站| 国产在线国偷精品产拍免费yy| 国产一区二区主播在线| 国产**成人网毛片九色| 99久久国产综合精品色伊| 色偷偷久久一区二区三区| 欧美日韩在线不卡| 精品福利视频一区二区三区| 国产亚洲一区字幕| 国产精品第四页| 亚洲黄网站在线观看| 日韩成人免费在线| 国产精品99久久不卡二区| 91在线精品一区二区三区| 精品视频在线免费观看| 精品日产卡一卡二卡麻豆| 中文字幕在线不卡一区 | 91女神在线视频| 欧美日韩不卡视频| 久久久激情视频| 亚洲另类一区二区| 另类成人小视频在线| 不卡高清视频专区| 欧美日本国产视频| 国产女主播视频一区二区| 一区二区三区不卡视频| 久久99久久久久久久久久久| 成人看片黄a免费看在线| 欧美性生活一区| 久久久www成人免费无遮挡大片| 亚洲欧美一区二区三区极速播放| 日本美女一区二区三区| 99久久久免费精品国产一区二区 | 1024成人网| 日日夜夜精品视频免费| 成人午夜电影小说| 欧美伦理影视网| 日本一区二区高清| 蜜桃av噜噜一区| 91国偷自产一区二区开放时间| 欧美精品一区二区三区四区 | 国产精品麻豆视频| 老司机午夜精品| 色偷偷久久一区二区三区| 精品国产乱码久久| 夜夜操天天操亚洲| 国产麻豆视频精品| 欧美一区二区播放| 怡红院av一区二区三区| 国产精品亚洲综合一区在线观看| 欧美在线|欧美| 久久久久国产精品人| 日韩av高清在线观看| 色婷婷久久久久swag精品| 国产欧美日韩另类视频免费观看| 日本不卡中文字幕| 欧美无砖专区一中文字| √…a在线天堂一区| 国产美女精品一区二区三区| 欧美老肥妇做.爰bbww| 亚洲天堂成人网| 成人午夜视频在线| 精品国产乱码久久久久久久| 丝袜亚洲精品中文字幕一区| 99精品视频在线播放观看| 久久久久久日产精品| 免费在线观看精品| 91麻豆精品国产91久久久久| 亚洲欧美色一区| 99国产一区二区三精品乱码| 日本一区二区动态图| 国产成人亚洲综合a∨婷婷| 日韩免费看的电影| 秋霞成人午夜伦在线观看| 欧美人妖巨大在线| 亚洲高清久久久| 欧美三级视频在线播放| 亚洲一区二区在线免费看| 91浏览器入口在线观看| 综合久久久久久久| 99久久国产综合精品女不卡| 国产精品福利在线播放| 成人丝袜高跟foot| 欧美国产日韩a欧美在线观看 | 欧美日韩精品一二三区| 亚洲午夜一二三区视频| 欧美日韩在线直播| 天天综合天天做天天综合| 欧美日韩和欧美的一区二区| 亚洲成人免费观看| 欧美日韩国产在线观看| 午夜精品久久久久久久| 欧美日韩国产大片| 婷婷综合五月天| 欧美一级艳片视频免费观看| 蜜桃视频一区二区三区在线观看| 精品日韩成人av| 国产福利一区二区三区视频 | 亚洲特黄一级片| 色激情天天射综合网| 亚洲第一综合色| 日韩视频免费直播| 久久国产欧美日韩精品| 久久久国产一区二区三区四区小说| 国产精品亚洲人在线观看| 国产欧美综合在线| 91免费版在线| 亚洲国产乱码最新视频| 91精品国产一区二区| 国产美女精品在线| 日韩美女啊v在线免费观看| 欧美在线免费观看亚洲| 强制捆绑调教一区二区| 国产日韩精品一区二区浪潮av | 最新日韩在线视频| 欧美在线短视频| 捆绑调教一区二区三区| 国产午夜精品久久久久久久| 色综合网站在线| 日韩国产在线观看一区| 久久免费电影网| 9l国产精品久久久久麻豆| 亚洲成av人片在www色猫咪| 欧美成人aa大片| 99久久免费视频.com| 日精品一区二区| 亚洲国产精品传媒在线观看| 欧美日韩午夜在线视频| 久久超级碰视频| 亚洲同性gay激情无套| 69久久99精品久久久久婷婷| 成人午夜电影小说| 日本伊人精品一区二区三区观看方式 | 色狠狠桃花综合| 精品一区二区在线免费观看| 亚洲美女偷拍久久| 亚洲精品在线三区| 色94色欧美sute亚洲13| 国产一区二区三区四| 亚洲高清不卡在线| 国产精品三级av| 日韩精品在线一区| 欧美在线综合视频| 成人免费黄色在线| 久久国产人妖系列| 一区二区三区不卡在线观看| 久久久久久久久97黄色工厂| 欧美高清hd18日本| 99视频一区二区三区| 久久99精品久久久久久久久久久久 | 欧美色中文字幕| 丁香婷婷综合五月| 日本中文字幕不卡| 亚洲专区一二三| 国产精品高潮呻吟| 欧美精品一区二| 欧美精品 日韩| 在线免费观看日韩欧美| 国产福利一区二区三区视频在线| 视频一区视频二区中文| 一区二区三区日韩| 国产精品电影院| 国产午夜精品久久久久久久| 欧美电影免费观看高清完整版在线观看 | www久久精品| 欧美男人的天堂一二区| 91在线码无精品| 国产91丝袜在线观看| 精品午夜一区二区三区在线观看| 亚洲成年人网站在线观看| 亚洲欧美成aⅴ人在线观看| 欧美一级免费大片| 99在线热播精品免费| 国产成人av一区二区三区在线观看| 日本午夜一本久久久综合| 一区二区在线免费| 亚洲情趣在线观看| 亚洲色图.com| 亚洲人快播电影网| 一色桃子久久精品亚洲| 国产精品三级电影| 国产精品高清亚洲| 国产精品国产a级|