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

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

?? cpl_conv.cpp

?? mitab,讀取MapInfo的地圖文件
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
#endif

    return CPLPrintString( pszBuffer, szTemp, nMaxLen );
}

/************************************************************************/
/*                          CPLPrintPointer()                           */
/************************************************************************/

/**
 * Print pointer value into specified string buffer. This string will not
 * be NULL-terminated.
 *
 * @param Pointer to the destination string buffer. Should be
 * large enough to hold the resulting string. Note, that the string will
 * not be NULL-terminated, so user should do this himself, if needed.
 *
 * @param pValue Pointer to ASCII encode.
 * 
 * @param nMaxLen Maximum length of the resulting string. If string length
 * is greater than nMaxLen, it will be truncated.
 * 
 * @return Number of characters printed.
 */

int CPLPrintPointer( char *pszBuffer, void *pValue, int nMaxLen )
{
    char    szTemp[64];

    if ( !pszBuffer )
        return 0;

    if ( nMaxLen >= 64 )
        nMaxLen = 63;

    sprintf( szTemp, "%p", pValue );

    // On windows, and possibly some other platforms the sprintf("%p")
    // does not prefix things with 0x so it is hard to know later if the
    // value is hex encoded.  Fix this up here. 

    if( !EQUALN(szTemp,"0x",2) )
        sprintf( szTemp, "0x%p", pValue );

    return CPLPrintString( pszBuffer, szTemp, nMaxLen );
}

/************************************************************************/
/*                          CPLPrintDouble()                            */
/************************************************************************/

/**
 * Print double value into specified string buffer. Exponential character
 * flag 'E' (or 'e') will be replaced with 'D', as in Fortran. Resulting
 * string will not to be NULL-terminated.
 *
 * @param Pointer to the destination string buffer. Should be
 * large enough to hold the resulting string. Note, that the string will
 * not be NULL-terminated, so user should do this himself, if needed.
 *
 * @param Format specifier (for example, "%16.9E").
 *
 * @param dfValue Numerical value to print.
 * 
 * @param pszLocale Pointer to a character string containing locale name
 * ("C", "POSIX", "us_US", "ru_RU.KOI8-R" etc.). If NULL we will not
 * manipulate with locale settings and current process locale will be used for
 * printing. With the pszLocale option we can control what exact locale
 * will be used for printing a numeric value to the string (in most cases
 * it should be C/POSIX).
 *
 * @return Number of characters printed.
 */

int CPLPrintDouble( char *pszBuffer, const char *pszFormat,
                    double dfValue, char *pszLocale )
{

#define DOUBLE_BUFFER_SIZE 64

    char    szTemp[DOUBLE_BUFFER_SIZE];
    int     i;

    if ( !pszBuffer )
        return 0;

#if defined(HAVE_LOCALE_H) && defined(HAVE_SETLOCALE)
    char        *pszCurLocale = NULL;

    if ( pszLocale || EQUAL( pszLocale, "" ) )
    {
        // Save the current locale
        pszCurLocale = setlocale(LC_ALL, NULL );
        // Set locale to the specified value
        setlocale( LC_ALL, pszLocale );
    }
#endif

#if defined(HAVE_SNPRINTF)
    snprintf( szTemp, DOUBLE_BUFFER_SIZE, pszFormat, dfValue );
#else
    sprintf( szTemp, pszFormat, dfValue );
#endif
    szTemp[DOUBLE_BUFFER_SIZE - 1] = '\0';

    for( i = 0; szTemp[i] != '\0'; i++ )
    {
        if( szTemp[i] == 'E' || szTemp[i] == 'e' )
            szTemp[i] = 'D';
    }

#if defined(HAVE_LOCALE_H) && defined(HAVE_SETLOCALE)
    // Restore stored locale back
    if ( pszCurLocale )
        setlocale( LC_ALL, pszCurLocale );
#endif

    return CPLPrintString( pszBuffer, szTemp, 64 );

#undef DOUBLE_BUFFER_SIZE

}

/************************************************************************/
/*                            CPLPrintTime()                            */
/************************************************************************/

