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

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

?? rvstdio.c

?? 基于h323協(xié)議的軟phone
?? C
字號(hào):
/************************************************************************
 File Name     : rvstdio.c
 Description   :
************************************************************************
        Copyright (c) 2001 RADVISION Inc. and RADVISION Ltd.
************************************************************************
NOTICE:
This document contains information that is confidential and proprietary
to RADVISION Inc. and RADVISION Ltd.. No part of this document may be
reproduced in any form whatsoever without written prior approval by
RADVISION Inc. or RADVISION Ltd..

RADVISION Inc. and RADVISION Ltd. reserve the right to revise this
publication and make changes without obligation to notify any person of
such revisions or changes.
***********************************************************************/

#include "rvstdio.h"

 /* Lets make error codes a little easier to type */
#define RvStdioErrorCode(_e) RvErrorCode(RV_ERROR_LIBCODE_CCORE, RV_CCORE_MODULE_STDIO, (_e))

/*$
{function:
    {name: RvStdioInit}
    {superpackage: Stdio}
    {description:
        {p: Initializes the stdio module. }
    }
    {proto: RvStatus RvStdioInit(void);}
    {returns: RV_OK if successful, error code if not.}
}
$*/
RvStatus RvStdioInit(void)
{
    RvStatus ret = RV_OK;

    return ret;
}

/*$
{function:
    {name: RvStdioEnd}
    {superpackage: Stdio }
    {description:
        {p: De-initializes the stdio module.}
    }
    {proto: RvStatus RvStdioEnd(void);}
    {returns: RV_OK if successful, error code if not.}
}
$*/
RvStatus RvStdioEnd(void)
{
    RvStatus ret = RV_OK;

    return ret;
}


#if (RV_STDIO_TYPE == RV_STDIO_WINCE_DEBUG)

#define MULTIBYTE_MAX_LENGTH 1024

RVCOREAPI RvInt RVCALLCONV RvOutputDebugPrintf(const RvChar* format, ...)
{
    RvStatus ret = RV_OK;
    va_list arg;
	static RvChar str[MULTIBYTE_MAX_LENGTH];
	static WCHAR strwc[MULTIBYTE_MAX_LENGTH];
	RvInt stringlen;

    va_start(arg, format);
	stringlen = vsprintf(str, format, arg);
    va_end(arg);

	/* We have to convert the (multibyte) string to wide-character-string */		
	MultiByteToWideChar(CP_ACP, 0, str, stringlen, strwc, stringlen);
	strwc[stringlen] = (WCHAR)0;

	OutputDebugString(strwc);
	
    return ret;
}

#endif

/* Standard char operations for old WinCE versions */
#if (RV_OS_TYPE == RV_OS_TYPE_WINCE) && (RV_OS_VERSION == RV_OS_WINCE_2_11)

void CharToWChar(RvChar CharIn, WCHAR * wCharOut)
{
	MultiByteToWideChar(CP_ACP, 0, &CharIn, 1, wCharOut, 1);
}

RVCOREAPI RvInt RVCALLCONV __cdecl isupper(RvInt CharIn)
{
	WCHAR wChar;
	RvChar	c;
	
	c = (RvChar)CharIn;
	CharToWChar(c, &wChar);
	return iswupper(wChar);
}

RVCOREAPI RvInt RVCALLCONV __cdecl islower(RvInt CharIn)
{
	WCHAR wChar;
	RvChar	c;
	
	c = (RvChar)CharIn;
	CharToWChar(c, &wChar);
	return iswlower(wChar);
}

RVCOREAPI RvInt RVCALLCONV __cdecl isspace(RvInt CharIn)
{
	WCHAR wChar;
	RvChar	c;
	
	c = (RvChar)CharIn;
	CharToWChar(c, &wChar);
	return iswspace(wChar);
}

RVCOREAPI RvInt RVCALLCONV __cdecl isdigit(RvInt CharIn)
{
	WCHAR wChar;
	RvChar	c;
	
	c = (RvChar)CharIn;
	CharToWChar(c, &wChar);
	return iswdigit(wChar);
}

RVCOREAPI RvInt RVCALLCONV __cdecl isalnum(RvInt CharIn)
{
	WCHAR wChar;
	RvChar	c;
	
	c = (RvChar)CharIn;
	CharToWChar(c, &wChar);
	return iswalnum(wChar);
}

RVCOREAPI RvSize_t RVCALLCONV __cdecl strspn(const RvChar * s1, const RvChar * s2)
{
	RvChar * srchs2;
	RvInt	len;
	
    for (len = 0; *s1; s1++, len++)
    {
        for (srchs2 = (RvChar *)s2; *srchs2; srchs2++)
            if (*s1 == *srchs2)
                break;
			if (*srchs2 == 0)
				break;
    }
    return len;
}


