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

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

?? lstrlib.cpp

?? 一個symbian 冒險游戲代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*
** $Id: lstrlib.cpp,v 1.1.1.1 2006/02/20 15:43:38 kajala Exp $
** Standard library for string operations and pattern-matching
** See Copyright Notice in lua.h
*/


#include <ctype.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define lstrlib_c

#include "lua.h"

#include "lauxlib.h"
#include "lualib.h"


/* macro to `unsign' a character */
#ifndef uchar
#define uchar(c)        ((unsigned char)(c))
#endif


typedef long sint32;	/* a signed version for size_t */


static int str_len (lua_State *L) {
  size_t l;
  luaL_checklstring(L, 1, &l);
  lua_pushnumber(L, (lua_Number)l);
  return 1;
}


static sint32 posrelat (sint32 pos, size_t len) {
  /* relative string position: negative means back from end */
  return (pos>=0) ? pos : (sint32)len+pos+1;
}


static int str_sub (lua_State *L) {
  size_t l;
  const char *s = luaL_checklstring(L, 1, &l);
  sint32 start = posrelat(luaL_checklong(L, 2), l);
  sint32 end = posrelat(luaL_optlong(L, 3, -1), l);
  if (start < 1) start = 1;
  if (end > (sint32)l) end = (sint32)l;
  if (start <= end)
    lua_pushlstring(L, s+start-1, end-start+1);
  else lua_pushliteral(L, "");
  return 1;
}


static int str_lower (lua_State *L) {
  size_t l;
  size_t i;
  luaL_Buffer b;
  const char *s = luaL_checklstring(L, 1, &l);
  luaL_buffinit(L, &b);
  for (i=0; i<l; i++)
    luaL_putchar(&b, tolower(uchar(s[i])));
  luaL_pushresult(&b);
  return 1;
}


static int str_upper (lua_State *L) {
  size_t l;
  size_t i;
  luaL_Buffer b;
  const char *s = luaL_checklstring(L, 1, &l);
  luaL_buffinit(L, &b);
  for (i=0; i<l; i++)
    luaL_putchar(&b, toupper(uchar(s[i])));
  luaL_pushresult(&b);
  return 1;
}

static int str_rep (lua_State *L) {
  size_t l;
  luaL_Buffer b;
  const char *s = luaL_checklstring(L, 1, &l);
  int n = luaL_checkint(L, 2);
  luaL_buffinit(L, &b);
  while (n-- > 0)
    luaL_addlstring(&b, s, l);
  luaL_pushresult(&b);
  return 1;
}


static int str_byte (lua_State *L) {
  size_t l;
  const char *s = luaL_checklstring(L, 1, &l);
  sint32 pos = posrelat(luaL_optlong(L, 2, 1), l);
  if (pos <= 0 || (size_t)(pos) > l)  /* index out of range? */
    return 0;  /* no answer */
  lua_pushnumber(L, uchar(s[pos-1]));
  return 1;
}


static int str_char (lua_State *L) {
  int n = lua_gettop(L);  /* number of arguments */
  int i;
  luaL_Buffer b;
  luaL_buffinit(L, &b);
  for (i=1; i<=n; i++) {
    int c = luaL_checkint(L, i);
    luaL_argcheck(L, uchar(c) == c, i, "invalid value");
    luaL_putchar(&b, uchar(c));
  }
  luaL_pushresult(&b);
  return 1;
}


static int writer (lua_State *L, const void* b, size_t size, void* B) {
  (void)L;
  luaL_addlstring((luaL_Buffer*) B, (const char *)b, size);
  return 1;
}


static int str_dump (lua_State *L) {
  luaL_Buffer b;
  luaL_checktype(L, 1, LUA_TFUNCTION);
  luaL_buffinit(L,&b);
  if (!lua_dump(L, writer, &b))
    luaL_error(L, "unable to dump given function");
  luaL_pushresult(&b);
  return 1;
}



/*
** {======================================================
** PATTERN MATCHING
** =======================================================
*/

#ifndef MAX_CAPTURES
#define MAX_CAPTURES 32  /* arbitrary limit */
#endif


#define CAP_UNFINISHED	(-1)
#define CAP_POSITION	(-2)

typedef struct MatchState {
  const char *src_init;  /* init of source string */
  const char *src_end;  /* end (`\0') of source string */
  lua_State *L;
  int level;  /* total number of captures (finished or unfinished) */
  struct {
    const char *init;
    sint32 len;
  } capture[MAX_CAPTURES];
} MatchState;


