summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2011-07-01 09:19:49 (GMT)
committerKevin Smith <git@kismith.co.uk>2011-07-01 09:19:49 (GMT)
commit2da71a8a85486a494343f1662d64fb5ae5a2a44e (patch)
tree23992f9f2a00bac23b345e5c2cc9c1194efc25be /src/com/isode/stroke/base
downloadstroke-2da71a8a85486a494343f1662d64fb5ae5a2a44e.zip
stroke-2da71a8a85486a494343f1662d64fb5ae5a2a44e.tar.bz2
Initial import
Diffstat (limited to 'src/com/isode/stroke/base')
-rw-r--r--src/com/isode/stroke/base/ByteArray.java162
-rw-r--r--src/com/isode/stroke/base/Error.java15
2 files changed, 177 insertions, 0 deletions
diff --git a/src/com/isode/stroke/base/ByteArray.java b/src/com/isode/stroke/base/ByteArray.java
new file mode 100644
index 0000000..a36e305
--- /dev/null
+++ b/src/com/isode/stroke/base/ByteArray.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 2010 Remko Tron¨on
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+/*
+ * Copyright (c) 2010, Isode Limited, London, England.
+ * All rights reserved.
+ */
+package com.isode.stroke.base;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ *
+ */
+public class ByteArray {
+
+ public ByteArray() {
+ }
+
+ public ByteArray(String s) {
+ try {
+ fromBytes(s.getBytes("UTF-8"));
+ } catch (UnsupportedEncodingException ex) {
+ throw new IllegalStateException("JVM has no 'UTF-8' encoding");
+ }
+ }
+
+ public ByteArray(byte[] c) {
+ fromBytes(c);
+ }
+
+ public ByteArray(ByteArray b) {
+ fromBytes(b.getData());
+ }
+
+ private void fromBytes(final byte[] b) {
+ data_ = new byte[b.length];
+ System.arraycopy(b, 0, data_, 0, b.length);
+ }
+
+ /*public ByteArray(char[] c, int n) {
+ for (int i = 0; i < n; i++) {
+ append(c[i]);
+ }
+ }*/
+
+ /**
+ * These are the raw, modifyable data!
+ * @return
+ */
+ public byte[] getData() {
+ return data_;
+ }
+
+ public int getSize() {
+ return data_.length;
+ }
+
+ public boolean isEmpty() {
+ return getSize() == 0;
+ }
+
+ /*public void resize(size_t size) {
+ return data_.resize(size);
+ }*/
+ /** Immutable add */
+ public static ByteArray plus(ByteArray a, ByteArray b) {
+ ByteArray x = new ByteArray(a.getData());
+ x.append(b);
+ return x;
+ }
+
+ /** Immutable add */
+ /*public ByteArray plus(ByteArray a, char b) {
+ ByteArray x = new ByteArray(a.getData());
+ x.append(b);
+ return x;
+ }*/
+
+ /** Mutable add */
+ public ByteArray append(ByteArray b) {
+ append(b.getData());
+ return this;
+ }
+
+ /** Mutable add */
+ private ByteArray append(byte[] b) {
+ int newLength = data_.length + b.length;
+ byte[] newData = new byte[newLength];
+ for (int i = 0; i < data_.length; i++) {
+ newData[i] = data_[i];
+ }
+ for (int i = 0; i < b.length; i++) {
+ newData[i + data_.length] = b[i];
+ }
+ data_ = newData;
+ return this;
+ }
+
+ /** Mutable add */
+ public ByteArray append(byte b) {
+ byte[] bytes = {b};
+ append(bytes);
+ return this;
+ }
+
+ /** mutable add */
+ public ByteArray append(String s) {
+ byte[] bytes;
+ try {
+ bytes = s.getBytes("UTF-8");
+ } catch (UnsupportedEncodingException ex) {
+ throw new IllegalStateException("JVM has no 'UTF-8' encoding");
+ }
+ append(bytes);
+ return this;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 3;
+ hash = 97 * hash + (this.data_ != null ? this.data_.hashCode() : 0);
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ return other instanceof ByteArray && toString().equals(other.toString());
+ }
+
+ /*public char charAt(int i) {
+ return data_.charAt(i);
+ }*/
+
+ /*public const_iterator begin() const {
+ return data_.begin();
+ }
+
+ public const_iterator end() const {
+ return data_.end();
+ }*/
+ @Override
+ public String toString() {
+ try {
+ return new String(data_, "UTF-8");
+ } catch (UnsupportedEncodingException ex) {
+ throw new IllegalStateException("JVM has no 'UTF-8' encoding");
+ }
+ }
+
+ public void readFromFile(String file) {
+ //FIXME: port
+ }
+
+ public void clear() {
+ data_ = new byte[]{};
+ }
+ private byte[] data_ = {};
+
+}
diff --git a/src/com/isode/stroke/base/Error.java b/src/com/isode/stroke/base/Error.java
new file mode 100644
index 0000000..60ccbeb
--- /dev/null
+++ b/src/com/isode/stroke/base/Error.java
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2010 Remko Tron¨on
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+/*
+ * Copyright (c) 2010, Isode Limited, London, England.
+ * All rights reserved.
+ */
+
+package com.isode.stroke.base;
+
+public interface Error {
+
+}