#endif


#if (RV_STDIO_TYPE == RV_STDIO_STUB)
/**********************************************************************
 * ANSI stdio implementations
 **********************************************************************/

static RvInt RvVfscanf(RvFILE* stream, const RvChar* format, va_list arg);

/*$
{function:
    {name: RvFprintf}
    {superpackage: Stdio}
    {description:
        {p: This function implements an ANSI fprintf style function.}}
    {proto: RvInt RvFprintf(RvFILE* stream, const RvChar* format, ...);}
    {params:
        {param: {n: stream}  {d: The stream to which to write}}
        {param: {n: format}  {d: A fprintf style format string.}}
        {param: {n: ...}     {d: A variable argument list.}}
    }
    {returns: The number of characters written, or negative if an error occured.}
}
$*/
RVCOREAPI RvInt RVCALLCONV RvFprintf(RvFILE* stream, const RvChar* format, ...)
{
    RvInt ret;
    va_list arg;

    va_start(arg, format);
    ret = RvVfprintf(stream, format, arg);
    va_end(arg);

    return ret;
}

/*$
{function:
    {name: RvPrintf}
    {superpackage: Stdio}
    {description:
        {p: This function implements an ANSI printf style function.}}
    {proto: RvInt RvPrintf(const RvChar* format, ...);}
    {params:
        {param: {n: format}  {d: A fprintf style format string.}}
        {param: {n: ...}     {d: A variable argument list.}}
    }
    {returns: The number of characters written, or negative if an error occured.}
}
$*/
RVCOREAPI RvInt RVCALLCONV RvPrintf(const RvChar* format, ...)
{
    RvInt ret;
    va_list arg;

    va_start(arg, format);
    ret = RvVfprintf(RvStdout, format, arg);
    va_end(arg);

    return ret;
}

/*$
{function:
    {name: RvVprintf}
    {superpackage: Stdio}
    {description:
        {p: This function implements an ANSI vprintf style function.}}
    {proto: RvInt RvVprintf(const RvChar* format, va_list arg);}
    {params:
        {param: {n: format}  {d: A fprintf style format string.}}
        {param: {n: arg}     {d: A variable argument list.}}
    }
    {returns: The number of characters written, or negative if an error occured.}
}
$*/
RVCOREAPI RvInt RVCALLCONV RvVprintf(const RvChar* format, va_list arg)
{
    return RvVfprintf(RvStdout, format, arg);
}

/*$
{function:
    {name: RvFscanf}
    {superpackage: Stdio}
    {description:
        {p: This function implements an ANSI fscanf style function.}}
    {proto: RvInt RvFscanf(RvFILE* stream, const RvChar* format, ...);}
    {params:
        {param: {n: stream}  {d: The stream from which to read input.}}
        {param: {n: format}  {d: A sscanf style format string.}}
        {param: {n: ...}     {d: A variable argument list.}}
    }
    {returns: The number input items converted, or RvEOF if an error occured.}
}
$*/
RvInt RvFscanf(RvFILE* stream, const RvChar* format, ...)
{
    RvInt ret;
    va_list arg;

    va_start(arg, format);
    ret = RvVfscanf(stream, format, arg);
    va_end(arg);

    return ret;
}

/*$
{function:
    {name: RvScanf}
    {superpackage: Stdio}
    {description:
        {p: This function implements an ANSI scanf style function.}}
    {proto: RvInt RvScanf(const RvChar* format, ...);}
    {params:
        {param: {n: format}  {d: A sscanf style format string.}}
        {param: {n: ...}     {d: A variable argument list.}}
    }
    {returns: The number input items converted, or RvEOF if an error occured.}
}
$*/
RvInt RvScanf(const RvChar* format, ...)
{
    RvInt ret;
    va_list arg;

    va_start(arg, format);
    ret = RvVfscanf(RvStdout, format, arg);
    va_end(arg);

    return ret;
}


/* Character Input ans Output Functions */
RvInt RvGetchar(void)
{
    return RvGetc(RvStdin);
}

RvInt RvPutchar(RvInt c)
{
    return RvPutc(c,RvStdout);
}

/**********************************************************************
 * ANSI stdio stubs that do nothing
 **********************************************************************/

/*$
{function:
    {name: RvFopen}
    {superpackage: Stdio}
    {description:
        {p: This function implements an ANSI fopen style function.}}
    {proto: RvFILE* RvFopen(const RvChar* filename, const RvChar* mode);}
    {params:
        {param: {n: filename}  {d: The name of the file to open}}
        {param: {n: mode}      {d: The mode in which to open the file.}}
    }
    {returns: A handle to the opened file stream, or NULL if an error occured.}
}
$*/
RvFILE* RvFopen(const RvChar* filename, const RvChar* mode)
{
    return NULL;
}