#define ESC		'%'
#define SPECIALS	"^$*+?.([%-"


static int check_capture (MatchState *ms, int l) {
  l -= '1';
  if (l < 0 || l >= ms->level || ms->capture[l].len == CAP_UNFINISHED)
    return luaL_error(ms->L, "invalid capture index");
  return l;
}


static int capture_to_close (MatchState *ms) {
  int level = ms->level;
  for (level--; level>=0; level--)
    if (ms->capture[level].len == CAP_UNFINISHED) return level;
  return luaL_error(ms->L, "invalid pattern capture");
}


static const char *luaI_classend (MatchState *ms, const char *p) {
  switch (*p++) {
    case ESC: {
      if (*p == '\0')
        luaL_error(ms->L, "malformed pattern (ends with `%')");
      return p+1;
    }
    case '[': {
      if (*p == '^') p++;
      do {  /* look for a `]' */
        if (*p == '\0')
          luaL_error(ms->L, "malformed pattern (missing `]')");
        if (*(p++) == ESC && *p != '\0')
          p++;  /* skip escapes (e.g. `%]') */
      } while (*p != ']');
      return p+1;
    }
    default: {
      return p;
    }
  }
}


static int match_class (int c, int cl) {
  int res;
  switch (tolower(cl)) {
    case 'a' : res = isalpha(c); break;
    case 'c' : res = iscntrl(c); break;
    case 'd' : res = isdigit(c); break;
    case 'l' : res = islower(c); break;
    case 'p' : res = ispunct(c); break;
    case 's' : res = isspace(c); break;
    case 'u' : res = isupper(c); break;
    case 'w' : res = isalnum(c); break;
    case 'x' : res = isxdigit(c); break;
    case 'z' : res = (c == 0); break;
    default: return (cl == c);
  }
  return (islower(cl) ? res : !res);
}


static int matchbracketclass (int c, const char *p, const char *ec) {
  int sig = 1;
  if (*(p+1) == '^') {
    sig = 0;
    p++;  /* skip the `^' */
  }
  while (++p < ec) {
    if (*p == ESC) {
      p++;
      if (match_class(c, *p))
        return sig;
    }
    else if ((*(p+1) == '-') && (p+2 < ec)) {
      p+=2;
      if (uchar(*(p-2)) <= c && c <= uchar(*p))
        return sig;
    }
    else if (uchar(*p) == c) return sig;
  }
  return !sig;
}


static int luaI_singlematch (int c, const char *p, const char *ep) {
  switch (*p) {
    case '.': return 1;  /* matches any char */
    case ESC: return match_class(c, *(p+1));
    case '[': return matchbracketclass(c, p, ep-1);
    default:  return (uchar(*p) == c);
  }
}


static const char *match (MatchState *ms, const char *s, const char *p);


static const char *matchbalance (MatchState *ms, const char *s,
                                   const char *p) {
  if (*p == 0 || *(p+1) == 0)
    luaL_error(ms->L, "unbalanced pattern");
  if (*s != *p) return 0;
  else {
    int b = *p;
    int e = *(p+1);
    int cont = 1;
    while (++s < ms->src_end) {
      if (*s == e) {
        if (--cont == 0) return s+1;
      }
      else if (*s == b) cont++;
    }
  }
  return 0;  /* string ends out of balance */
}


static const char *max_expand (MatchState *ms, const char *s,
                                 const char *p, const char *ep) {
  sint32 i = 0;  /* counts maximum expand for item */
  while ((s+i)<ms->src_end && luaI_singlematch(uchar(*(s+i)), p, ep))
    i++;
  /* keeps trying to match with the maximum repetitions */
  while (i>=0) {
    const char *res = match(ms, (s+i), ep+1);
    if (res) return res;
    i--;  /* else didn't match; reduce 1 repetition to try again */
  }
  return 0;
}


static const char *min_expand (MatchState *ms, const char *s,
                                 const char *p, const char *ep) {
  for (;;) {
    const char *res = match(ms, s, ep+1);
    if (res != 0)
      return res;
    else if (s<ms->src_end && luaI_singlematch(uchar(*s), p, ep))
      s++;  /* try with one more repetition */
    else return 0;
  }
}


static const char *start_capture (MatchState *ms, const char *s,
                                    const char *p, int what) {
  const char *res;
  int level = ms->level;
  if (level >= MAX_CAPTURES) luaL_error(ms->L, "too many captures");
  ms->capture[level].init = s;
  ms->capture[level].len = what;
  ms->level = level+1;
  if ((res=match(ms, s, p)) == 0)  /* match failed? */
    ms->level--;  /* undo capture */
  return res;
}


