diff --git a/src/java/org/lwjgl/fmod3/FSound.java b/src/java/org/lwjgl/fmod3/FSound.java index 6ef1f769..a41643fb 100644 --- a/src/java/org/lwjgl/fmod3/FSound.java +++ b/src/java/org/lwjgl/fmod3/FSound.java @@ -2368,7 +2368,6 @@ public class FSound { * Get a tag field associated with an open stream *
* Remarks
- * Do not attempt to modify or free any pointers returned by this function.
* If this function returns successfully, "value" will contain a pointer to a piece of tag-field-specific data - do not assume it will always point to a null-terminated ASCII string.
* @param stream The stream to get the tag field from.
* @param num The number of the tag field to retrieve.
diff --git a/src/java/org/lwjgl/fmod3/FSoundTagField.java b/src/java/org/lwjgl/fmod3/FSoundTagField.java
index 919d35b0..54021ff4 100644
--- a/src/java/org/lwjgl/fmod3/FSoundTagField.java
+++ b/src/java/org/lwjgl/fmod3/FSoundTagField.java
@@ -55,6 +55,12 @@ public class FSoundTagField {
/** Type of tagfield */
int type;
+
+ /**
+ * Creates a new FSoundTagField
+ */
+ public FSoundTagField() {
+ }
/**
* Creates a new FSoundTagField
@@ -65,36 +71,53 @@ public class FSoundTagField {
}
/**
- * Sets the value and length
+ * Sets the name value and type
+ * @param name name of tagfield
* @param value value of tagfield
- * @param lenght length of data
+ * @param type type of tagfield
*/
- void set(ByteBuffer value, int lenght) {
+ void set(String name, ByteBuffer value, int type) {
+ this.name = name;
this.value = value;
- this.length = lenght;
+ this.length = value.capacity();
+ this.type = type;
}
+
/**
* @return Returns the length.
*/
public int getLength() {
return length;
}
+
/**
* @return Returns the name.
*/
public String getName() {
return name;
}
+
/**
* @return Returns the type.
*/
public int getType() {
return type;
}
+
/**
* @return Returns the value.
*/
public ByteBuffer getValue() {
- return value;
+ return value.asReadOnlyBuffer();
}
+
+ /**
+ * @value as string
+ */
+ public String getValueAsString() {
+ byte[] buffer = new byte[value.capacity()];
+ value.get(buffer);
+ value.rewind();
+ return new String(buffer);
+ }
}
\ No newline at end of file
diff --git a/src/java/org/lwjgl/test/fmod3/TagFieldTest.java b/src/java/org/lwjgl/test/fmod3/TagFieldTest.java
new file mode 100644
index 00000000..4b4acd41
--- /dev/null
+++ b/src/java/org/lwjgl/test/fmod3/TagFieldTest.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2002-2004 LWJGL Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * 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.
+ *
+ * * Neither the name of 'LWJGL' nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT OWNER 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.
+ */
+package org.lwjgl.test.fmod3;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.IntBuffer;
+
+import org.lwjgl.BufferUtils;
+import org.lwjgl.fmod3.FMOD;
+import org.lwjgl.fmod3.FMODException;
+import org.lwjgl.fmod3.FSound;
+import org.lwjgl.fmod3.FSoundStream;
+import org.lwjgl.fmod3.FSoundTagField;
+
+/**
+ * $Id$
+ *
+ * @author Brian Matzon