diff --git a/Makefile.am b/Makefile.am index 42c7968..74dbc82 100644 --- a/Makefile.am +++ b/Makefile.am @@ -77,7 +77,6 @@ libstrophe_la_SOURCES += src/parser_libxml2.c endif include_HEADERS = strophe.h -noinst_HEADERS = strophepp.h pkgconfig_DATA = libstrophe.pc diff --git a/src/oocontext.cpp b/src/oocontext.cpp deleted file mode 100644 index ed3c5ed..0000000 --- a/src/oocontext.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* oocontext.cpp -** strophe XMPP client library -- C++ context implementation -** -** Copyright (C) 2005-2009 Collecta, Inc. -** -** This software is provided AS-IS with no warranty, either express -** or implied. -** -** This program is dual licensed under the MIT and GPLv3 licenses. -*/ - -#include - -#include "strophe.h" -#include "strophepp.h" - -XMPP::Context::Context() -{ - m_mem.alloc = callAlloc; - m_mem.realloc = callRealloc; - m_mem.free = callFree; - m_mem.userdata = (void *)this; - - m_log.handler = callLog; - m_log.userdata = (void *)this; - - m_ctx = ::xmpp_ctx_new(&m_mem, &m_log); -} - -XMPP::Context::~Context() -{ - ::xmpp_ctx_free(m_ctx); -} - -void *XMPP::Context::alloc(const size_t size) -{ - return ::malloc(size); -} - -void *XMPP::Context::realloc(void *p, const size_t size) -{ - return ::realloc(p, size); -} - -void XMPP::Context::free(void *p) -{ - ::free(p); -} - -void XMPP::Context::log(const xmpp_log_level_t level, - const char * const area, - const char * const msg) -{ - /* do nothing by default */ -} - -xmpp_ctx_t *XMPP::Context::getContext() -{ - return m_ctx; -} - -void *XMPP::Context::callAlloc(const size_t size, void * const userdata) -{ - return reinterpret_cast(userdata)->alloc(size); -} - -void *XMPP::Context::callRealloc(void *p, const size_t size, - void * const userdata) -{ - return reinterpret_cast(userdata)->realloc(p, size); -} - -void XMPP::Context::callFree(void *p, void * const userdata) -{ - reinterpret_cast(userdata)->free(p); -} - -void XMPP::Context::callLog(void * const userdata, - const xmpp_log_level_t level, - const char * const area, - const char * const msg) -{ - reinterpret_cast(userdata)->log(level, area, msg); -} diff --git a/src/oostanza.cpp b/src/oostanza.cpp deleted file mode 100644 index e208094..0000000 --- a/src/oostanza.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* oostanza.cpp -** strophe XMPP client library -- C++ context implementation -** -** Copyright (C) 2005-2009 Collecta, Inc. -** -** This software is provided AS-IS with no warranty, either express -** or implied. -** -** This program is dual licensed under the MIT and GPLv3 licenses. -*/ - -#include "strophe.h" -#include "strophepp.h" - -using namespace XMPP; - -void *Stanza::operator new(size_t size, Context *ctx) -{ - void *p; - - /* we must allocate extra room for the Context object so that the - destructor can access it to free the object. C++ does not allow - us to access normal members in the destructor, so we have to hide - it. This must be prepended as well, since C++ will add stuff to - the end in subclasses. */ - - p = ctx->alloc(size + sizeof(Context *)); - if (!p) return p; - - *reinterpret_cast(p) = ctx; - p = reinterpret_cast(reinterpret_cast(p) + - sizeof(Context *)); - - return p; -} - -void Stanza::operator delete(void *p) -{ - Context *ctx; - - ctx = *reinterpret_cast(reinterpret_cast(p) - 4); - ctx->free(reinterpret_cast(p) - 4); -} - -Stanza::Stanza(Context *ctx) -{ - m_ctx = ctx; - m_stanza = ::xmpp_stanza_new(ctx->getContext()); - // TODO: check for errors -} - -Stanza::~Stanza() -{ -} - -Stanza *Stanza::create(Context *ctx) -{ - return new (ctx) Stanza(ctx); -} - -void Stanza::release() -{ - if (::xmpp_stanza_release(m_stanza)) - delete this; -} - -Stanza *Stanza::clone() -{ - ::xmpp_stanza_clone(m_stanza); - return this; -} - -Stanza *Stanza::copy() -{ - // TODO - return NULL; -} diff --git a/strophepp.h b/strophepp.h deleted file mode 100644 index ece8711..0000000 --- a/strophepp.h +++ /dev/null @@ -1,136 +0,0 @@ -/* strophepp.h -** strophe XMPP client library C++ API -** -** Copyright (C) 2005-2009 Collecta, Inc. -** -** This software is provided AS-IS with no warranty, either express or -** implied. -** -** This program is dual licensed under the MIT and GPLv3 licenses. -*/ - -/** @file - * Strophe public C++ API definitions. - */ - -#ifndef __LIBSTROPHE_STROPHEPP_H__ -#define __LIBSTROPHE_STROPHEPP_H__ - -#include "strophe.h" - -namespace XMPP -{ -class Context -{ - private: - xmpp_mem_t m_mem; - xmpp_log_t m_log; - xmpp_ctx_t *m_ctx; - - public: - Context(); - virtual ~Context(); - - virtual void *alloc(const size_t size); - virtual void *realloc(void *p, const size_t size); - virtual void free(void *p); - virtual void log(const xmpp_log_level_t level, - const char *const area, - const char *const msg); - - xmpp_ctx_t *getContext(); - - private: - static void *callAlloc(const size_t size, void *const userdata); - static void *callRealloc(void *p, const size_t size, void *const userdata); - static void callFree(void *p, void *const userdata); - static void callLog(void *const userdata, - const xmpp_log_level_t level, - const char *const area, - const char *const msg); -}; - -class Stanza -{ - private: - Context *m_ctx; - xmpp_stanza_t *m_stanza; - - void *operator new(size_t size, Context *ctx); - void operator delete(void *p); - Stanza(Context *ctx); - virtual ~Stanza(); - - public: - static Stanza *create(Context *ctx); - void release(); - Stanza *clone(); - Stanza *copy(); - - int toText(const char **const buf, size_t *const buflen); - Stanza *getChildren(); - Stanza *getChildByName(const char *const name); - Stanza *getNext(); - char *getAttribute(const char *const name); - char *getNamespace(); - char *getText(); - char *getName(); - void addChild(Stanza *child); - void setNamespace(const char *const ns); - void setAttribute(const char *const key, const char *const value); - void setName(const char *const name); - void setText(const char *const text); - void setText(const char *const text, const size_t size); - char *getType(); - char *getId(); - char *getTo(); - char *getFrom(); - void setType(const char *const type); - void setId(const char *const id); - void setTo(const char *const to); - void setFrom(const char *const from); -}; - -class Connection -{ - private: - Context *m_ctx; - xmpp_conn_t *conn; - - void *operator new(size_t size, Context *ctx); - Connection(Context *ctx); - - public: - static Connection *create(Context *ctx); - virtual ~Connection(); - Connection *clone(); - void operator delete(void *p); - - const char *getJID(); - void setJID(const char *const jid); - const char *getPass(); - void setPass(const char *const pass); - bool connectClient(const char *const domain, - xmpp_conn_handler callback, - void *const userdata); - void disconnect(); - void send(Stanza *stanza); - - void addTimedHandler(xmpp_timed_handler handler, - const unsigned long perdio, - void *const userdata); - void deleteTimedHandler(xmpp_timed_handler handler); - void addHandler(xmpp_handler handler, - const char *const ns, - const char *const name, - const char *const type, - void *const userdata); - void deleteHandler(xmpp_handler handler); - void addIdHandler(xmpp_handler handler, - const char *const id, - void *const userdata); - void deleteIdHandler(xmpp_handler handler); -}; -} // namespace XMPP - -#endif /* __LIBSTROPHE_STROPHEPP_H__ */