/**
 * Print specified time value accordingly to the format options and
 * specified locale name. This function does following:
 * 
 *  - if locale parameter is not NULL, the current locale setting will be
 *  stored and replaced with the specified one;
 *  - format time value with the strftime(3) function;
 *  - restore back current locale, if was saved.
 * 
 * @param pszBuffer Pointer to the destination string buffer. Should be
 * large enough to hold the resulting string. Note, that the string will
 * not be NULL-terminated, so user should do this himself, if needed.
 *
 * @param nMaxLen Maximum length of the resulting string. If string length is
 * greater than nMaxLen, it will be truncated.
 * 
 * @param pszFormat Controls the output format. Options are the same as
 * for strftime(3) function.
 *
 * @param poBrokenTime Pointer to the broken-down time structure. May be
 * requested with the VSIGMTime() and VSILocalTime() functions.
 *
 * @param pszLocale Pointer to a character string containing locale name
 * ("C", "POSIX", "us_US", "ru_RU.KOI8-R" etc.). If NULL we will not
 * manipulate with locale settings and current process locale will be used for
 * printing. Be aware that it may be unsuitable to use current locale for
 * printing time, because all names will be printed in your native language,
 * as well as time format settings also may be ajusted differently from the
 * C/POSIX defaults. To solve these problems this option was introdiced.
 *
 * @return Number of characters printed.
 */

#ifndef WIN32CE /* XXX - mloskot - strftime is not available yet. */

int CPLPrintTime( char *pszBuffer, int nMaxLen, const char *pszFormat,
                  const struct tm *poBrokenTime, char *pszLocale )
{
    char    *pszTemp = (char *)CPLMalloc( (nMaxLen + 1) * sizeof(char) );
    int     nChars;

#if defined(HAVE_LOCALE_H) && defined(HAVE_SETLOCALE)
    char        *pszCurLocale = NULL;

    if ( pszLocale || EQUAL( pszLocale, "" ) )
    {
        // Save the current locale
        pszCurLocale = setlocale(LC_ALL, NULL );
        // Set locale to the specified value
        setlocale( LC_ALL, pszLocale );
    }
#endif
    
    if ( !strftime( pszTemp, nMaxLen + 1, pszFormat, poBrokenTime ) )
        memset( pszTemp, 0, nMaxLen + 1);

#if defined(HAVE_LOCALE_H) && defined(HAVE_SETLOCALE)
    // Restore stored locale back
    if ( pszCurLocale )
        setlocale( LC_ALL, pszCurLocale );
#endif

    nChars = CPLPrintString( pszBuffer, pszTemp, nMaxLen );

    CPLFree( pszTemp );

    return nChars;
}

#endif

/************************************************************************/
/*                       CPLVerifyConfiguration()                       */
/************************************************************************/

void CPLVerifyConfiguration()

{
/* -------------------------------------------------------------------- */
/*      Verify data types.                                              */
/* -------------------------------------------------------------------- */
    CPLAssert( sizeof(GInt32) == 4 );
    CPLAssert( sizeof(GInt16) == 2 );
    CPLAssert( sizeof(GByte) == 1 );

    if( sizeof(GInt32) != 4 )
        CPLError( CE_Fatal, CPLE_AppDefined, 
                  "sizeof(GInt32) == %d ... yow!\n", 
                  sizeof(GInt32) );

/* -------------------------------------------------------------------- */
/*      Verify byte order                                               */
/* -------------------------------------------------------------------- */
    GInt32   nTest;

    nTest = 1;

#ifdef CPL_LSB
    if( ((GByte *) &nTest)[0] != 1 )
#endif
#ifdef CPL_MSB
    if( ((GByte *) &nTest)[3] != 1 )
#endif    
        CPLError( CE_Fatal, CPLE_AppDefined, 
                  "CPLVerifyConfiguration(): byte order set wrong.\n" );
}

/************************************************************************/
/*                         CPLGetConfigOption()                         */
/************************************************************************/

const char * CPL_STDCALL
CPLGetConfigOption( const char *pszKey, const char *pszDefault )

{
    const char *pszResult = NULL;

    {
        CPLMutexHolderD( &hConfigMutex );

        pszResult = CSLFetchNameValue( (char **) papszConfigOptions, pszKey );
    }

#if !defined(WIN32CE) 
    if( pszResult == NULL )
        pszResult = getenv( pszKey );
#endif
    
    if( pszResult == NULL )
        return pszDefault;
    else
        return pszResult;
}

/************************************************************************/
/*                         CPLSetConfigOption()                         */
/************************************************************************/

void CPL_STDCALL 
CPLSetConfigOption( const char *pszKey, const char *pszValue )

{
    CPLMutexHolderD( &hConfigMutex );

    papszConfigOptions = (volatile char **) 
        CSLSetNameValue( (char **) papszConfigOptions, pszKey, pszValue );
}

/************************************************************************/
/*                           CPLFreeConfig()                            */
/************************************************************************/

void CPL_STDCALL CPLFreeConfig()

{
    CPLMutexHolderD( &hConfigMutex );

    CSLDestroy( (char **) papszConfigOptions);
    papszConfigOptions = NULL;
}

