//
//     Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
//     may also apply


//                 Generated by preSip
//            module kio  version KDE 3.5.3


// This software is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// This software 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this library; see the file COPYING.
// If not, write to the Free Software Foundation, Inc.,
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


class KSycocaEntry : KShared
{
%TypeHeaderCode
#include <ksycocaentry.h>
%End


public:
    virtual bool         isType (KSycocaType) const;
    virtual KSycocaType  sycocaType () const;

public:
//ig     typedef KSharedPtr<KSycocaEntry> Ptr;
//ig     typedef QValueList<KSycocaEntry::Ptr> List;

public:
                         KSycocaEntry (const QString&);

%If ( KDE_3_1_0 -  )
    static void          read (QDataStream&, QString&);
    static void          read (QDataStream&, QStringList&);
%End

                         KSycocaEntry (QDataStream&, int);
    virtual QString      name () const = 0;
    QString              entryPath () const;
    virtual bool         isValid () const = 0;
    virtual bool         isDeleted () const;
    int                  offset ();
    virtual void         save (QDataStream&);
    virtual void         load (QDataStream&)  = 0;

protected:

protected:
//igx     virtual void         virtual_hook (int, void*);

};  // class KSycocaEntry



%MappedType KSycocaEntry::Ptr
//converts KSycocaEntry
{
%TypeHeaderCode
#include <ksharedptr.h>
#include <ksycocaentry.h>
#include <sipkioKSycocaEntry.h>
%End

%ConvertFromTypeCode
    // Convert to a Python instance

    if (!sipCpp)
        return NULL;

    KSharedPtr<KSycocaEntry> *cPtr = new KSharedPtr<KSycocaEntry> (*(KSharedPtr<KSycocaEntry> *)sipCpp);
    KSycocaEntry *cpp = cPtr->data ();
    PyObject *obj = sipConvertFromInstance (cpp, sipClass_KSycocaEntry, sipTransferObj);

    return obj;
%End

%ConvertToTypeCode
    // Convert a Python instance to a Ptr on the heap.

    if (sipIsErr == NULL)
        return PyInstance_Check(sipPy);

    int iserr = 0;
    KSycocaEntry *cpp = (KSycocaEntry *)sipForceConvertTo_KSycocaEntry (sipPy, &iserr);

    if (iserr)
    {
        *sipIsErr = 1;
        return 0;
    }

    *sipCppPtr = new KSharedPtr<KSycocaEntry> (cpp);

    return 1;
%End
};


%MappedType KSycocaEntry::List
//converts a Python list of KSycocaEntry
{
%TypeHeaderCode
#include <ksharedptr.h>
#include <kservice.h>
#include <kservicegroup.h>
#include <ksycocaentry.h>
#include <sipkioKSycocaEntry.h>
#include <ksycocatype.h>
#include <sipkioKService.h>
#include <sipkioKServicePtr.h>
#include <sipkioKServiceGroup.h>
#include <sipkioKServiceGroupPtr.h>
#include <qvaluelist.h>
%End

%ConvertFromTypeCode
    // Convert to a Python list of Ptr (KService).

        if (!sipCpp)
                return PyList_New (0);

        PyObject *plist;

    // Create the list

    if ((plist = PyList_New(0)) == NULL)
        return NULL;

    // Get it.

        KSycocaEntry::List *cList = (KSycocaEntry::List *)sipCpp;
        PyObject *inst;
        KSharedPtr<KSycocaEntry> *svc;
        KSharedPtr <KService> *svcType;
        KSharedPtr <KServiceGroup> *svcGroupType;

    KSycocaEntry::List::Iterator it;
        for( it = cList->begin(); it != cList->end(); ++it )
    {
                svc  = &(KSycocaEntry::Ptr)(*it);
                if (svc->data ()->sycocaType () == KST_KService)
                {
                    svcType = (KSharedPtr<KService> *)svc;
                    inst    = sipConvertFrom_KService_Ptr (svcType, sipTransferObj);
                }
                else if (svc->data ()->sycocaType () == KST_KServiceGroup)
                {
                    svcGroupType = (KSharedPtr <KServiceGroup> *) svc;
                    inst    = sipConvertFrom_KServiceGroup_Ptr (svcGroupType, sipTransferObj);
                }
                else
                        inst = NULL;

                if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
                {
                        Py_XDECREF (inst);
                        Py_DECREF (plist);
                        return NULL;
                }
    }

        return plist;
%End

%ConvertToTypeCode
    // Convert a Python list to List on the heap.

    if (sipIsErr == NULL)
        return PyList_Check(sipPy);

        KSycocaEntry::List *cList = new KSycocaEntry::List;

        PyObject *elem;
        KSycocaEntry *service;
        int iserr = 0;

        for (int i = 0; i < PyList_Size (sipPy); i++)
        {
            elem = PyList_GET_ITEM (sipPy, i);
            service = (KSycocaEntry *)sipForceConvertTo_KSycocaEntry (elem, &iserr);

            KSycocaEntry::Ptr *ptr = new KSycocaEntry::Ptr (service);

            if (iserr)
            {
                *sipIsErr = 1;
                        delete cList;
                        return 0;
            }

                cList->append (*ptr);
        }

    *sipCppPtr = cList;

    return 1;
%End
};


