UlamTypeInt::UlamTypeInt(const UlamKeyTypeSignature key, CompilerState & state) : UlamType(key, state) { s32 bitsize = getBitSize(); if(bitsize <= 0) { m_max = m_min = 0; } else if(bitsize <= MAXBITSPERINT) { m_wordLengthTotal = calcWordSize(getTotalBitSize()); m_wordLengthItem = calcWordSize(bitsize); m_max = calcBitsizeSignedMax(bitsize); m_min = calcBitsizeSignedMin(bitsize); } else if(bitsize <= MAXBITSPERLONG) { m_wordLengthTotal = calcWordSizeLong(getTotalBitSize()); m_wordLengthItem = calcWordSizeLong(bitsize); m_max = calcBitsizeSignedMaxLong(bitsize); m_min = calcBitsizeSignedMinLong(bitsize); } else assert(0); }
UlamTypePrimitiveInt::UlamTypePrimitiveInt(const UlamKeyTypeSignature key, CompilerState & state) : UlamTypePrimitive(key, state) { s32 bitsize = getBitSize(); if(bitsize <= 0) { m_max = m_min = 0; } else if(bitsize <= MAXBITSPERINT) { m_wordLengthTotal = calcWordSize(getTotalBitSize()); m_wordLengthItem = calcWordSize(bitsize); m_max = calcBitsizeSignedMax(bitsize); m_min = calcBitsizeSignedMin(bitsize); } else if(bitsize <= MAXBITSPERLONG) { m_wordLengthTotal = calcWordSize(getTotalBitSize()); m_wordLengthItem = calcWordSize(bitsize); m_max = calcBitsizeSignedMaxLong(bitsize); m_min = calcBitsizeSignedMinLong(bitsize); } else m_state.abortGreaterThanMaxBitsPerLong(); }