RvFILE* RvFreopen(const RvChar* filename, const RvChar* mode, RvFILE* stream)
{
    return NULL;
}

RvInt RvFlush(RvFILE* stream)
{
    return RvEOF;
}

/*$
{function:
    {name: RvFclose}
    {superpackage: Stdio}
    {description:
        {p: This function implements an ANSI fclose style function.}}
    {proto: RvInt RvFclose(RvFILE* stream);}
    {params:
        {param: {n: stream}  {d: The handle to the file stream to close}}
    }
    {returns: Zero if successful, or RvEOF if an error occured.}
}
$*/
RvInt RvFclose(RvFILE* stream)
{
    return RvEOF;
}

RvInt RvRemove(const RvChar* filename)
{
    return -1;
}

RvInt RvRename(const RvChar* oldname, const RvChar* newname)
{
    return -1;
}

RvFILE* RvTmpfile(void)
{
    return NULL;
}

RvChar* RvTmpnam(RvChar s[RvL_tmpnam])
{
    return NULL;
}

RvInt RvSetvbuf(RvFILE stream, RvChar* buf, RvInt mode, RvSize_t size)
{
    return -1;
}

void RvSetbuf(RvFILE stream, RvChar* buf)
{
}

/*$
{function:
    {name: RvVfprintf}
    {superpackage: Stdio}
    {description:
        {p: This function implements an ANSI vfprintf style function.}}
    {proto: RvInt RvVfprintf(RvFILE* stream, const RvChar* format, va_list arg);}
    {params:
        {param: {n: stream}  {d: The stream to which to write}}
        {param: {n: format}  {d: A vfprintf style format string.}}
        {param: {n: arg}     {d: A variable argument list.}}
    }
    {returns: The number of characters written, or negative if an error occured.}
}
$*/
RVCOREAPI RvInt RVCALLCONV RvVfprintf(RvFILE* stream, const RvChar* format, va_list arg)
{
    return -1;
}

/* Non-Ansi Formatted Input */
static RvInt RvVfscanf(RvFILE* stream, const RvChar* format, va_list arg)
{
    return -1;
}


/* Character Input ans Output Functions */
RvInt RvFgetc(RvFILE* stream)
{
    return RvEOF;
}

RvChar* RvFgets(RvChar* s, RvInt n, RvFILE* stream)
{
    return NULL;
}

RvInt RvFputc(RvInt c, RvFILE* stream)
{
    return RvEOF;
}

RvInt RvFputs(const RvChar* s, RvFILE* stream)
{
    return RvEOF;
}

RvInt RvGetc(RvFILE* stream)
{
    return RvEOF;
}

RvChar* RvGets(RvChar* s)
{
    return NULL;
}

RvInt RvPutc(RvInt c, RvFILE* stream)
{
    return RvEOF;
}

RvInt RvPuts(const RvChar* s, RvFILE* stream)
{
    return RvEOF;
}

RvInt RvUngetc(RvInt c, RvFILE* stream)
{
    return RvEOF;
}

/* Direct Input and Output Functions */
RvSize_t RvFread(void* ptr, RvSize_t size, RvSize_t nobj, RvFILE* stream)
{
    return 0;
}

RvSize_t RvFwrite(const void* ptr, RvSize_t size, RvSize_t nobj, RvFILE* stream)
{
    return 0;
}

/* File Positioning Functions */
RvInt RvFseek(RvFILE* stream, long offset, RvInt origin)
{
    return -1;
}

long RvFtell(RvFILE* stream)
{
    return -1L;
}

void RvRewind(RvFILE* stream)
{
}

RvInt RvFgetpos(RvFILE* stream, RvFpos_t* ptr)
{
    return -1;
}

RvInt RvFsetpos(RvFILE* stream, const RvFpos_t* ptr)
{
    return -1;
}

/* Error Functions */
void RvClearerror(RvFILE* stream)
{
}

RvInt RvFeof(RvFILE* stream)
{
    return -1;
}

RvInt RvFerror(RvFILE* stream)
{
    return -1;
}

void RvPerror(const RvChar* s)
{
}

#endif  /* (RV_STDIO_TYPE == RV_STDIO_STUB) */




