From 31e6b9b6374685fb64a20cba894cf348fe7759da Mon Sep 17 00:00:00 2001 From: jsrobson10 Date: Fri, 24 Jul 2020 17:54:56 +1000 Subject: [PATCH] Added emoji support --- src/bdf/types/BdfLookupTable.java | 26 ++++++++++++-------------- src/bdf/types/BdfNamedList.java | 16 ++++++++-------- src/bdf/types/BdfObject.java | 8 ++++---- src/bdf/types/BdfReader.java | 4 ++-- src/bdf/util/DataHelpers.java | 11 +++-------- src/tests/Tests.java | 26 ++++++++++++++++++++++++-- 6 files changed, 53 insertions(+), 38 deletions(-) diff --git a/src/bdf/types/BdfLookupTable.java b/src/bdf/types/BdfLookupTable.java index 6d12055..68c34bd 100644 --- a/src/bdf/types/BdfLookupTable.java +++ b/src/bdf/types/BdfLookupTable.java @@ -10,34 +10,32 @@ import bdf.util.DataHelpers; class BdfLookupTable implements IBdfType { - private ArrayList keys; + private ArrayList keys; BdfLookupTable() { - keys = new ArrayList(); + keys = new ArrayList(); } BdfLookupTable(IBdfDatabase database) { - keys = new ArrayList(); + keys = new ArrayList(); for(int i=0;i i+1) { @@ -140,7 +140,7 @@ public class BdfNamedList implements IBdfType for(Element e : elements) { // Is this the element key - if(DataHelpers.bytesAreEqual(lookupTable.getName(e.key).getBytes(), key_bytes)) + if(DataHelpers.bytesAreEqual(lookupTable.getName(e.key), key_bytes)) { // Set the object object = e.object; @@ -172,7 +172,7 @@ public class BdfNamedList implements IBdfType Element e = elements.get(i); // Is the specified key the same as the elements key - if(DataHelpers.bytesAreEqual(lookupTable.getName(e.key).getBytes(), key_bytes)) { + if(DataHelpers.bytesAreEqual(lookupTable.getName(e.key), key_bytes)) { return elements.remove(i).object; } } @@ -214,7 +214,7 @@ public class BdfNamedList implements IBdfType for(Element e : elements) { // Is the key here the same as the specified key - if(DataHelpers.bytesAreEqual(lookupTable.getName(e.key).getBytes(), key_bytes)) + if(DataHelpers.bytesAreEqual(lookupTable.getName(e.key), key_bytes)) { // Set the new object e.object = object; @@ -226,7 +226,7 @@ public class BdfNamedList implements IBdfType // Create a new element object Element e = new Element(); - e.key = lookupTable.getLocation(key); + e.key = lookupTable.getLocation(key_bytes); e.object = object; // Add the new element object to the elements list @@ -245,7 +245,7 @@ public class BdfNamedList implements IBdfType for(Element e : elements) { // Is the elements key the same as the specified key - if(DataHelpers.bytesAreEqual(lookupTable.getName(e.key).getBytes(), key_bytes)) + if(DataHelpers.bytesAreEqual(lookupTable.getName(e.key), key_bytes)) { // Send back true to say the element was found return true; @@ -266,7 +266,7 @@ public class BdfNamedList implements IBdfType { // Get the element Element e = elements.get(i); - keys[i] = lookupTable.getName(e.key); + keys[i] = new String(lookupTable.getName(e.key)); } // Return the list of keys as strings diff --git a/src/bdf/types/BdfObject.java b/src/bdf/types/BdfObject.java index 7218516..829ade4 100644 --- a/src/bdf/types/BdfObject.java +++ b/src/bdf/types/BdfObject.java @@ -67,9 +67,9 @@ public class BdfObject implements IBdfType break; case BdfTypes.STRING: - String str = (String)object; - size = str.length() + 1; - db.setBytes(0, str.getBytes()); + byte[] str = ((String)object).getBytes(); + size = str.length + 1; + db.setBytes(0, str); break; default: @@ -91,7 +91,7 @@ public class BdfObject implements IBdfType { case BdfTypes.ARRAY: return ((BdfArray)object).serializeSeeker() + 1; case BdfTypes.NAMED_LIST: return ((BdfNamedList)object).serializeSeeker() + 1; - case BdfTypes.STRING: return ((String)object).length() + 1; + case BdfTypes.STRING: return ((String)object).getBytes().length + 1; } // Anything else diff --git a/src/bdf/types/BdfReader.java b/src/bdf/types/BdfReader.java index f562555..3b5ba2b 100644 --- a/src/bdf/types/BdfReader.java +++ b/src/bdf/types/BdfReader.java @@ -52,8 +52,8 @@ public class BdfReader database.setBytes(4, DataHelpers.serializeInt(lookupTable_size)); database.setBytes(8 + lookupTable_size, DataHelpers.serializeInt(bdf_size)); - lookupTable.serialize(database.getPointer(8)); - bdf.serialize(database.getPointer(12 + lookupTable_size)); + lookupTable.serialize(database.getPointer(8, lookupTable_size)); + bdf.serialize(database.getPointer(12 + lookupTable_size, database_size)); return database; } diff --git a/src/bdf/util/DataHelpers.java b/src/bdf/util/DataHelpers.java index e57c00e..7e89b5d 100644 --- a/src/bdf/util/DataHelpers.java +++ b/src/bdf/util/DataHelpers.java @@ -38,17 +38,16 @@ public class DataHelpers return true; } - public static String replaceInString(String string, byte find, String replace) + public static String replaceInString(String string, char find, String replace) { // Convert the string to bytes - byte[] string_b = string.getBytes(); String string_modified = new String(); // Loop over the string - for(int i=0;i