/* -*- C++ -*- * Copyright (C) 2001-2003, Christof Meerwald * http://JabXPCOM.sunsite.dk */ /* * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; version 2 dated June, * 1991. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */ #include "jabxpcom-presence.h" #include "judoxpcom-wrapper.h" #include #include #include #include NS_IMPL_ISUPPORTS_INHERITED1(Jabber_Presence_Wrapper, Jabber_ConstPacket_Wrapper, jabIPresence) Jabber_Presence_Wrapper::Jabber_Presence_Wrapper(const jabberoo::Presence *presence) : Jabber_ConstPacket_Wrapper(presence), presence_(presence), managed_object_(false) { /* member initializers and constructor code */ #ifdef JABXPCOM_DEBUG printf("constructing Jabber_Presence_Wrapper(%d)\n", managed_object_); #endif } Jabber_Presence_Wrapper::Jabber_Presence_Wrapper(const char *jid, PresenceType ptype, ShowType stype, const char *status, PRInt32 priority) : Jabber_ConstPacket_Wrapper(presence_ = new jabberoo::Presence(jid, jabberoo::Presence::Type(ptype), jabberoo::Presence::Show(stype), status /* TODO: priority */)), managed_object_(true) { /* member initializers and constructor code */ #ifdef JABXPCOM_DEBUG printf("constructing Jabber_Presence_Wrapper(%d)\n", managed_object_); #endif } Jabber_Presence_Wrapper::~Jabber_Presence_Wrapper() { /* destructor code */ #ifdef JABXPCOM_DEBUG printf("deleting Jabber_Presence_Wrapper(%d)\n", managed_object_); #endif if (managed_object_) { delete presence_; } } /* readonly attribute PresenceType type; */ NS_IMETHODIMP Jabber_Presence_Wrapper::GetType(PresenceType *aType) { *aType = presence_->getType(); return NS_OK; } /* readonly attribute ShowType show; */ NS_IMETHODIMP Jabber_Presence_Wrapper::GetShow(ShowType *aShow) { *aShow = presence_->getShow(); return NS_OK; } /* readonly attribute string status; */ NS_IMETHODIMP Jabber_Presence_Wrapper::GetStatus(nsACString &aStatus) { const std::string status = presence_->getStatus(); aStatus.Assign(status.data(), status.length()); return NS_OK; } /* readonly attribute string showStr; */ NS_IMETHODIMP Jabber_Presence_Wrapper::GetShowStr(nsACString &aShowStr) { const std::string showStr = presence_->getShow_str(); aShowStr.Assign(showStr.data(), showStr.length()); return NS_OK; } /* readonly attribute long priority; */ NS_IMETHODIMP Jabber_Presence_Wrapper::GetPriority(PRInt32 *aPriority) { *aPriority = presence_->getPriority(); return NS_OK; } /* jabIPresence reply (in PresenceType ptype); */ NS_IMETHODIMP Jabber_Presence_Wrapper::Reply(PresenceType ptype, jabIPresence **_retval) { std::string from = presence_->getFrom(); *_retval = new Jabber_Presence_Wrapper(from.c_str(), ptype); NS_IF_ADDREF(*_retval); return NS_OK; } void Jabber_Presence_Wrapper::detach() { if (!managed_object_) { #ifdef JABXPCOM_DEBUG printf("detaching Jabber_ConstMessage_Wrapper()\n"); #endif presence_ = new jabberoo::Presence(*presence_); managed_object_ = true; Jabber_ConstPacket_Wrapper::detach(presence_); } }