예제 #1
0
파일: args.c 프로젝트: PaulJing/Sora
HRESULT ArgIntScan(PARG_BASE Base, const char *szOptValue)
{
    int iValue;
    HRESULT hr = S_OK;
    if (!szOptValue)
        return E_FAIL;
    if (BeginWith(szOptValue, HEX_LPREFIX) || BeginWith(szOptValue, HEX_UPREFIX))
    {
        if (!ParseHexValue(szOptValue + HEX_PREFIX_LEN, &iValue))
        {
            hr = E_FAIL;
        }
    }
    else
    {
        if (!ParseDecValue(szOptValue, &iValue))
        {
            hr = E_FAIL;
        }
    }
    if (SUCCEEDED(hr))
    {
        if (((PARG_INT)Base)->Count >= Base->iMaxOccurs)
        {
            hr = E_FAIL;
        }
        else
        {
            ((PARG_INT)Base)->Values[((PARG_INT)Base)->Count] = iValue;
            ((PARG_INT)Base)->Count++;
        }
    }
    return hr;
}
예제 #2
0
파일: args.c 프로젝트: PaulJing/Sora
HRESULT Match(PARG_BASE Base, const char *szOpt)
{
    if (BeginWith(szOpt, LONG_OPT_PREFIX))
    {
        if (Base->szLongOpts && strcmp(szOpt + LONG_OPT_PREFIX_LEN, Base->szLongOpts) == 0)
        {
            return S_OK;
        }
    }
    else
        if (BeginWith(szOpt, SHORT_OPT_PREFIX))
        {
            if (Base->szShortOpts && strcmp(szOpt + SHORT_OPT_PREFIX_LEN, Base->szShortOpts) == 0)
            {
                return S_OK;
            }
        }
        else
            if (Base->szLongOpts == NULL && Base->szShortOpts == NULL)
            {
                return S_UNTAGGED_OPT;
            }
    return E_FAIL;
}
예제 #3
0
파일: mud.cpp 프로젝트: carriercomm/RadMud
Direction Mud::findDirection(std::string direction, bool exact)
{
    for (auto iterator : mudDirections)
    {
        if (exact)
        {
            if (iterator.first == ToLower(direction))
            {
                return iterator.second;
            }
        }
        else
        {
            if (BeginWith(iterator.first, ToLower(direction)))
            {
                return iterator.second;
            }
        }
    }
    return Direction::None;
}