/* Binary search function */
RVCOREAPI void* RVCALLCONV RvBsearch(
    const void*     key,
    const void*     base,
    RvSize_t        numOfElements,
    RvSize_t        elementSize,
    RvInt (*compareFunc)(const void* key, const void* ))
{
    RvUint8 *lo = (RvUint8 *)base;
    RvUint8 *hi = (RvUint8 *)base + (numOfElements - 1) * elementSize;
    RvUint8 *mid;
    unsigned int half;
    int result;

    while (lo <= hi)
    {
        half = numOfElements / 2;
        if (half)
        {
            mid = lo + (numOfElements & 1 ? half : (half - 1)) * elementSize;
            result = (*compareFunc)(key,mid);
            if (!result)
                return(mid);
            else if (result < 0)
            {
                hi = mid - elementSize;
                numOfElements = numOfElements & 1 ? half : half-1;
            }
            else
            {
                lo = mid + elementSize;
                numOfElements = half;
            }
        }
        else if (numOfElements)
            return((*compareFunc)(key,lo) ? NULL : lo);
        else
            break;
    }

    return NULL;
}


/* 64bit arithmetic operations */
#if (RV_OS_TYPE == RV_OS_TYPE_PSOS) && (RV_OS_VERSION == RV_OS_PSOS_2_0)

#define get64MSB( a ) ((RvInt32)((a >> 16) >> 16))
#define get64LSB( a ) ((RvInt32)(a & 0x00000000ffffffff))
#define set64MSB( a ) ((RvInt64)(((a << 16) << 16) & 0xffffffff00000000))

RVCOREAPI RvInt64 RVCALLCONV Rv64Multiply(RvInt64 num1, RvInt64 num2)
{
    RvInt64 result;
    RvUint32 num1MSB = get64MSB( num1 );
    RvUint32 num1LSB = get64LSB( num1 );
    RvUint32 num2MSB = get64MSB( num2 );
    RvUint32 num2LSB = get64LSB( num2 );

/* Basically the product of 2 64bit number is a 128bit number...
   but, nevermind the overflow ... */
    /* overflow = set128MSB(num1MSB * num2MSB) */
    result = set64MSB( (num1MSB * num2LSB) + (num2MSB * num1LSB) ) + (num1LSB * num2MSB); /* +overflow */

    return result;
}


RVCOREAPI RvInt32 RVCALLCONV Rv64Modulu(RvInt64 num1, RvInt64 num2)
{
    ldiv_t lres;
    lres = ldiv(num1, num2);
    return (RvInt32)lres.rem;
}


