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

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

?? lstrlib.c

?? 小游戲 linux very happy
?? C
?? 第 1 頁 / 共 2 頁
字號:
  if ((size_t)(cap->src_end-s) >= len &&      memcmp(cap->capture[l].init, s, len) == 0)    return s+len;  else return NULL;}static const char *match (lua_State *L, const char *s, const char *p,                          struct Capture *cap) {  init: /* using goto's to optimize tail recursion */  switch (*p) {    case '(':  /* start capture */      return start_capture(L, s, p, cap);    case ')':  /* end capture */      return end_capture(L, s, p, cap);    case ESC:  /* may be %[0-9] or %b */      if (isdigit((unsigned char)(*(p+1)))) {  /* capture? */        s = match_capture(L, s, *(p+1), cap);        if (s == NULL) return NULL;        p+=2; goto init;  /* else return match(L, s, p+2, cap) */      }      else if (*(p+1) == 'b') {  /* balanced string? */        s = matchbalance(L, s, p+2, cap);        if (s == NULL) return NULL;        p+=4; goto init;  /* else return match(L, s, p+4, cap); */      }      else goto dflt;  /* case default */    case '\0':  /* end of pattern */      return s;  /* match succeeded */    case '$':      if (*(p+1) == '\0')  /* is the '$' the last char in pattern? */        return (s == cap->src_end) ? s : NULL;  /* check end of string */      else goto dflt;    default: dflt: {  /* it is a pattern item */      const char *ep = luaI_classend(L, p);  /* points to what is next */      int m = s<cap->src_end && luaI_singlematch((unsigned char)*s, p, ep);      switch (*ep) {        case '?': {  /* optional */          const char *res;          if (m && ((res=match(L, s+1, ep+1, cap)) != NULL))            return res;          p=ep+1; goto init;  /* else return match(L, s, ep+1, cap); */        }        case '*':  /* 0 or more repetitions */          return max_expand(L, s, p, ep, cap);        case '+':  /* 1 or more repetitions */          return (m ? max_expand(L, s+1, p, ep, cap) : NULL);        case '-':  /* 0 or more repetitions (minimum) */          return min_expand(L, s, p, ep, cap);        default:          if (!m) return NULL;          s++; p=ep; goto init;  /* else return match(L, s+1, ep, cap); */      }    }  }}static const char *lmemfind (const char *s1, size_t l1,                             const char *s2, size_t l2) {  if (l2 == 0) return s1;  /* empty strings are everywhere */  else if (l2 > l1) return NULL;  /* avoids a negative `l1' */  else {    const char *init;  /* to search for a `*s2' inside `s1' */    l2--;  /* 1st char will be checked by `memchr' */    l1 = l1-l2;  /* `s2' cannot be found after that */    while (l1 > 0 && (init = (const char *)memchr(s1, *s2, l1)) != NULL) {      init++;   /* 1st char is already checked */      if (memcmp(init, s2+1, l2) == 0)        return init-1;      else {  /* correct `l1' and `s1' to try again */        l1 -= init-s1;        s1 = init;      }    }    return NULL;  /* not found */  }}static int push_captures (lua_State *L, struct Capture *cap) {  int i;  luaL_checkstack(L, cap->level, "too many captures");  for (i=0; i<cap->level; i++) {    int l = cap->capture[i].len;    if (l == -1) lua_error(L, "unfinished capture");    lua_pushlstring(L, cap->capture[i].init, l);  }  return cap->level;  /* number of strings pushed */}static int str_find (lua_State *L) {  size_t l1, l2;  const char *s = luaL_check_lstr(L, 1, &l1);  const char *p = luaL_check_lstr(L, 2, &l2);  long init = posrelat(luaL_opt_long(L, 3, 1), l1) - 1;  struct Capture cap;  luaL_arg_check(L, 0 <= init && (size_t)init <= l1, 3, "out of range");  if (lua_gettop(L) > 3 ||  /* extra argument? */      strpbrk(p, SPECIALS) == NULL) {  /* or no special characters? */    const char *s2 = lmemfind(s+init, l1-init, p, l2);    if (s2) {      lua_pushnumber(L, s2-s+1);      lua_pushnumber(L, s2-s+l2);      return 2;    }  }  else {    int anchor = (*p == '^') ? (p++, 1) : 0;    const char *s1=s+init;    cap.src_end = s+l1;    do {      const char *res;      cap.level = 0;      if ((res=match(L, s1, p, &cap)) != NULL) {        lua_pushnumber(L, s1-s+1);  /* start */        lua_pushnumber(L, res-s);   /* end */        return push_captures(L, &cap) + 2;      }    } while (s1++<cap.src_end && !anchor);  }  lua_pushnil(L);  /* not found */  return 1;}static void add_s (lua_State *L, luaL_Buffer *b, struct Capture *cap) {  if (lua_isstring(L, 3)) {    const char *news = lua_tostring(L, 3);    size_t l = lua_strlen(L, 3);    size_t i;    for (i=0; i<l; i++) {      if (news[i] != ESC)        luaL_putchar(b, news[i]);      else {        i++;  /* skip ESC */        if (!isdigit((unsigned char)news[i]))          luaL_putchar(b, news[i]);        else {          int level = check_capture(L, news[i], cap);          luaL_addlstring(b, cap->capture[level].init, cap->capture[level].len);        }      }    }  }  else {  /* is a function */    int n;    lua_pushvalue(L, 3);    n = push_captures(L, cap);    lua_rawcall(L, n, 1);    if (lua_isstring(L, -1))      luaL_addvalue(b);  /* add return to accumulated result */    else      lua_pop(L, 1);  /* function result is not a string: pop it */  }}static int str_gsub (lua_State *L) {  size_t srcl;  const char *src = luaL_check_lstr(L, 1, &srcl);  const char *p = luaL_check_string(L, 2);  int max_s = luaL_opt_int(L, 4, srcl+1);  int anchor = (*p == '^') ? (p++, 1) : 0;  int n = 0;  struct Capture cap;  luaL_Buffer b;  luaL_arg_check(L,    lua_gettop(L) >= 3 && (lua_isstring(L, 3) || lua_isfunction(L, 3)),    3, "string or function expected");  luaL_buffinit(L, &b);  cap.src_end = src+srcl;  while (n < max_s) {    const char *e;    cap.level = 0;    e = match(L, src, p, &cap);    if (e) {      n++;      add_s(L, &b, &cap);    }    if (e && e>src) /* non empty match? */      src = e;  /* skip it */    else if (src < cap.src_end)      luaL_putchar(&b, *src++);    else break;    if (anchor) break;  }  luaL_addlstring(&b, src, cap.src_end-src);  luaL_pushresult(&b);  lua_pushnumber(L, n);  /* number of substitutions */  return 2;}/* }====================================================== */static void luaI_addquoted (lua_State *L, luaL_Buffer *b, int arg) {  size_t l;  const char *s = luaL_check_lstr(L, arg, &l);  luaL_putchar(b, '"');  while (l--) {    switch (*s) {      case '"':  case '\\':  case '\n':        luaL_putchar(b, '\\');        luaL_putchar(b, *s);        break;      case '\0': luaL_addlstring(b, "\\000", 4); break;      default: luaL_putchar(b, *s);    }    s++;  }  luaL_putchar(b, '"');}/* maximum size of each formatted item (> len(format('%99.99f', -1e308))) */#define MAX_ITEM	512/* maximum size of each format specification (such as '%-099.99d') */#define MAX_FORMAT	20static int str_format (lua_State *L) {  int arg = 1;  const char *strfrmt = luaL_check_string(L, arg);  luaL_Buffer b;  luaL_buffinit(L, &b);  while (*strfrmt) {    if (*strfrmt != '%')      luaL_putchar(&b, *strfrmt++);    else if (*++strfrmt == '%')      luaL_putchar(&b, *strfrmt++);  /* %% */    else { /* format item */      struct Capture cap;      char form[MAX_FORMAT];  /* to store the format ('%...') */      char buff[MAX_ITEM];  /* to store the formatted item */      const char *initf = strfrmt;      form[0] = '%';      if (isdigit((unsigned char)*initf) && *(initf+1) == '$') {        arg = *initf - '0';        initf += 2;  /* skip the 'n$' */      }      arg++;      cap.src_end = strfrmt+strlen(strfrmt)+1;      cap.level = 0;      strfrmt = match(L, initf, "[-+ #0]*(%d*)%.?(%d*)", &cap);      if (cap.capture[0].len > 2 || cap.capture[1].len > 2 ||  /* < 100? */          strfrmt-initf > MAX_FORMAT-2)        lua_error(L, "invalid format (width or precision too long)");      strncpy(form+1, initf, strfrmt-initf+1); /* +1 to include conversion */      form[strfrmt-initf+2] = 0;      switch (*strfrmt++) {        case 'c':  case 'd':  case 'i':          sprintf(buff, form, luaL_check_int(L, arg));          break;        case 'o':  case 'u':  case 'x':  case 'X':          sprintf(buff, form, (unsigned int)luaL_check_number(L, arg));          break;        case 'e':  case 'E': case 'f': case 'g': case 'G':          sprintf(buff, form, luaL_check_number(L, arg));          break;        case 'q':          luaI_addquoted(L, &b, arg);          continue;  /* skip the "addsize" at the end */        case 's': {          size_t l;          const char *s = luaL_check_lstr(L, arg, &l);          if (cap.capture[1].len == 0 && l >= 100) {            /* no precision and string is too long to be formatted;               keep original string */            lua_pushvalue(L, arg);            luaL_addvalue(&b);            continue;  /* skip the "addsize" at the end */          }          else {            sprintf(buff, form, s);            break;          }        }        default:  /* also treat cases 'pnLlh' */          lua_error(L, "invalid option in `format'");      }      luaL_addlstring(&b, buff, strlen(buff));    }  }  luaL_pushresult(&b);  return 1;}static const struct luaL_reg strlib[] = {{"strlen", str_len},{"strsub", str_sub},{"strlower", str_lower},{"strupper", str_upper},{"strchar", str_char},{"strrep", str_rep},{"ascii", str_byte},  /* for compatibility with 3.0 and earlier */{"strbyte", str_byte},{"format", str_format},{"strfind", str_find},{"gsub", str_gsub}};/*** Open string library*/LUALIB_API void lua_strlibopen (lua_State *L) {  luaL_openl(L, strlib);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产宾馆实践打屁股91| 欧美不卡一区二区| 国产成人av电影| 国产美女久久久久| 亚洲黄色免费电影| 国产精品久久夜| 久久久久综合网| 日韩免费成人网| 欧美日韩一区二区三区视频| 成人晚上爱看视频| 久久精品99国产精品| 亚洲国产综合91精品麻豆| 一区在线观看免费| 国产欧美精品区一区二区三区| 日韩一区国产二区欧美三区| 91九色最新地址| 色呦呦日韩精品| 成人av动漫网站| 成人午夜伦理影院| 国产99久久久国产精品免费看| 国产美女精品在线| 国产真实精品久久二三区| 紧缚捆绑精品一区二区| 久久精品国产免费| 久久精品国产澳门| 久久99精品国产91久久来源| 美女视频黄免费的久久| 蜜臀av一级做a爰片久久| 肉色丝袜一区二区| 日本 国产 欧美色综合| 美女在线一区二区| 国产一区二区三区黄视频| 国产麻豆视频一区| 成人免费毛片aaaaa**| 99久久99精品久久久久久| 91麻豆免费看片| 欧美日韩中文国产| 91精品黄色片免费大全| 欧美成人精品二区三区99精品| 日韩一区二区三区电影在线观看| 欧美日精品一区视频| 欧美国产精品专区| 国产·精品毛片| 国产老肥熟一区二区三区| 懂色av噜噜一区二区三区av| 在线亚洲一区二区| 久久蜜桃av一区精品变态类天堂 | 蜜臀av一级做a爰片久久| 国产精品一区二区果冻传媒| 在线观看免费亚洲| 欧美大胆一级视频| 一区二区三区四区高清精品免费观看 | 国内精品视频666| 色久综合一二码| 久久亚洲欧美国产精品乐播 | 99视频超级精品| 91极品美女在线| 欧美精品在线视频| 欧美日韩国产电影| 欧美精品一区二区三| 日韩欧美久久一区| 久久久午夜电影| 国产精品久久久久久久久动漫 | 国产伦精品一区二区三区免费| 91久久精品一区二区二区| 久久久久久久久久电影| 亚洲精品videosex极品| 韩国精品免费视频| 欧美成人r级一区二区三区| 国产精品久久久久久久久果冻传媒 | 国产欧美一区二区三区网站| 午夜欧美在线一二页| 国产91高潮流白浆在线麻豆 | 91福利在线免费观看| 国产人久久人人人人爽| 轻轻草成人在线| 欧美日韩久久不卡| 亚洲男人的天堂一区二区| 国产成人av一区| 国产亚洲精久久久久久| 亚洲一区二区三区四区在线观看 | 国产精品亚洲午夜一区二区三区| 欧美日韩一区久久| 亚洲日本中文字幕区| 国产成人啪免费观看软件| 在线播放亚洲一区| 亚洲国产精品精华液网站| av一区二区三区在线| 欧美极品美女视频| 狠狠色丁香婷婷综合久久片| 91精品国产aⅴ一区二区| 日韩高清不卡一区二区三区| 欧美三级日韩在线| 一区二区三区视频在线看| 91尤物视频在线观看| 亚洲视频在线一区| 成人av影院在线| 亚洲图片你懂的| 欧亚洲嫩模精品一区三区| 免费成人av在线| 久久久www成人免费毛片麻豆 | 日韩福利视频网| 日韩久久免费av| 国产久卡久卡久卡久卡视频精品| 国产欧美一区二区精品性色| 成人三级在线视频| 自拍偷在线精品自拍偷无码专区| 色88888久久久久久影院按摩| 亚洲成人免费观看| 91麻豆精品91久久久久同性| 精品一区二区免费在线观看| 精品福利在线导航| 高清国产一区二区三区| 亚洲图片激情小说| 欧美日韩大陆一区二区| 久久电影网电视剧免费观看| 欧美经典一区二区三区| 99久久综合精品| 奇米影视7777精品一区二区| 久久久亚洲精品一区二区三区| 成人午夜在线免费| 日韩主播视频在线| 中文字幕成人av| 制服丝袜激情欧洲亚洲| 99久久国产综合色|国产精品| 午夜激情综合网| 亚洲三级电影网站| 日韩一本二本av| 99视频一区二区| 国内精品在线播放| 午夜精品福利一区二区蜜股av | 欧美最猛黑人xxxxx猛交| 国内精品久久久久影院色 | 国产一区 二区| 午夜精品久久久久久不卡8050| 国产女同性恋一区二区| 欧美手机在线视频| 成人精品国产一区二区4080| 婷婷综合在线观看| 一区二区三区四区蜜桃| 国产精品免费av| 精品久久久久一区| 欧美三区免费完整视频在线观看| 91蝌蚪porny九色| 99在线精品视频| 暴力调教一区二区三区| 国产麻豆91精品| 国产伦精品一区二区三区视频青涩 | 国产一区二区在线影院| 日韩精品乱码av一区二区| 亚洲伊人伊色伊影伊综合网| 国产精品丝袜久久久久久app| www久久精品| 久久人人97超碰com| 精品久久99ma| 久久免费的精品国产v∧| 亚洲精品一区二区三区蜜桃下载| 91精品国产综合久久久久久久| 在线亚洲精品福利网址导航| 91麻豆精品一区二区三区| 99国产精品99久久久久久| 97久久精品人人爽人人爽蜜臀| 国产suv精品一区二区三区| 高清日韩电视剧大全免费| 成人永久免费视频| 91香蕉视频污在线| 欧美艳星brazzers| 538在线一区二区精品国产| 日韩一区二区三区av| 久久这里只有精品6| 国产精品久久久久久久久果冻传媒| 日韩久久一区二区| 天天做天天摸天天爽国产一区| 日日骚欧美日韩| 国产成人一区在线| 99国产精品久| 欧美精品自拍偷拍| 国产校园另类小说区| 亚洲欧美一区二区三区孕妇| 午夜视黄欧洲亚洲| 国产激情偷乱视频一区二区三区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 一卡二卡三卡日韩欧美| 老司机免费视频一区二区| 99re视频这里只有精品| 欧美喷水一区二区| 久久久久久久久一| 亚洲国产成人av网| 国产在线精品一区二区| 91网址在线看| 欧美精品一区二区三区蜜臀| 伊人夜夜躁av伊人久久| 精久久久久久久久久久| 欧美视频一区在线观看| 久久成人麻豆午夜电影| 亚洲欧美成aⅴ人在线观看| 韩国三级在线一区| 制服丝袜亚洲播放| 一区二区三区色| 91在线播放网址|