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

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

?? pstring.cxx

?? PTypes (C++ Portable Types Library) is a simple alternative to the STL that includes multithreading
?? CXX
字號:
/* * *  C++ Portable Types Library (PTypes) *  Version 1.7.5   Released 9-Mar-2003 * *  Copyright (c) 2001, 2002, 2003 Hovik Melikyan * *  http://www.melikyan.com/ptypes/ *  http://ptypes.sourceforge.net/ * */#include <stdlib.h>#include <string.h>#include <time.h>#include "ptypes.h"#include "pasync.h"	// for atomic increment and decrement#include "ptime.h"      // nowstring is defined in this modulePTYPES_BEGINstatic void stringoverflow() {    fatal(CRIT_FIRST + 21, "String overflow");}const int quant = 64;const int qmask = ~63;const int quant2 = 4096;const int qmask2 = ~4095;int stralloc;char   emptystrbuf[strrecsize + 4];char*  emptystr = emptystrbuf + strrecsize;string nullstring;static int quantize(int numchars) {    int numalloc = numchars + 1 + strrecsize;    if (numalloc <= 16)        return 16;    if (numalloc <= 32)        return 32;    else if (numalloc <= 2048)        return (numalloc + quant - 1) & qmask;    else        return (numalloc + quant2 - 1) & qmask2;}void string::_alloc(int numchars) {    if (numchars <= 0) stringoverflow();    size_t a = quantize(numchars);#ifdef DEBUG    stralloc += a;#endif    data = (char*)(memalloc(a)) + strrecsize;    STR_LENGTH(data) = numchars;    STR_REFCOUNT(data) = 1;    data[numchars] = 0;}void string::_realloc(int numchars) {    if (numchars <= 0 || STR_LENGTH(data) <= 0)        stringoverflow();    int a = quantize(numchars);    int b = quantize(STR_LENGTH(data));    if (a != b)    {#ifdef DEBUG        stralloc += a - b;#endif        data = (char*)(memrealloc(data - strrecsize, a)) + strrecsize;    }    STR_LENGTH(data) = numchars;    data[numchars] = 0;}void string::_free() {#ifdef DEBUG    stralloc -= quantize(STR_LENGTH(data));#endif    memfree((char*)(STR_BASE(data)));    data = emptystr;}void string::initialize(const char* sc, int initlen) {    if (initlen <= 0 || sc == nil)        data = emptystr;     else     {        _alloc(initlen);        memmove(data, sc, initlen);    }}void string::initialize(const char* sc) {    initialize(sc, hstrlen(sc));}void string::initialize(char c) {    _alloc(1);    data[0] = c;}void string::initialize(const string& s){    data = s.data;    pincrement(&STR_REFCOUNT(data));}void string::finalize() {    if (STR_LENGTH(data) != 0)        if (pdecrement(&STR_REFCOUNT(data)) == 0)            _free();    data = emptystr;}/*//// a fatser, single-threaded version of unique()// will be used in the future for the single-threaded version of PTypes// char* unique(string& s) {    if (!isempty(s) && refcount(s) > 1)    {        char* olddata = s.data;        s._alloc(length(s));        memcpy(s.data, olddata, length(s));        STR_REFCOUNT(olddata)--;    }    return s.data;}*/char* unique(string& s) {    if (STR_LENGTH(s.data) != 0)    {        // by incrementing the refcount for this object we "lock" the buffer        // from being concurrently unique'd        // if refcount > 2 it means it was actually > 1 before        if (pincrement(&STR_REFCOUNT(s.data)) > 2)        {            string t;            int len = STR_LENGTH(s.data);            // the refcount is already incremented, so that we can assign the pointer directly            t.data = s.data;            // allocate and copy data            s._alloc(len);            memcpy(s.data, t.data, len);            // we must decrement refcount for t since we detached its buffer 'illegally'            pdecrement(&STR_REFCOUNT(t.data));            // here the destructor for t is being called; the buffer may be freed            // if string buffer was detached concurrently        }        else            // refcount was 1 before incrementing, so we can assign it directly            // instead of costly pdecrement()            STR_REFCOUNT(s.data) = 1;    }    return s.data;}void setlength(string& s, int newlen){    int curlen = length(s);    if (newlen < 0)         return;        // if becoming empty    if (newlen == 0)        s.finalize();        // if otherwise s was empty before    else if (curlen == 0)        s._alloc(newlen);    // if length is not changing, return a unique string    else if (newlen == curlen)        unique(s);    // thread-safe reallocation; see comments in unique()    else    {        if (pincrement(&STR_REFCOUNT(s.data)) > 2)        {            string t;            t.data = s.data;            s._alloc(newlen);            memcpy(s.data, t.data, imin(curlen, newlen));            pdecrement(&STR_REFCOUNT(t.data));        }        else        {            STR_REFCOUNT(s.data) = 1;            s._realloc(newlen);        }    }}void string::assign(const char* sc, int initlen) {    if (STR_LENGTH(data) > 0 && initlen > 0)    {        // thread-safe assignment with possible        // reuse of the buffer        if (pincrement(&STR_REFCOUNT(data)) > 2)        {            string t;            t.data= data;            _alloc(initlen);            memcpy(data, sc, initlen);            pdecrement(&STR_REFCOUNT(t.data));        }        else        {            STR_REFCOUNT(data) = 1;            _realloc(initlen);            memmove(data, sc, initlen);        }    }    else    {        finalize();        if (initlen == 1)            initialize(sc[0]);        else            initialize(sc, initlen);    }}void string::assign(const char* sc) {    assign(sc, hstrlen(sc));}void string::assign(char c) {    assign(&c, 1);}void string::assign(const string& s) {    if (data != s.data)    {        finalize();        initialize(s);    }}string dup(const string& s){    return string(s.data, length(s));}string nowstring(const char* fmt, bool utc){    time_t longtime;    time(&longtime);    tm* t;    if (utc)        t = gmtime(&longtime);    else        t = localtime(&longtime);    char buf[128];    int r = strftime(buf, sizeof(buf), fmt, t);    buf[r] = 0;    return string(buf);}PTYPES_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美浪妇xxxx高跟鞋交| 日本道色综合久久| 亚洲伦在线观看| 天堂va蜜桃一区二区三区漫画版 | 国内不卡的二区三区中文字幕| 91美女片黄在线观看| 国产精品每日更新| 麻豆成人91精品二区三区| 欧美精品国产精品| 麻豆成人在线观看| 日韩一区二区视频在线观看| 亚洲一区二区av在线| 欧美日韩一区二区欧美激情| 亚州成人在线电影| 91精品国产91热久久久做人人| 奇米影视一区二区三区小说| 91精品国产乱码久久蜜臀| 亚洲综合一区二区| 欧美一级精品大片| 国产一区二区日韩精品| 精品国产乱码久久久久久久| 国产综合色产在线精品| 国产欧美一二三区| 成人激情免费视频| 亚洲综合图片区| 欧美一区二区网站| 国产一区欧美日韩| 亚洲男同性恋视频| 91精品国产91久久综合桃花| 日韩在线观看一区二区| 日本欧美肥老太交大片| 成人永久aaa| 亚洲一区二区欧美激情| 亚洲国产精品99久久久久久久久| 欧洲日韩一区二区三区| 国产福利一区二区三区视频| 五月天一区二区三区| 国产精品国产三级国产aⅴ原创 | av激情综合网| 麻豆精品一二三| 亚洲国产欧美日韩另类综合 | 成人av资源在线| 久久精品免费观看| 亚洲第一狼人社区| 国产精品久久久久久一区二区三区| 欧美一级视频精品观看| 欧美系列一区二区| 色诱视频网站一区| caoporm超碰国产精品| 美女视频黄 久久| 亚洲午夜影视影院在线观看| 国产精品久久久久影院亚瑟| 久久久久一区二区三区四区| 国产亚洲1区2区3区| av日韩在线网站| 3atv一区二区三区| 国产成人午夜精品5599| 中文字幕精品综合| 奇米影视一区二区三区| 色久优优欧美色久优优| 日韩专区在线视频| 午夜精品影院在线观看| 免费观看91视频大全| 一区二区三区欧美视频| 国产精品污网站| 欧美激情综合在线| 久久久久国产一区二区三区四区| 精品女同一区二区| 日韩精品一区二区三区视频播放| 欧美一区二区女人| 日韩免费看网站| 日韩欧美的一区二区| 欧美电影免费观看高清完整版在| 91精品国产全国免费观看| 欧美一区永久视频免费观看| 日韩亚洲欧美成人一区| 精品国产乱码久久久久久老虎| 精品少妇一区二区三区免费观看| 精品久久久久久久久久久久久久久| 日韩一区二区三区免费看| 日韩精品影音先锋| 国产日韩欧美综合在线| 国产精品美女久久久久aⅴ | 成人网页在线观看| 成人不卡免费av| 一本到一区二区三区| 日本久久一区二区| 欧美肥妇bbw| 久久精品日产第一区二区三区高清版| 精品国产第一区二区三区观看体验 | 日韩激情av在线| 久久精品国产99| 成人免费电影视频| 欧美丝袜自拍制服另类| 欧美一区二区三区啪啪| 久久免费精品国产久精品久久久久| 欧美国产一区在线| 亚洲图片欧美视频| 精品无人码麻豆乱码1区2区 | 亚洲一区电影777| 男女激情视频一区| 国产精品一区免费在线观看| av电影一区二区| 777午夜精品免费视频| 国产视频一区不卡| 亚洲精品国产a| 蜜桃久久久久久| 97精品久久久午夜一区二区三区| 欧美亚洲免费在线一区| 精品国产91洋老外米糕| 专区另类欧美日韩| 免费观看久久久4p| 99国产欧美久久久精品| 777精品伊人久久久久大香线蕉| 久久精品视频在线免费观看| 亚洲精品日日夜夜| 奇米影视在线99精品| 91猫先生在线| 久久免费午夜影院| 日韩电影在线观看一区| 国产91精品露脸国语对白| 777亚洲妇女| 亚洲欧美经典视频| 国产精品系列在线播放| 欧美情侣在线播放| 日韩理论在线观看| 久久66热偷产精品| 欧美日韩一卡二卡三卡| 国产精品美女久久福利网站| 久久精品国产77777蜜臀| 在线观看日韩电影| 国产精品国产三级国产三级人妇| 麻豆91在线看| 欧美剧情片在线观看| 亚洲精品久久久蜜桃| 不卡区在线中文字幕| 久久综合久久久久88| 免费高清在线一区| 欧美久久久久久蜜桃| 一区二区三区四区亚洲| 不卡一区在线观看| 国产日韩欧美精品综合| 激情亚洲综合在线| 欧美一级日韩一级| 日韩电影免费一区| 欧美性大战xxxxx久久久| 日韩理论片在线| 欧美激情一区二区三区四区| 久久精品国产亚洲aⅴ| 91精品在线麻豆| 日韩不卡免费视频| 欧美久久久影院| 亚洲午夜在线视频| 欧美日韩一区中文字幕| 一区二区免费在线| 在线观看国产精品网站| 亚洲自拍偷拍图区| 欧美亚洲综合另类| 亚洲高清久久久| 欧美日本韩国一区二区三区视频| 亚洲夂夂婷婷色拍ww47| 欧洲精品在线观看| 亚洲国产视频网站| 欧美情侣在线播放| 免费在线观看精品| 精品国产露脸精彩对白| 国产综合久久久久久久久久久久| 久久综合久久综合亚洲| 国产精品一区二区三区四区| 欧美国产日韩精品免费观看| 成人激情黄色小说| 亚洲男人的天堂一区二区| 91成人网在线| 亚洲成人三级小说| 日韩午夜在线观看| 国产福利91精品| 亚洲女与黑人做爰| 欧美日本在线视频| 精品一区二区在线观看| 国产欧美日韩精品在线| 91视频免费观看| 午夜精品久久久| 日韩欧美一区二区免费| 国产很黄免费观看久久| 亚洲人成伊人成综合网小说| 精品婷婷伊人一区三区三| 蜜桃视频一区二区三区| 国产日韩精品一区二区三区| 成人一区二区三区在线观看| 亚洲色欲色欲www| 91精品婷婷国产综合久久性色| 免费高清成人在线| 国产精品国产三级国产| 欧美性猛交xxxxxx富婆| 久草热8精品视频在线观看| 国产精品国产三级国产| 日本高清不卡在线观看| 美女在线观看视频一区二区| 国产精品精品国产色婷婷| 亚洲午夜在线观看视频在线|