/* -*- 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-packet.h" #include "judoxpcom-wrapper.h" #include #include #include #include #include NS_IMPL_ISUPPORTS1(Jabber_ConstPacket_Wrapper, jabIConstPacket) Jabber_ConstPacket_Wrapper::Jabber_ConstPacket_Wrapper(const jabberoo::Packet *packet) : packet_(packet) { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ #ifdef JABXPCOM_DEBUG printf("constructing Jabber_ConstPacket_Wrapper()\n"); #endif } Jabber_ConstPacket_Wrapper::~Jabber_ConstPacket_Wrapper() { /* destructor code */ #ifdef JABXPCOM_DEBUG printf("deleting Jabber_ConstPacket_Wrapper()\n"); #endif } /* readonly attribute string from; */ NS_IMETHODIMP Jabber_ConstPacket_Wrapper::GetFrom(nsACString &aFrom) { const std::string from = packet_->getFrom(); aFrom.Assign(from.data(), from.length()); return NS_OK; } /* readonly attribute string sender; */ NS_IMETHODIMP Jabber_ConstPacket_Wrapper::GetSender(nsACString &aFrom) { const std::string from = packet_->getFrom(); aFrom.Assign(from.data(), from.length()); return NS_OK; } /* readonly attribute string to; */ NS_IMETHODIMP Jabber_ConstPacket_Wrapper::GetTo(nsACString &aTo) { const std::string to = packet_->getTo(); aTo.Assign(to.data(), to.length()); return NS_OK; } /* readonly attribute string to; */ NS_IMETHODIMP Jabber_ConstPacket_Wrapper::GetId(nsACString &aId) { const std::string id = packet_->getID(); aId.Assign(id.data(), id.length()); return NS_OK; } /* readonly attribute string error; */ NS_IMETHODIMP Jabber_ConstPacket_Wrapper::GetError(nsACString &aError) { const std::string error = packet_->getError(); aError.Assign(error.data(), error.length()); return NS_OK; } /* readonly attribute long errorCode; */ NS_IMETHODIMP Jabber_ConstPacket_Wrapper::GetErrorCode(PRInt32 *aErrorCode) { *aErrorCode = packet_->getErrorCode(); return NS_OK; } /* string toXML (); */ NS_IMETHODIMP Jabber_ConstPacket_Wrapper::ToXML(nsACString &_retval) { const std::string xml = packet_->toString(); _retval.Assign(xml.data(), xml.length()); return NS_OK; } /* judoIConstElement findExtension (in string ext); */ NS_IMETHODIMP Jabber_ConstPacket_Wrapper::FindExtension(const nsACString &ext, judoIConstElement **_retval) { std::string xmlns("jabber:x:"); xmlns += PromiseFlatCString(ext).get(); const judo::Element * const element_x = packet_->findX(xmlns); if (element_x) { *_retval = new Judo_ConstElement_Wrapper(element_x); NS_IF_ADDREF(*_retval); } else { *_retval = NULL; } return NS_OK; } /* readonly attribute judoIConstElement baseElement; */ NS_IMETHODIMP Jabber_ConstPacket_Wrapper::GetBaseElement(judoIConstElement * *aBaseElement) { *aBaseElement = new Judo_ConstElement_Wrapper(&packet_->getBaseElement()); NS_IF_ADDREF(*aBaseElement); return NS_OK; } NS_IMPL_ADDREF_USING_AGGREGATOR(Jabber_Packet_Wrapper, obj_) NS_IMPL_RELEASE_USING_AGGREGATOR(Jabber_Packet_Wrapper, obj_) NS_INTERFACE_MAP_BEGIN(Jabber_Packet_Wrapper) NS_INTERFACE_MAP_ENTRY(jabIPacket) NS_INTERFACE_MAP_END_AGGREGATED(obj_) Jabber_Packet_Wrapper::Jabber_Packet_Wrapper(nsISupports *obj, jabberoo::Packet &packet) : obj_(obj), packet_(packet) { /* member initializers and constructor code */ #ifdef JABXPCOM_DEBUG printf("constructing Jabber_Packet_Wrapper()\n"); #endif } Jabber_Packet_Wrapper::~Jabber_Packet_Wrapper() { /* destructor code */ #ifdef JABXPCOM_DEBUG printf("deleting Jabber_Packet_Wrapper()\n"); #endif } /* readonly attribute judoIElement baseElement; */ NS_IMETHODIMP Jabber_Packet_Wrapper::GetBaseElement(judoIElement **aBaseElement) { *aBaseElement = new Judo_Element_Wrapper(&packet_.getBaseElement()); NS_IF_ADDREF(*aBaseElement); return NS_OK; } /* judoIElement addExtension (in string ext); */ NS_IMETHODIMP Jabber_Packet_Wrapper::AddExtension(const nsACString &ext, judoIElement **_retval) { std::string xmlns("jabber:x:"); xmlns += PromiseFlatCString(ext).get(); judo::Element * const element_x = packet_.addX(xmlns); *_retval = new Judo_Element_Wrapper(element_x); NS_IF_ADDREF(*_retval); return NS_OK; } /* judoIElement findExtension (in string ext); */ NS_IMETHODIMP Jabber_Packet_Wrapper::FindExtension(const nsACString &ext, judoIElement **_retval) { std::string xmlns("jabber:x:"); xmlns += PromiseFlatCString(ext).get(); judo::Element * const element_x = packet_.findX(xmlns); if (element_x) { *_retval = new Judo_Element_Wrapper(element_x); NS_IF_ADDREF(*_retval); } else { *_retval = NULL; } return NS_OK; }