/************************************************************************/
/*                              CPLStat()                               */
/*                                                                      */
/*      Same as VSIStat() except it works on "C:" as if it were         */
/*      "C:\".                                                          */
/************************************************************************/

int CPLStat( const char *pszPath, VSIStatBuf *psStatBuf )

{
    if( strlen(pszPath) == 2 && pszPath[1] == ':' )
    {
        char    szAltPath[10];
        
        strncpy( szAltPath, pszPath, 10 );
        strcat( szAltPath, "\\" );
        return VSIStat( szAltPath, psStatBuf );
    }
    else
        return VSIStat( pszPath, psStatBuf );
}

/************************************************************************/
/*                            proj_strtod()                             */
/************************************************************************/
static double
proj_strtod(char *nptr, char **endptr) 

{
    char c, *cp = nptr;
    double result;

    /*
     * Scan for characters which cause problems with VC++ strtod()
     */
    while ((c = *cp) != '\0') {
        if (c == 'd' || c == 'D') {

            /*
             * Found one, so NUL it out, call strtod(),
             * then restore it and return
             */
            *cp = '\0';
            result = strtod(nptr, endptr);
            *cp = c;
            return result;
        }
        ++cp;
    }

    /* no offending characters, just handle normally */

    return strtod(nptr, endptr);
}

/************************************************************************/
/*                            CPLDMSToDec()                             */
/************************************************************************/

static const char*sym = "NnEeSsWw";
static const double vm[] = { 1.0, 0.0166666666667, 0.00027777778 };

double CPLDMSToDec( const char *is )

