Пример #1
0
std::string vmTypeLibrary::DescribeVariable (std::string name, vmValType& type) {

    if (!TypeValid (type))
        return (std::string) "INVALID TYPE " + name;

    // Return a string describing what the variable stores
    std::string result;

    // Variable type
    if (type.m_basicType >= 0)
        result = m_structures [type.m_basicType].m_name + " ";      // Structure type
    else
        result = vmBasicValTypeName (type.m_basicType) + " ";       // Basic type

    // Append pointer prefix
    int i;
    for (i = 0; i < type.VirtualPointerLevel (); i++)
        result += "&";

    // Variable name
    result += name;

    // Append array indices
    for (i = type.m_arrayLevel - 1; i >= 0; i--) {
        result += "(";
        if (type.VirtualPointerLevel () == 0)
            result += IntToString (type.m_arrayDims [i] - 1);
        result += ")";
    }

    return result;
}
Пример #2
0
bool vmTypeLibrary::DataSizeBiggerThan (vmValType& type, int size) {

    // Return true if data size > size.
    // This is logically equivalent to: DataSize (type) > size,
    // except it correctly handles integer overflow for really big types.
    assert (TypeValid (type));
    if (type.PhysicalPointerLevel () == 0 && type.m_arrayLevel > 0) {
        vmValType element = type;
        element.m_arrayLevel = 0;
        return type.ArraySizeBiggerThan (size, DataSize (element));
    }
    else
        return DataSize (type) > size;
}
Пример #3
0
bool CCardOperator::BiggerThanBefore(list<CCardSprite*>& perCards, list<CCardSprite*>& nowCards){
    cardtype perType = getCardsType(perCards);
    cardtype nowType = getCardsType(nowCards);
    
    if (!TypeValid(perType, nowType))
        return false;
    
    if (perType == unknow)
        return true;

    int perval = getLittestCardRval(perCards);
    int nowval = getLittestCardRval(nowCards);
    
    if (perType == boom) {
        if (nowType == kingboom || nowType == tenboom)
            return true;
        if (nowval <= perval || perCards.size() > nowCards.size()) {
            return false;
        }
    }else if (perType == straight) {
        if (nowType != boom && nowType != kingboom && nowType != tenboom){
            if (straightVal(nowCards) <= straightVal(perCards)
                || nowCards.size() != perCards.size()) {
                return false;
            }
        }
        
    } else {
        if (nowType != boom && nowType != kingboom && nowType != tenboom) {
            if (nowval <= perval || nowCards.size() != perCards.size())
                return false;
        }
    }
    
    return true;
}
Пример #4
0
inline bool TblIndexAndTypeInsertValid(JNIEnv* env, T* pTable, jlong columnIndex, jlong rowIndex, int expectColType)
{
    return TblIndexInsertValid(env, pTable, columnIndex, rowIndex)
        && TypeValid(env, pTable, columnIndex, rowIndex, expectColType, false);
}
Пример #5
0
inline bool IndexAndTypeValid(JNIEnv* env, T* pTable, jlong columnIndex, jlong rowIndex, int expectColType, bool allowMixed)
{
    return IndexValid(env, pTable, columnIndex, rowIndex)
        && TypeValid(env, pTable, columnIndex, rowIndex, expectColType, allowMixed);
}
Пример #6
0
inline bool ColIndexAndTypeValid(JNIEnv* env, T* pTable, jlong columnIndex, int expectColType)
{
    return ColIndexValid(env, pTable, columnIndex)
        && TypeValid(env, pTable, columnIndex, 0, expectColType, false);
}