s64 UlamTypeInt::getDataAsCs64(const u64 data) { return _Int64ToCs64(data, getBitSize()); }
void SymbolWithValue::printPostfixValueScalar(File * fp) { u64 val = 0; bool oktoprint = getValueReadyToPrint(val); if(oktoprint) { UTI tuti = getUlamTypeIdx(); UlamType * tut = m_state.getUlamTypeByIndex(tuti); u32 twordsize = tut->getTotalWordSize(); //must be commplete s32 tbs = tut->getBitSize(); ULAMTYPE etyp = tut->getUlamTypeEnum(); switch(etyp) { case Int: { if(twordsize <= MAXBITSPERINT) { s32 sval = _Int32ToCs32((u32) val, tbs); fp->write_decimal(sval); } else if(twordsize <= MAXBITSPERLONG) { s64 sval = _Int64ToCs64(val, tbs); fp->write_decimal_long(sval); } else m_state.abortGreaterThanMaxBitsPerLong(); } break; case Bool: { bool bval = _Bool64ToCbool(val, tbs); if(bval) fp->write("true"); else fp->write("false"); } break; case Unary: case Unsigned: case Bits: { // NO CASTING NEEDED, assume saved in its ulam-native format if( tbs <= MAXBITSPERINT) fp->write_decimal_unsigned(val); else if( tbs <= MAXBITSPERLONG) fp->write_decimal_unsignedlong(val); else m_state.abortGreaterThanMaxBitsPerLong(); //TBD > 64 fp->write("u"); } break; case String: // scalar strings generate comments (output value rather than index) e.g. t3951,2 fp->write(m_state.getDataAsFormattedUserString(val).c_str()); break; default: m_state.abortUndefinedUlamPrimitiveType(); }; } else fp->write("NONREADYCONST"); } //printPostfixValueScalar