Author: mturk
Date: Fri Jun 19 09:39:54 2009
New Revision: 786431

URL: http://svn.apache.org/viewvc?rev=786431&view=rev
Log:
Add Structure sizeof method

Modified:
    
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure.java
    
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure32.java
    
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure64.java
    
commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestMemory.java

Modified: 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure.java?rev=786431&r1=786430&r2=786431&view=diff
==============================================================================
--- 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure.java
 (original)
+++ 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure.java
 Fri Jun 19 09:39:54 2009
@@ -46,6 +46,13 @@
     }
 
     /**
+     * Get a size of this {...@code structure}.
+     *
+     * @return {...@code int} representing the size.
+     */
+    public abstract int sizeof();
+
+    /**
      * Get a {...@code byte} value this {...@code structure} contains at the
      * {...@code index}.
      *

Modified: 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure32.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure32.java?rev=786431&r1=786430&r2=786431&view=diff
==============================================================================
--- 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure32.java
 (original)
+++ 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure32.java
 Fri Jun 19 09:39:54 2009
@@ -45,6 +45,11 @@
     private static native void   poke4(int addr, float  v);
     private static native void   poke5(int addr, double v);
 
+    public int sizeof()
+    {
+        return POINTER.PLENGTH;
+    }
+
     public boolean equals(Object other)
     {
         if (other == null)

Modified: 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure64.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure64.java?rev=786431&r1=786430&r2=786431&view=diff
==============================================================================
--- 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure64.java
 (original)
+++ 
commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Structure64.java
 Fri Jun 19 09:39:54 2009
@@ -45,6 +45,11 @@
     private static native void   poke4(long addr, float  v);
     private static native void   poke5(long addr, double v);
 
+    public int sizeof()
+    {
+        return (int)POINTER.PLENGTH;
+    }
+
     public boolean equals(Object other)
     {
         if (other == null)

Modified: 
commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestMemory.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestMemory.java?rev=786431&r1=786430&r2=786431&view=diff
==============================================================================
--- 
commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestMemory.java
 (original)
+++ 
commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestMemory.java
 Fri Jun 19 09:39:54 2009
@@ -283,6 +283,17 @@
         p.free();
     }
 
+    public void testStructSize()
+        throws Throwable
+    {
+        Pointer p = Memory.calloc(1000);
+        assertNotNull("Pointer", p);
+        Structure s = p.asStructure();
+        assertEquals("Size", 1000, s.sizeof());
+
+        p.free();
+    }
+
     public void testPoke()
         throws Throwable
     {


Reply via email to