{
    int sign, n, nl;
    char *p, *s, work[64];
    double v, tv;

    /* copy sting into work space */
    while (isspace(sign = *is)) ++is;
    for (n = sizeof(work), s = work, p = (char *)is; isgraph(*p) && --n ; )
        *s++ = *p++;
    *s = '\0';
    /* it is possible that a really odd input (like lots of leading
       zeros) could be truncated in copying into work.  But ... */
    sign = *(s = work);
    if (sign == '+' || sign == '-') s++;
    else sign = '+';
    for (v = 0., nl = 0 ; nl < 3 ; nl = n + 1 ) {
        if (!(isdigit(*s) || *s == '.')) break;
        if ((tv = proj_strtod(s, &s)) == HUGE_VAL)
            return tv;
        switch (*s) {
          case 'D': case 'd':
            n = 0; break;
          case '\'':
            n = 1; break;
          case '"':
            n = 2; break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91在线|亚洲| 亚洲免费观看高清完整| 日韩国产欧美在线视频| 欧美日韩一区在线| 日韩精品高清不卡| 日韩久久免费av| 黄页视频在线91| 久久亚洲欧美国产精品乐播| 国产一区二区日韩精品| 久久久精品综合| 成人av免费网站| 一区二区三区在线视频免费 | 亚洲综合色成人| 这里只有精品电影| 国产精品一区专区| 国产精品福利一区二区| 色婷婷香蕉在线一区二区| 亚洲国产aⅴ成人精品无吗| 在线电影一区二区三区| 美女视频黄久久| 日本一区二区久久| 在线观看免费成人| 久久精品久久99精品久久| 国产婷婷色一区二区三区四区| 高清久久久久久| 一个色在线综合| 欧美mv和日韩mv国产网站| 国产成人精品网址| 亚洲国产欧美另类丝袜| 欧美大片顶级少妇| 91美女片黄在线观看91美女| 视频一区二区三区在线| 国产日韩欧美不卡在线| 色琪琪一区二区三区亚洲区| 蜜桃视频在线观看一区| 国产精品天干天干在观线| 欧美亚洲综合在线| 成人午夜私人影院| 香蕉av福利精品导航| 国产日韩亚洲欧美综合| 欧美午夜电影一区| 国产不卡视频在线播放| 亚洲成人在线网站| 中文字幕在线不卡视频| 日韩一级片网站| av电影在线不卡| 麻豆成人91精品二区三区| 亚洲精品一二三区| 国产亚洲欧美一区在线观看| 欧美日韩你懂得| 成人aa视频在线观看| 久久精品国产999大香线蕉| 亚洲精品乱码久久久久久日本蜜臀| 精品国产污网站| 欧美影院一区二区三区| www.日韩在线| 国产一区二三区| 午夜精品aaa| 一区二区三区日韩欧美精品| 久久精品一区二区三区四区| 欧美一区二区三区系列电影| 91麻豆国产福利在线观看| 国产精品一区一区| 看国产成人h片视频| 日韩黄色一级片| 亚洲成人一二三| 亚洲综合视频网| 亚洲精品免费在线| 亚洲天堂福利av| 欧美国产97人人爽人人喊| 2021国产精品久久精品| 日韩三级在线观看| 777a∨成人精品桃花网| 欧美午夜电影网| 欧美在线观看视频在线| 91九色02白丝porn| 91国产视频在线观看| 91视频一区二区三区| 91丨九色porny丨蝌蚪| av一区二区不卡| 99国产精品久久久久久久久久久 | 久久久国产午夜精品| 亚洲精品一区在线观看| 亚洲精品一区二区三区四区高清| 精品少妇一区二区三区在线播放| 91麻豆精品国产91久久久| 7777女厕盗摄久久久| 欧美一级高清片在线观看| 91精品一区二区三区在线观看| 欧美四级电影在线观看| 欧美欧美午夜aⅴ在线观看| 欧美日韩一区二区三区在线| 欧美日韩国产综合一区二区三区 | av毛片久久久久**hd| 成人av电影在线播放| 91免费视频网| 欧美日韩专区在线| 欧美一卡2卡3卡4卡| 日韩欧美一级精品久久| 久久人人爽人人爽| 久久亚洲精华国产精华液 | 欧美一区二区播放| 久久影院视频免费| 国产精品嫩草影院com| 中文字幕中文字幕中文字幕亚洲无线| 亚洲欧美在线视频| 亚洲国产综合色| 久久99国内精品| 99久久er热在这里只有精品15| 一本到一区二区三区| 欧美乱妇15p| 欧美精彩视频一区二区三区| 成人欧美一区二区三区视频网页| 午夜精品久久久久久久| 国产在线看一区| 91老司机福利 在线| 欧美一区二区三区四区五区| 国产亚洲视频系列| 亚洲小说欧美激情另类| 美女mm1313爽爽久久久蜜臀| 激情综合一区二区三区| 亚洲国产精品综合小说图片区| 狠狠色狠狠色合久久伊人| 国产剧情在线观看一区二区| 丰满亚洲少妇av| 色综合一个色综合亚洲| 欧美精品 国产精品| 欧美成人性福生活免费看| 久久久久久一二三区| 国产精品久久看| 日本亚洲欧美天堂免费| 国产jizzjizz一区二区| 色婷婷综合久久久久中文一区二区 | 久久久久国产成人精品亚洲午夜 | 欧美变态tickle挠乳网站| 久久综合九色综合欧美98| 综合网在线视频| 天使萌一区二区三区免费观看| 亚洲bt欧美bt精品777| 久久精品免费观看| av亚洲精华国产精华| 久久久久久久久久久久电影| 亚洲精品高清在线| 久久国产免费看| 99久久久久久| 日韩一区二区三| 亚洲综合视频在线| 国产成人免费在线视频| 欧美日韩色一区| 国产日韩av一区| 亚洲一区二区三区不卡国产欧美| 激情亚洲综合在线| 日本电影亚洲天堂一区| 久久综合久久综合九色| 日韩理论电影院| 粉嫩高潮美女一区二区三区| 这里只有精品视频在线观看| 亚洲欧洲日产国码二区| 免费在线视频一区| 色婷婷久久久久swag精品| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 午夜日韩在线观看| 成人免费视频视频| 日韩精品一区在线| 亚洲国产精品久久艾草纯爱| 国产98色在线|日韩| 在线亚洲欧美专区二区| 樱桃国产成人精品视频| 国产精品2024| 日韩免费高清av| 亚洲成av人片在线观看| 久久精品国产**网站演员| 欧美一级在线观看| 午夜精品久久一牛影视| 99精品国产99久久久久久白柏| 国产日韩欧美综合在线| 国产成人一级电影| 精品国产乱码久久| 免费av网站大全久久| 欧美日本一区二区| 中文字幕亚洲综合久久菠萝蜜| 国产成人综合网| 久久久久久久久岛国免费| 日本不卡中文字幕| 精品婷婷伊人一区三区三| 亚洲欧美日韩国产综合在线 | 99在线视频精品| 国产网红主播福利一区二区| 毛片一区二区三区| 久久婷婷国产综合国色天香| 裸体歌舞表演一区二区| 91精品国产综合久久婷婷香蕉| 亚洲自拍都市欧美小说| www.日韩av| 亚洲成a天堂v人片| 欧美人伦禁忌dvd放荡欲情| 亚洲国产一区二区三区| 欧美日韩国产美| 国产一区二区视频在线| 久久亚区不卡日本|