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

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

?? iniclr.c

?? 一個OPC服務器開發的源代碼。結構清晰
?? C
字號:
/**************************************************************************
 *                                                                        *
 * Light OPC Server development library                                   *
 *                                                                        *
 *   Copyright (c) 2000  Timofei Bondarenko                               *
                                                                          *
 init & cleanup utils for various loService components
 **************************************************************************/

#include "loserv.h"
#include "reqqueue.h"
#include "util.h"

#if !defined(__cplusplus) && defined(__GNUC__) && __GNUC__ < 3
#error Force the gcc to C++ mode by -xc++ option or use gcc v3.1+.
/*Perhaps this gcc can't compile OLE VARIANT datatype properly. */
#endif
/**************************************************************************/

void loTagValue_clear(loTagValue *tv, unsigned nn)
{
 if (tv)
   {
    loTagValue *stop;
    for(stop = tv + nn; tv < stop; tv++)
      {
       VariantClear(&tv->tvValue);
       tv->tvTi = 0;
      }
   }
}

void loTagDetail_free(loTagDetail *td)
{
 if (td)
   {
    VariantClear(&td->tdValue);
    VariantClear(&td->tdEUinfo);
    freeX(td);
   }
}

#define loTagAttrib_CLEAR_ONE(ta)                                     \
{                                                                     \
      if (ta->taFlags & loTt_DETAILS) loTagDetail_free(ta->taDetail); \
      else if (ta->taName) freeX(ta->taName);                         \
      ta->taDetail = 0;                                               \
      ta->taName = 0;                                                 \
      ta->taTi = 0;                                                   \
      ta->taFlags = 0; /* clear loTt_VISIBLE + loTt_DETAILS */        \
/*    ta->taRt = 0;*/                                                 \
}

void loTagAttrib_clear(loTagAttrib *ta, unsigned nn)
{
 if (ta)
   {
    loTagAttrib *stop;
    for(stop = ta + nn; ta < stop; ta++)
      loTagAttrib_CLEAR_ONE(ta);
   }
}

void loTagAttrib_clear_step(loTagAttrib *ta, unsigned nn, unsigned step)
{
 if (ta)
   while(nn--)
     {
      loTagAttrib_CLEAR_ONE(ta);
#if defined(__cplusplus) && defined(_MSC_VER) /*&& _MSC_VER <= 1200*/
      ta = (loTagAttrib*)(((char*)ta) + step);
#else
      ((char*)ta) += step;
#endif
     }
}

void loTagEntry_clear(loTagEntry *te, unsigned nn)
{
 if (te)
   {
    loTagEntry *stop;
    loTagAttrib_clear_step(&te->attr, nn, sizeof(*te));
    for(stop = te + nn; te < stop; te++)
      VariantClear(&te->primValue);
   }
}

void loVariant_clear(VARIANT *va, unsigned nn)
{
 if (va)
   {
    VARIANT *vv = va + nn;
    while(vv > va) VariantClear(--vv);
   }
}

void loStringBuf_clear(loStringBuf *sb)
{
 if (sb->sb_str) freeX(sb->sb_str);
 loStringBuf_init(sb);
}

unsigned loStringBuf_realloc(loStringBuf *sb, unsigned size)
{
 if (sb->sb_size < size)
   {
    unsigned sizep = (size + 31) & ~0x0f;
    void *nptr;
    if (!(nptr = reallocX(sb->sb_str, sizeof(loWchar) *  sizep)) &&
        !(nptr = reallocX(sb->sb_str, sizeof(loWchar) * (sizep = size))))
      return 0;
    sb->sb_str = (loWchar*)nptr;
    return sb->sb_size = sizep;
   }
 return sb->sb_size;
}

#if LO_INIT_VARIANT

void loTagValue_init(loTagValue *tv, unsigned nn)
{
 if (tv)
   while(nn--)
     {
      VARIANTINIT(&tv->tvValue);
      tv->tvTi = 0;
      memset(&tv->tvState.tsTime, 0, sizeof(tv->tvState.tsTime));
      tv++;
     }
}

