--- /dev/null
+/*
+ *
+ * * Copyright 2011-2012 GRNET S.A. All rights reserved.
+ * *
+ * * Redistribution and use in source and binary forms, with or
+ * * without modification, are permitted provided that the following
+ * * conditions are met:
+ * *
+ * * 1. Redistributions of source code must retain the above
+ * * copyright notice, this list of conditions and the following
+ * * disclaimer.
+ * *
+ * * 2. Redistributions in binary form must reproduce the above
+ * * copyright notice, this list of conditions and the following
+ * * disclaimer in the documentation and/or other materials
+ * * provided with the distribution.
+ * *
+ * * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
+ * * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
+ * * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * * POSSIBILITY OF SUCH DAMAGE.
+ * *
+ * * The views and conclusions contained in the software and
+ * * documentation are those of the authors and should not be
+ * * interpreted as representing official policies, either expressed
+ * * or implied, of GRNET S.A.
+ *
+ */
+
+package gr.grnet.aquarium
+
+import java.math.MathContext
+
+/**
+ *
+ * @author Christos KK Loverdos <loverdos@gmail.com>
+ */
+final object Real {
+ final val Zero = this(0)
+ final val One = this(1)
+ final val _1K = this(1024)
+ final val _1M = _1K * _1K
+ final val _1G = _1M * _1K
+
+ final val HourMillis = Real(1000L * 60 * 60)
+ final val HourMillisInverse = Real.One / HourMillis
+ final val MB = _1M
+ final val MBInverse = One / MB
+ final val GB = _1G
+ final val GBInverse = One / GB
+
+
+ @inline final def apply(v: java.math.BigDecimal) = {
+ new BigDecimal(v, MathContext.UNLIMITED)
+ }
+
+ @inline final def apply(v: String): Real = this(new java.math.BigDecimal(v))
+
+ @inline final def apply(v: Double): Real = this(new java.math.BigDecimal(v))
+
+ @inline final def apply(v: Long): Real = this(new java.math.BigDecimal(v))
+
+ @inline final def apply(v: Int): Real = this(new java.math.BigDecimal(v))
+
+ @inline final def toMsgField(v: Real): String = v.toString()
+
+ @inline final def toMsgField(v: Double): String = v.toString()
+
+ @inline final def fromMsgField(v: String): Real = this(v)
+}
+
+