From e33d4f7cd18e8b8730c28b4969e5dbe237102b78 Mon Sep 17 00:00:00 2001
From: Rainer Klute <klute@apache.org>
Date: Wed, 13 Apr 2005 16:33:22 +0000
Subject: - Support for variant type VT_R8 added.

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353637 13f79535-47bb-0310-9956-ffa450edef68
---
 src/java/org/apache/poi/hpsf/TypeWriter.java     | 20 +++++++++++++++++---
 src/java/org/apache/poi/hpsf/VariantSupport.java | 15 +++++++++++++++
 2 files changed, 32 insertions(+), 3 deletions(-)

(limited to 'src/java/org/apache/poi/hpsf')

diff --git a/src/java/org/apache/poi/hpsf/TypeWriter.java b/src/java/org/apache/poi/hpsf/TypeWriter.java
index 3f0f488002..c88e98d07b 100644
--- a/src/java/org/apache/poi/hpsf/TypeWriter.java
+++ b/src/java/org/apache/poi/hpsf/TypeWriter.java
@@ -169,8 +169,22 @@ public class TypeWriter
 
 
 
-
-
-
+    /**
+     * <p>Writes a double value value to an output stream.</p>
+     *
+     * @param out The stream to write to.
+     * @param n The value to write.
+     * @exception IOException if an I/O error occurs
+     * @return The number of bytes written to the output stream. 
+     */
+    public static int writeToStream(final OutputStream out, final double n)
+        throws IOException
+    {
+        final int l = LittleEndian.DOUBLE_SIZE;
+        final byte[] buffer = new byte[l];
+        LittleEndian.putDouble(buffer, 0, n);
+        out.write(buffer, 0, l);
+        return l;
+    }
 
 }
diff --git a/src/java/org/apache/poi/hpsf/VariantSupport.java b/src/java/org/apache/poi/hpsf/VariantSupport.java
index 081e7f4dd4..b9ab14ffca 100644
--- a/src/java/org/apache/poi/hpsf/VariantSupport.java
+++ b/src/java/org/apache/poi/hpsf/VariantSupport.java
@@ -169,6 +169,15 @@ public class VariantSupport extends Variant
                 value = new Long(LittleEndian.getUInt(src, o1));
                 break;
             }
+            case Variant.VT_R8:
+            {
+                /*
+                 * Read an eight-byte double value. In Java it is represented as
+                 * a Double object.
+                 */
+                value = new Double(LittleEndian.getDouble(src, o1));
+                break;
+            }
             case Variant.VT_FILETIME:
             {
                 /*
@@ -394,6 +403,12 @@ public class VariantSupport extends Variant
                           ((Long) value).intValue());
                 break;
             }
+            case Variant.VT_R8:
+            {
+                length += TypeWriter.writeToStream(out, 
+                          ((Double) value).doubleValue());
+                break;
+            }
             case Variant.VT_FILETIME:
             {
                 long filetime = Util.dateToFileTime((Date) value);
-- 
cgit v1.2.3