void loTagDetail_init(loTagDetail *td)
{
 if (td)
   {
    VARIANTINIT(&td->tdValue);
    VARIANTINIT(&td->tdEUinfo);
    td->tdEUtype = 0;
   }
}

void loTagAttrib_init(loTagAttrib *ta, unsigned nn)
{
 if (ta)
   while(nn--)
     {
      ta->taDetail = 0;
      ta->taName = 0;
      ta->taTi = 0;
      ta->taFlags = 0; /* clear loTt_VISIBLE + loTt_DETAILS */
      memset(ta->taPropList, 0, sizeof(ta->taPropList));
#if 0 == LO_RANGECENT_DETAIL
      ta->taRangecent = 0.;
#endif
/*    ta->taRt = 0;*/
      ta++;
     }
}

void loTagEntry_init(loTagEntry *te, unsigned nn)
{
 if (te)
   while(nn--)
     {
      loTagAttrib_init(&te->attr, 1);
      VARIANTINIT(&te->primValue);
      memset(&te->prim.tsTime, 0, sizeof(te->prim.tsTime));
      te->primChanged = 0;
      te->active = 0;
      te++;
     }
}

void loVariant_init(VARIANT *va, unsigned nn)
{
 if (va)
   while(nn--) VARIANTINIT(va), va++;
}

#endif /*LO_INIT_VARIANT*/
/**************************************************************************/

void lo_upl_clear(loUpdList *upl)
{
 int content = upl->content;
 if (upl->variant)
   {
    if (content & loUPL_variant)
      loVariant_clear(upl->variant, upl->count);
    freeX(upl->variant);
    upl->count = 0;
    upl->variant = 0;
   }
 lo_upl_init(upl, content);
}

static unsigned upl_itemsize(int content)
{
#if 1
 unsigned size = 0;
 if (content)
   {
    if (content & loUPL_variant)   size += sizeof(VARIANT);
    if (content & loUPL_tagpair)   size += sizeof(loTagPair);
    if (content & loUPL_timestamp) size += sizeof(FILETIME);
    if (content & loUPL_opchandle) size += sizeof(OPCHANDLE);
    if (content & loUPL_errors)   size += sizeof(HRESULT);
    if (content & loUPL_vartype)   size += sizeof(VARTYPE);
    if (content & loUPL_quality)   size += sizeof(WORD);
   }
 return size;
#else
 switch(content)
   {
 case loUPL_DataChange:
    return sizeof(OPCHANDLE) + sizeof(HRESULT) +
           sizeof(VARIANT) + sizeof(FILETIME) + sizeof(WORD);

 case loUPL_SyncRead:
    return sizeof(loTagPair) + sizeof(VARTYPE);
           sizeof(VARIANT) + sizeof(FILETIME) + sizeof(WORD);
   }
 return 0;
#endif
}

static void upl_init(loUpdList *upl, unsigned count)
{
 int content = upl->content;
 void *next = upl->variant;
 /* the order is significant! */
 if (content & loUPL_variant)
   {
    loVariant_init(upl->variant + upl->count, count - upl->count);
    next = &upl->variant[count];
   }
 upl->count = count;
 if (content & loUPL_tagpair)
   upl->tagpair = (loTagPair*)next, next = &upl->tagpair[count];
 if (content & loUPL_timestamp)
   upl->timestamp = (FILETIME*)next, next = &upl->timestamp[count];
 if (content & loUPL_opchandle)
   upl->opchandle = (OPCHANDLE*)next, next = &upl->opchandle[count];
 if (content & loUPL_errors)
   upl->errors = (HRESULT*)next, next = &upl->errors[count];
 if (content & loUPL_vartype)
   upl->vartype = (VARTYPE*)next, next = &upl->vartype[count];
 if (content & loUPL_quality)
   upl->quality = (WORD*)next;
}

