service plugin and qdecimal library has been added
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
/** \file QDecPacked.cc
|
||||
* Definitions for the class QDecPacked.
|
||||
*
|
||||
* (C) Copyright by Semih Cemiloglu
|
||||
* All rights reserved, see COPYRIGHT file for details.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include "QDecPacked.hh"
|
||||
#include "QDecNumber.hh"
|
||||
#include "QDecSingle.hh"
|
||||
#include "QDecDouble.hh"
|
||||
#include "QDecQuad.hh"
|
||||
|
||||
QDecPacked::QDecPacked(const char* str)
|
||||
{ *this = fromQDecNumber(QDecNumber(str)); }
|
||||
|
||||
QDecPacked::QDecPacked(double d)
|
||||
{ *this = fromQDecNumber(QDecNumber(d)); }
|
||||
|
||||
QDecPacked::QDecPacked(const QDecSingle& s)
|
||||
{ *this = s.toQDecPacked(); }
|
||||
|
||||
QDecPacked::QDecPacked(const QDecDouble& d)
|
||||
{ *this = d.toQDecPacked(); }
|
||||
|
||||
QDecPacked::QDecPacked(const QDecQuad& q)
|
||||
{ *this = q.toQDecPacked(); }
|
||||
|
||||
|
||||
QDecPacked& QDecPacked::fromQDecNumber(const QDecNumber& d)
|
||||
{
|
||||
uint8_t bfr[QDecNumDigits] = { 0 };
|
||||
int32_t scale = 0;
|
||||
|
||||
uint8_t* rv = decPackedFromNumber(bfr, QDecNumDigits, &scale, d.data());
|
||||
|
||||
if(rv) {
|
||||
m_scale = scale;
|
||||
|
||||
char* p = (char*)bfr;
|
||||
int i = 0;
|
||||
// Skip null bytes at the left
|
||||
for(; p[i] == '\0' || i==QDecNumDigits; ++i);
|
||||
|
||||
// Construct byte array from the beginning of BCD bytes
|
||||
m_bytes = QByteArray(&p[i], QDecNumDigits-i);
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
QDecNumber QDecPacked::toQDecNumber() const
|
||||
{
|
||||
if(length() > 0) {
|
||||
decNumber n;
|
||||
return decPackedToNumber(bytesRaw(), length(), &m_scale, &n);
|
||||
}
|
||||
else
|
||||
// Not initialized, return default QDecNumber value
|
||||
return QDecNumber();
|
||||
}
|
||||
|
||||
QDecPacked& QDecPacked::fromDouble(double d)
|
||||
{
|
||||
*this = fromQDecNumber(QDecNumber(d));
|
||||
return *this;
|
||||
}
|
||||
|
||||
QDecPacked& QDecPacked::fromString(const char* str)
|
||||
{
|
||||
*this = fromQDecNumber(QDecNumber(str));
|
||||
return *this;
|
||||
}
|
||||
|
||||
QByteArray QDecPacked::toString() const
|
||||
{
|
||||
return toQDecNumber().toString();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user