static const char *end_capture (MatchState *ms, const char *s,
                                  const char *p) {
  int l = capture_to_close(ms);
  const char *res;
  ms->capture[l].len = s - ms->capture[l].init;  /* close capture */
  if ((res = match(ms, s, p)) == 0)  /* match failed? */
    ms->capture[l].len = CAP_UNFINISHED;  /* undo capture */
  return res;
}


static const char *match_capture (MatchState *ms, const char *s, int l) {
  size_t len;
  l = check_capture(ms, l);
  len = ms->capture[l].len;
  if ((size_t)(ms->src_end-s) >= len &&
      memcmp(ms->capture[l].init, s, len) == 0)
    return s+len;
  else return 0;
}


static const char *match (MatchState *ms, const char *s, const char *p) {
  init: /* using goto's to optimize tail recursion */
  switch (*p) {
    case '(': {  /* start capture */
      if (*(p+1) == ')')  /* position capture? */
        return start_capture(ms, s, p+2, CAP_POSITION);
      else
        return start_capture(ms, s, p+1, CAP_UNFINISHED);
    }
    case ')': {  /* end capture */
      return end_capture(ms, s, p+1);
    }
    case ESC: {
      switch (*(p+1)) {
        case 'b': {  /* balanced string? */
          s = matchbalance(ms, s, p+2);
          if (s == 0) return 0;
          p+=4; goto init;  /* else return match(ms, s, p+4); */
        }
        case 'f': {  /* frontier? */
          const char *ep; char previous;
          p += 2;
          if (*p != '[')
            luaL_error(ms->L, "missing `[' after `%%f' in pattern");
          ep = luaI_classend(ms, p);  /* points to what is next */
          previous = (s == ms->src_init) ? '\0' : *(s-1);
          if (matchbracketclass(uchar(previous), p, ep-1) ||
             !matchbracketclass(uchar(*s), p, ep-1)) return 0;
          p=ep; goto init;  /* else return match(ms, s, ep); */
        }
        default: {
          if (isdigit(uchar(*(p+1)))) {  /* capture results (%0-%9)? */
            s = match_capture(ms, s, *(p+1));
            if (s == 0) return 0;
            p+=2; goto init;  /* else return match(ms, s, p+2) */
          }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情av综合网| 久久精品国产精品青草| 日韩一区二区三区在线| 国产不卡视频一区| 首页国产欧美日韩丝袜| 亚洲视频1区2区| 久久综合色一综合色88| 欧美日韩免费在线视频| 成人黄色国产精品网站大全在线免费观看 | 蜜桃视频一区二区| 亚洲日本电影在线| 久久精品亚洲精品国产欧美kt∨| 欧美日韩国产成人在线91| 99久久国产综合色|国产精品| 蜜桃视频第一区免费观看| 亚洲高清免费在线| 亚洲人成在线播放网站岛国 | 欧美成人猛片aaaaaaa| 91久久精品一区二区三| 福利电影一区二区| 国产在线播放一区三区四| 日韩国产在线观看| 性欧美疯狂xxxxbbbb| 亚洲男人天堂一区| 亚洲丝袜另类动漫二区| 国产精品网曝门| 国产女人aaa级久久久级| 精品国产免费一区二区三区四区 | 国产精品麻豆久久久| 日韩精品中文字幕在线一区| 在线综合视频播放| 欧美日韩精品一区视频| 欧美私模裸体表演在线观看| 色94色欧美sute亚洲13| 色婷婷国产精品久久包臀| 99久久精品国产精品久久| 成a人片国产精品| av中文字幕不卡| 成人国产精品免费观看视频| 国产99久久久精品| 国产成人精品免费一区二区| 91免费版在线看| 91在线视频网址| 91一区一区三区| 99国产精品久久久久久久久久| 成人av在线观| 91蜜桃在线观看| 日本丶国产丶欧美色综合| 不卡一区二区中文字幕| 成人av动漫网站| av一本久道久久综合久久鬼色| 久久97超碰色| 风间由美一区二区三区在线观看 | 99国产精品久| 成人av综合在线| 91丨porny丨中文| 欧美性xxxxxx少妇| 欧美一区二区三区爱爱| 久久蜜桃一区二区| 亚洲色图欧美偷拍| 天堂精品中文字幕在线| 韩国女主播一区二区三区| 国产成a人亚洲| 日本韩国欧美国产| 日韩亚洲电影在线| 欧美激情一区二区三区蜜桃视频| 综合亚洲深深色噜噜狠狠网站| 亚洲一区二区五区| 麻豆国产欧美一区二区三区| 成人伦理片在线| 欧美三级电影网站| 精品少妇一区二区| 综合久久给合久久狠狠狠97色 | 国产91精品在线观看| 99re亚洲国产精品| 正在播放一区二区| 久久精品一区蜜桃臀影院| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲大片免费看| 国产成人亚洲综合a∨猫咪| 91蜜桃婷婷狠狠久久综合9色| 日韩一区和二区| 国产精品乱人伦| 日韩va亚洲va欧美va久久| 高清不卡一二三区| 欧美日本韩国一区| 国产精品无人区| 日韩精品乱码免费| 成人小视频免费在线观看| 欧美人与性动xxxx| 国产精品嫩草影院av蜜臀| 丝袜美腿亚洲一区| 99久久精品免费看| 精品电影一区二区| 亚洲成人激情av| 成人app下载| 精品久久久久久久久久久久久久久久久 | 制服丝袜亚洲色图| 亚洲视频在线一区观看| 国内精品免费在线观看| 欧美日韩国产首页在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 日韩中文字幕91| 91官网在线观看| 国产蜜臀97一区二区三区| 免费观看日韩av| 欧美中文字幕一区二区三区亚洲| 久久久精品2019中文字幕之3| 天堂影院一区二区| 色综合天天做天天爱| 中文久久乱码一区二区| 日本中文一区二区三区| 成人免费高清在线| 久久精品人人做人人综合| 日本三级韩国三级欧美三级| 欧美日韩国产综合一区二区| 亚洲蜜桃精久久久久久久| 成人深夜福利app| 久久久久88色偷偷免费| 精品一区二区国语对白| 欧美一区二区福利视频| 午夜精品一区二区三区电影天堂| 色婷婷久久综合| 亚洲精品午夜久久久| 色94色欧美sute亚洲线路一ni| 中文字幕在线一区免费| 丰满岳乱妇一区二区三区 | 亚洲成av人片一区二区三区 | 日韩欧美精品三级| 日韩电影免费在线看| 欧美精品久久久久久久多人混战| 亚洲综合色成人| 欧美日韩亚洲综合在线 | 国产精品乱子久久久久| 不卡一区二区在线| 中文字幕中文字幕一区二区| 99国产精品久久久| 亚洲另类色综合网站| 一本大道av伊人久久综合| 亚洲色图20p| 在线观看视频欧美| 亚洲国产人成综合网站| 欧美精品视频www在线观看| 日韩1区2区3区| 欧美大胆一级视频| 国产成人免费视| 亚洲欧美色一区| 欧美三片在线视频观看| 日韩高清在线不卡| 日韩欧美资源站| 国产一区二区三区久久久| 欧美激情在线看| 91色九色蝌蚪| 丝袜亚洲另类丝袜在线| 精品国产髙清在线看国产毛片| 国产原创一区二区| 中文字幕日本不卡| 91成人免费电影| 麻豆成人91精品二区三区| 久久久久久麻豆| 97se狠狠狠综合亚洲狠狠| 亚洲mv在线观看| 欧美精品一区二区三区蜜桃 | 国产一区二区三区精品视频| 中文字幕成人av| 在线观看欧美日本| 久久成人综合网| 日韩理论片网站| 69堂成人精品免费视频| 国产乱码精品1区2区3区| 亚洲欧美日韩一区二区| 日韩欧美中文一区| 成人激情动漫在线观看| 三级成人在线视频| 国产人成亚洲第一网站在线播放 | 中文字幕日本乱码精品影院| 欧美精品v日韩精品v韩国精品v| 狠狠色综合播放一区二区| 椎名由奈av一区二区三区| 日韩欧美一区二区久久婷婷| 成人av在线网| 精品一区二区三区免费毛片爱 | 日韩三级视频中文字幕| gogogo免费视频观看亚洲一| 亚洲一级二级三级在线免费观看| 精品欧美久久久| 日本精品视频一区二区三区| 寂寞少妇一区二区三区| 一区2区3区在线看| 亚洲国产精品高清| 欧美一区二区三区视频免费播放 | av亚洲精华国产精华精| 精东粉嫩av免费一区二区三区| 亚洲精品成a人| 国产欧美日韩亚州综合| 欧美一二三在线| 欧美性色aⅴ视频一区日韩精品| 国产精品资源在线看| 蜜桃视频在线一区| 亚洲国产精品久久不卡毛片|