int lo_upl_grow(loUpdList *upl, unsigned count)
{
 if (count > upl->count)
   {
    if (preallocX((void**)&upl->variant, count * upl_itemsize(upl->content)))
      {
       upl_init(upl, count);
      }
    else return -1;
   }
 return 0;
}

loRequest *lo_req_alloc(unsigned count, int content)
{
 loRequest *rq;

 if (rq = (loRequest*)mallocX(sizeof(loRequest) +
                             (count? count * upl_itemsize(content): 0)))
   {
    memset(rq, 0, sizeof(loRequest));
    if (count)
      {
       rq->upl.content = content;
       rq->upl.variant = (VARIANT*)&rq[1];
       upl_init(&rq->upl, count);
      }
   }
 return rq;
}


void lo_req_free(loRequest *rq)
{
 if (rq)
   {
    if (rq->upl.content & loUPL_variant)
      loVariant_clear(rq->upl.variant, rq->upl.count);
    if (rq->com_allocated)
      loComFree(rq->com_allocated), rq->com_allocated = 0;
#if LO_USE_BOTHMODEL
    if (rq->conn_stream) lo_release_stream(&rq->conn_stream, rq->conn_iface);
#endif
    freeX(rq);
   }
}

/**************************************************************************/

/* end of iniclr.c */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品第一国产综合野| hitomi一区二区三区精品| 国产一区二区三区在线看麻豆| 粉嫩嫩av羞羞动漫久久久| 在线成人免费视频| 亚洲精品成人在线| 国产成人精品一区二区三区四区 | 精品一区二区三区影院在线午夜| heyzo一本久久综合| 精品福利二区三区| 日韩成人免费在线| 在线免费观看日韩欧美| 日本一区二区三区四区在线视频| 裸体歌舞表演一区二区| 欧美精品一级二级| 亚洲影视在线播放| 色综合夜色一区| 自拍视频在线观看一区二区| 国产另类ts人妖一区二区| 欧美成人bangbros| 欧美96一区二区免费视频| 欧美色涩在线第一页| 亚洲乱码日产精品bd| 成人av高清在线| 国产精品伦一区二区三级视频| 精品制服美女丁香| 精品国产a毛片| 精品在线观看免费| 2020国产精品久久精品美国| 奇米精品一区二区三区在线观看 | 国产九色精品成人porny| 欧美一级生活片| 日韩国产欧美一区二区三区| 777亚洲妇女| 免费高清视频精品| 制服丝袜亚洲色图| 奇米影视一区二区三区小说| 日韩亚洲欧美在线观看| 欧美aa在线视频| 久久久久久综合| 高清在线成人网| 亚洲欧美另类小说视频| 色综合久久中文综合久久牛| 亚洲综合色噜噜狠狠| 欧美日韩国产一级二级| 日本少妇一区二区| 久久噜噜亚洲综合| 99久久综合国产精品| 亚洲精品伦理在线| 欧美一区二区三区在线电影 | av亚洲精华国产精华精华| 国产精品麻豆久久久| 在线日韩av片| 免费人成精品欧美精品| 日本一区二区成人| 在线观看亚洲a| 国内成人免费视频| 1024成人网色www| 欧美日韩精品久久久| 精品一区二区三区视频| 亚洲欧美日韩系列| 欧美一区二区在线免费观看| 国产精品99久久久久久久女警| 亚洲欧洲国产日本综合| 欧美日韩国产首页在线观看| 久久精品av麻豆的观看方式| 国产精品全国免费观看高清| 欧美日韩www| 国产精品白丝av| 一区二区三区欧美激情| 精品国产免费视频| 一本色道久久综合精品竹菊| 久久精品国产网站| 亚洲精品久久7777| 精品国产乱码久久久久久老虎 | 激情综合网激情| 亚洲男同1069视频| 久久人人爽爽爽人久久久| 欧美伊人久久久久久久久影院 | 日韩精品三区四区| 中文字幕一区二区三区四区不卡| 欧美久久久久久久久| av午夜精品一区二区三区| 日本不卡一区二区| 亚洲美女免费视频| 久久久午夜精品理论片中文字幕| 在线免费观看成人短视频| 国产伦精品一区二区三区免费迷 | 五月天国产精品| 国产精品福利一区| 久久婷婷综合激情| 欧美一区二区精品| 欧美性生活久久| 99re热视频这里只精品| 国产sm精品调教视频网站| 蜜臀av国产精品久久久久 | 美日韩一级片在线观看| 亚洲国产另类精品专区| 亚洲视频一区二区在线| 国产精品青草久久| 久久久久久久久免费| 日韩亚洲欧美高清| 欧美久久久一区| 欧美精品久久一区| 欧美日韩精品综合在线| 在线观看日韩精品| 在线免费观看日韩欧美| 在线观看91精品国产入口| a在线欧美一区| 99re6这里只有精品视频在线观看| 国产乱色国产精品免费视频| 韩国中文字幕2020精品| 激情综合网激情| 国产麻豆一精品一av一免费| 国产精品一区在线观看你懂的| 狠狠色丁香婷综合久久| 激情欧美日韩一区二区| 国产麻豆精品视频| 成人免费视频视频在线观看免费 | 午夜精品福利在线| 天堂一区二区在线| 免费一区二区视频| 久久精品72免费观看| 国产原创一区二区三区| 韩国一区二区三区| 成人黄色一级视频| 色av综合在线| 91精品午夜视频| 精品99一区二区| 国产午夜精品久久久久久免费视| 国产亚洲1区2区3区| 国产精品成人在线观看| 亚洲一区欧美一区| 日本欧美一区二区三区乱码| 久久99久久99| 成人成人成人在线视频| 欧美视频一二三区| 久久久美女艺术照精彩视频福利播放| 日本一区二区免费在线| 一区二区三区四区五区视频在线观看 | 亚洲美女淫视频| 人人狠狠综合久久亚洲| 国产成人av电影在线| 成人黄色av网站在线| 91福利视频久久久久| 欧美成人精精品一区二区频| 中文字幕av一区二区三区免费看| 尤物在线观看一区| 毛片av一区二区三区| av网站一区二区三区| 91精品午夜视频| 国产精品久久精品日日| 亚洲成人av免费| jlzzjlzz欧美大全| 91精品国产全国免费观看| 久久精品视频一区二区| 亚洲国产aⅴ天堂久久| 精品一区二区三区在线播放 | 91精品国产欧美一区二区成人| 久久久久9999亚洲精品| 亚洲一区二区成人在线观看| 久久国产尿小便嘘嘘尿| 91黄色在线观看| 国产拍揄自揄精品视频麻豆| 亚洲国产成人av网| 福利一区在线观看| 4438x亚洲最大成人网| 中文字幕日韩一区| 精品一区二区三区日韩| 欧美性一二三区| 国产精品久久久久久久久久久免费看| 秋霞影院一区二区| 色欲综合视频天天天| 国产人成一区二区三区影院| 日韩中文欧美在线| 在线看不卡av| 亚洲欧美中日韩| 国产福利一区二区三区视频| 日韩网站在线看片你懂的| 夜夜爽夜夜爽精品视频| 不卡的看片网站| 国产日韩欧美不卡在线| 捆绑紧缚一区二区三区视频| 欧美美女黄视频| 亚洲一区二区四区蜜桃| 成人精品视频一区| 久久久精品免费网站| 国产专区综合网| 日韩欧美在线影院| 日本最新不卡在线| 欧美精品一卡二卡| 青青青爽久久午夜综合久久午夜| 欧美日韩另类一区| 亚洲国产日韩综合久久精品| 色先锋久久av资源部| 亚洲夂夂婷婷色拍ww47| 色妞www精品视频| 亚洲精品欧美激情| 欧美三级视频在线播放| 亚洲永久精品大片|