diff --git a/refptr/refptr.h b/refptr/refptr.h deleted file mode 100644 index 7335af5..0000000 --- a/refptr/refptr.h +++ /dev/null @@ -1,99 +0,0 @@ - -#ifndef REFPTR_H -#define REFPTR_H REFPTR_H - -/* Author: Josh Holtrop - * Purpose: Provide a reference-counting pointer-like first order - * C++ object that will free the object it is pointing to when - * all references to it have been destroyed. - * This implementation does not solve the circular reference problem. - * I was not concerned with that when developing this class. - */ -#include /* NULL */ - -template -class refptr -{ - public: - refptr(); - refptr(T * ptr); - refptr(const refptr & orig); - refptr & operator=(const refptr & orig); - refptr & operator=(T * ptr); - ~refptr(); - T & operator*() const { return *m_ptr; } - T * operator->() const { return m_ptr; } - bool isNull() const { return m_ptr == NULL; } - - private: - void cloneFrom(const refptr & orig); - void destroy(); - - T * m_ptr; - int * m_refCount; -}; - -template refptr::refptr() -{ - m_ptr = NULL; - m_refCount = NULL; -} - -template refptr::refptr(T * ptr) -{ - m_ptr = ptr; - m_refCount = new int; - *m_refCount = 1; -} - -template refptr::refptr(const refptr & orig) -{ - cloneFrom(orig); -} - -template refptr & refptr::operator=(const refptr & orig) -{ - destroy(); - cloneFrom(orig); - return *this; -} - -template refptr & refptr::operator=(T * ptr) -{ - destroy(); - m_ptr = ptr; - m_refCount = new int; - *m_refCount = 1; - return *this; -} - -template void refptr::cloneFrom(const refptr & orig) -{ - this->m_ptr = orig.m_ptr; - this->m_refCount = orig.m_refCount; - if (m_refCount != NULL) - (*m_refCount)++; -} - -template refptr::~refptr() -{ - destroy(); -} - -template void refptr::destroy() -{ - if (m_refCount != NULL) - { - if (*m_refCount <= 1) - { - delete m_ptr; - delete m_refCount; - } - else - { - (*m_refCount)--; - } - } -} - -#endif diff --git a/serialize.cc b/serialize.cc deleted file mode 100644 index d536b06..0000000 --- a/serialize.cc +++ /dev/null @@ -1,73 +0,0 @@ - -#include "serialize.h" -#include -#include -#include -#include -#include -using namespace std; - -refptr< vector > deserialize(const char * encoding, istream & in) -{ - const int buf_size = 200; - int num_read; - char * inbuf = new char[buf_size]; - char * inbuf_ptr = (char *) &inbuf[0]; - unichar_t * outbuf = new unichar_t[buf_size]; - char * outbuf_ptr; - size_t chars_converted, inbytesleft = 0, outbytesleft; - const char * to_encoding -#if __BYTE_ORDER == __LITTLE_ENDIAN - = "UCS-4LE"; -#else - = "UCS-4BE"; -#endif - refptr< vector > ucs = new vector(); - - iconv_t cd = iconv_open(/* to */ to_encoding, /* from */ encoding); - if (cd == (iconv_t) -1) - { - cerr << "iconv_open() error" << endl; - return NULL; - } - - outbuf_ptr = (char *) &outbuf[0]; - outbytesleft = buf_size * sizeof(outbuf[0]); - iconv(cd, NULL, NULL, &outbuf_ptr, &outbytesleft); - - for (;;) - { - in.read(inbuf_ptr, buf_size * sizeof(inbuf[0]) - inbytesleft); - num_read = in.gcount(); - if (num_read <= 0) - break; - inbytesleft += num_read; - outbuf_ptr = (char *) &outbuf[0]; - outbytesleft = buf_size * sizeof(outbuf[0]); - chars_converted = iconv(cd, &inbuf_ptr, &inbytesleft, - &outbuf_ptr, &outbytesleft); - if (chars_converted == (size_t) -1) - { - perror("iconv()"); - } - if (inbytesleft > 0) - { - memmove(&inbuf[0], inbuf_ptr, inbytesleft); - } - inbuf_ptr = ((char *) &inbuf[0]) + inbytesleft; - for (int i = 0; - i < (((buf_size * sizeof(outbuf[0])) - outbytesleft) - / sizeof(outbuf[0])); - i++) - { - ucs->push_back(outbuf[i]); - } - if (in.eof()) - break; - } - - delete[] inbuf; - delete[] outbuf; - iconv_close(cd); - return ucs; -} diff --git a/serialize.h b/serialize.h deleted file mode 100644 index d1c6d73..0000000 --- a/serialize.h +++ /dev/null @@ -1,13 +0,0 @@ - -#ifndef SERIALIZE_H - -#include -#include -#include -#include "refptr/refptr.h" -#include "unicode.h" -using namespace std; - -refptr< vector > deserialize(const char * encoding, istream & in); - -#endif diff --git a/unicode.cc b/unicode.cc deleted file mode 100644 index 480cdd5..0000000 --- a/unicode.cc +++ /dev/null @@ -1,33 +0,0 @@ - -#include "unicode.h" -#include - -unistring & unistring::operator=(const char * ascii_str) -{ - chars.clear(); - const char * as_ptr = ascii_str; - while (*as_ptr != '\0') - { - chars.push_back(*as_ptr); - } - return *this; -} - -unistring & unistring::operator+=(const unichar_t c) -{ - chars.push_back(c); - return *this; -} - -bool unistring::operator==(const char * ascii_str) -{ - int len = chars.size(); - if (len != strlen(ascii_str)) - return false; - for (int i = 0; i < len; i++) - { - if (chars[i] != ascii_str[i]) - return false; - } - return true; -} diff --git a/unicode.h b/unicode.h deleted file mode 100644 index 0d8e74e..0000000 --- a/unicode.h +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef UNICODE_H -#define UNICODE_H - -#include -#include - -typedef uint32_t unichar_t; - -class unistring -{ - public: - unistring & operator=(const char * ascii_str); - unistring & operator+=(const unichar_t c); - bool operator==(const char * ascii_str); - - protected: - std::vector chars; -}; - -#endif