RVCOREAPI RvInt64 RVCALLCONV Rv64Divide(RvInt64 num1, RvInt64 num2)
{
    ldiv_t lres;
    lres = ldiv(num1, num2);
    return (RvInt64)lres.quot;
}

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩国产精品大片| 99国产精品99久久久久久| 五月激情六月综合| 亚洲图片欧美一区| 一区二区三区精品视频| 亚洲少妇最新在线视频| 亚洲人快播电影网| 夜色激情一区二区| 视频一区二区三区入口| 石原莉奈在线亚洲二区| 日韩国产欧美在线播放| 麻豆高清免费国产一区| 美女一区二区在线观看| 久久精品国产久精国产爱| 精品在线你懂的| 国产精品一二三在| 成人av在线影院| 色婷婷av久久久久久久| 欧美性感一区二区三区| 777欧美精品| 久久综合色综合88| 国产精品久线在线观看| 亚洲码国产岛国毛片在线| 亚洲国产中文字幕在线视频综合 | 奇米影视在线99精品| 免费高清视频精品| 国产露脸91国语对白| 99国产精品久久久| 欧美日韩日本视频| 2024国产精品| 亚洲欧美国产高清| 天堂影院一区二区| 国产精品一区一区三区| 99国产精品久久| 7799精品视频| 欧美国产精品专区| 夜色激情一区二区| 狠狠色丁香九九婷婷综合五月| 不卡的av电影在线观看| 精品视频在线视频| 国产日韩欧美精品在线| 亚洲国产视频一区二区| 国产一区二区女| 91麻豆国产福利精品| 欧美精品 国产精品| 国产午夜精品久久| 亚洲一卡二卡三卡四卡五卡| 狠狠狠色丁香婷婷综合激情| 一本色道久久加勒比精品| 日韩一区二区三区电影在线观看 | 国产高清久久久| 欧洲色大大久久| 久久人人97超碰com| 亚洲欧美国产三级| 黑人巨大精品欧美黑白配亚洲| 99久久免费视频.com| 日韩欧美电影一二三| 亚洲精品福利视频网站| 激情综合一区二区三区| 一本大道久久精品懂色aⅴ| 欧美v亚洲v综合ⅴ国产v| 亚洲黄色小视频| 国产成人精品免费在线| 欧美日韩亚洲综合在线 | 精品欧美乱码久久久久久1区2区| 国产精品久久午夜夜伦鲁鲁| 免费日本视频一区| 在线视频综合导航| 国产日产欧美一区二区三区| 日韩电影在线看| 91在线观看高清| 久久精品夜色噜噜亚洲aⅴ| 午夜电影网一区| 91社区在线播放| 国产欧美一区二区三区鸳鸯浴| 日韩精彩视频在线观看| 日本韩国欧美一区| 国产精品免费av| 国产精品18久久久久久久网站| 欧美日韩一区三区| 亚洲精品欧美激情| 91丨九色丨国产丨porny| 久久久久久久久蜜桃| 久久电影国产免费久久电影| 欧美疯狂做受xxxx富婆| 一区二区三区四区乱视频| www.激情成人| 欧美国产一区二区在线观看 | 欧美一区二区网站| 亚洲福利电影网| 在线影院国内精品| 自拍偷拍亚洲激情| 99久久er热在这里只有精品15 | 日本三级亚洲精品| 欧美日本国产一区| 亚洲va欧美va天堂v国产综合| 一本色道久久加勒比精品| 亚洲欧美怡红院| 91啪在线观看| 亚洲日本在线a| 色综合欧美在线| 亚洲综合在线免费观看| 在线观看91精品国产入口| 亚洲国产一区二区在线播放| 欧美性感一区二区三区| 亚洲午夜av在线| 制服.丝袜.亚洲.中文.综合| 日本美女一区二区三区视频| 欧美一区日韩一区| 久草在线在线精品观看| 亚洲精品在线网站| 国产成人综合网| 国产精品久久久久三级| 91麻豆国产福利在线观看| 亚洲综合精品久久| 欧美精品丝袜久久久中文字幕| 丝袜美腿亚洲色图| 日韩欧美国产电影| 国产精品伊人色| 成人欧美一区二区三区视频网页| 色综合久久久久综合体桃花网| 一区二区三区在线影院| 69堂亚洲精品首页| 国产一区不卡在线| 亚洲欧洲美洲综合色网| 欧美色精品天天在线观看视频| 婷婷综合另类小说色区| 精品久久久久久最新网址| 国产激情视频一区二区在线观看 | 99久久精品国产观看| 亚洲一区成人在线| 欧美大尺度电影在线| 国产成人av资源| 亚洲精品视频一区二区| 69堂亚洲精品首页| 成人午夜电影小说| 亚洲成人动漫一区| 国产亚洲欧美日韩俺去了| 色综合久久综合网97色综合| 秋霞影院一区二区| 国产精品剧情在线亚洲| 欧美日韩精品高清| 国产福利一区二区| 亚洲国产综合人成综合网站| 精品乱人伦小说| 色综合天天综合网天天看片| 日产欧产美韩系列久久99| 国产欧美日产一区| 欧美日韩精品电影| 成人午夜av影视| 日韩精品视频网站| 国产精品欧美久久久久一区二区| 欧美日韩免费不卡视频一区二区三区| 久草精品在线观看| 亚洲精品国产一区二区三区四区在线 | 午夜精品视频在线观看| 久久久综合激的五月天| 欧美三级电影网站| 国产美女精品在线| 午夜久久久久久久久久一区二区| 久久久久久久综合色一本| 色狠狠av一区二区三区| 国产精品456露脸| 天堂一区二区在线| 亚洲三级免费观看| 国产亚洲一区二区三区在线观看 | 中文字幕日韩欧美一区二区三区| 欧美精选一区二区| 色综合久久99| 成人免费视频视频在线观看免费 | 亚洲va国产va欧美va观看| 欧美国产日本视频| 精品少妇一区二区三区免费观看 | 中文字幕第一区| 日韩欧美一卡二卡| 欧美日韩在线三区| 99久久综合国产精品| 国产一区二区三区高清播放| 首页综合国产亚洲丝袜| 亚洲天堂2016| 中文字幕一区二区三区视频| 精品黑人一区二区三区久久| 欧美乱熟臀69xxxxxx| 色婷婷综合激情| 白白色 亚洲乱淫| 国产a级毛片一区| 国产在线一区二区| 毛片不卡一区二区| 天天综合天天综合色| 亚洲一二三区在线观看| 中文字幕亚洲区| 日本一区二区三区在线不卡| 久久色中文字幕| 精品欧美一区二区在线观看| 日韩亚洲欧美中文三级| 欧美一区二区三区在| 欧美人与禽zozo性伦| 欧美日韩精品一区二区| 欧美中文字幕一二三区视频| 色爱区综合激月婷婷|