Esempio n. 1
0
char* Placeholder_xml(const Placeholder* ph, unsigned indent) {
	/*
	 "@1i^(1/2)"
	 <pow>
	   <placeholder type="i" index="1"/>
	   <div>
	     <int>1</int>
	     <int>2</int>
	   </div>
	 </pow>
	*/
	char* ret;
	
	if(ph->index > 0) {
		asprintf(&ret,
				 "<placeholder type=\"%c\" index=\"%u\"/>",
				 ph->index, getFormatChar(ph->type));
	}
	else {
		asprintf(&ret,
				 "<placeholder type=\"%c\"/>",
				 getFormatChar(ph->type));
	}
	
	return ret;
}
Esempio n. 2
0
/* Printing */
char* Placeholder_repr(const Placeholder* ph) {
	char* ret;
	
	if(ph->index > 0) {
		asprintf(&ret, "@%u%c", ph->index, getFormatChar(ph->type));
	}
	else {
		asprintf(&ret, "@%c", getFormatChar(ph->type));
	}
	
	return ret;
}
/*
    Generate a value given a floating point number, using formatting defined within this class.
    The formatting mainly applies if formatting as a string. For example, was is
    the number base? should a sign always be included? are leading zeros requried?
    The formatting could include properties related to other types. For example, generate
    an error if attempting to convert a negative floating point number to an unsigned integer.
*/
QVariant QEFloatingFormatting::formatValue( const double &floatingValue, generic::generic_types valueType ) {
    switch( valueType ) {
        case generic::GENERIC_DOUBLE :
        case generic::GENERIC_FLOAT :
        {
            QVariant dValue( floatingValue );
            return dValue;
        }
        case generic::GENERIC_LONG :
        {
            qlonglong integerValue;
            if( floatingValue < (double)LONG_MIN )
                integerValue = LONG_MIN;
            else if( floatingValue > (double)LONG_MAX )
                integerValue = LONG_MAX;
            else
                integerValue = (qlonglong)floatingValue;

            QVariant lValue( integerValue );
            return lValue;
        }
        case generic::GENERIC_SHORT :
        {
            qlonglong integerValue;
            if( floatingValue < (double)SHRT_MIN )
                integerValue = SHRT_MIN;
            else if( floatingValue > (double)SHRT_MAX )
                integerValue = SHRT_MAX;
            else
                integerValue = (qlonglong)floatingValue;

            QVariant lValue( integerValue );
            return lValue;
        }
        case generic::GENERIC_UNSIGNED_LONG :
        {
            qulonglong unsignedIntegerValue;
            if( floatingValue < 0 )
                unsignedIntegerValue = 0;
            else if( floatingValue > (double)ULONG_MAX )
                unsignedIntegerValue = ULONG_MAX;
            else
                unsignedIntegerValue = (qulonglong)floatingValue;

            QVariant ulValue( unsignedIntegerValue );
            return ulValue;
        }
        case generic::GENERIC_UNSIGNED_SHORT :
        {
            qulonglong unsignedIntegerValue;
            if( floatingValue < 0 )
                unsignedIntegerValue = 0;
            else if( floatingValue > (double)USHRT_MAX )
                unsignedIntegerValue = USHRT_MAX;
            else
                unsignedIntegerValue = (qulonglong)floatingValue;

            QVariant ulValue( unsignedIntegerValue );
            return ulValue;
        }
        case generic::GENERIC_UNSIGNED_CHAR :
        {
            qulonglong unsignedIntegerValue;
            if( floatingValue < 0 )
                unsignedIntegerValue = 0;
            else if( floatingValue > (double)UCHAR_MAX )
                unsignedIntegerValue = UCHAR_MAX;
            else
                unsignedIntegerValue = (qulonglong)floatingValue;

            QVariant ulValue( unsignedIntegerValue );
            return ulValue;
        }
        case generic::GENERIC_STRING :
        {
            QString string = QString::number( floatingValue, getFormatChar(), precision );
            QVariant sValue( string );
            return sValue;
        }
        case generic::GENERIC_UNKNOWN :
        {
        }
        default :
        {
            //qDebug() << "QEFloatingFormatting::formatValue() Unknown value 'Generic' type: " << valueType;
            QVariant unknown;
            return unknown;
        }
    }
    //qDebug() << "QEFloatingFormatting::formatValue() Unknown value 'Generic' type: " << valueType;
    QVariant unknown;
    return unknown;
}