/* Header file */
#include "iMonxpcom.h" // include nsISupports too
#include "nsISimpleEnumerator.h"
#include "nsIGenericFactory.h"

#define MONXPCOM_DESCRIPTION "Monxpcom est mon premier xpcom"
#define MONXPCOM_CID_STR "03b57938-57f6-4dcc-8bde-d69d8c4b572e"
#define MONXPCOM_CID \
  {0x03b57938, 0x57f6, 0x4dcc, \
    { 0x8b, 0xde, 0xd6, 0x9d, 0x8c, 0x4b, 0x57, 0x2e }}

#define MONXPCOM_CONTRACTID "@progysm.no-ip.org/xpcom/monxpcom"

class Monxpcom : public iMonxpcom
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_IMONXPCOM

  Monxpcom();

private:
  ~Monxpcom();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(Monxpcom, iMonxpcom)

Monxpcom::Monxpcom()
{
  /* member initializers and constructor code */
}

Monxpcom::~Monxpcom()
{
  /* destructor code */
}

/* void lock (); */
NS_IMETHODIMP Monxpcom::Lock()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void unlock (); */
NS_IMETHODIMP Monxpcom::Unlock()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addSite (in string url); */
NS_IMETHODIMP Monxpcom::AddSite(const char *url)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeSite (in string url); */
NS_IMETHODIMP Monxpcom::RemoveSite(const char *url)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsISimpleEnumerator sites; */
NS_IMETHODIMP Monxpcom::GetSites(nsISimpleEnumerator * *aSites)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP Monxpcom::SetSites(nsISimpleEnumerator * aSites)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */

NS_GENERIC_FACTORY_CONSTRUCTOR(Monxpcom)

static NS_METHOD MonxpcomRegistration(nsIComponentManager *aCompMgr, 
                                      nsIFile *aPath, 
                                      const char *registryLocation, 
                                      const char *componentType, 
                                      const nsModuleComponentInfo *info)
{
    return NS_OK;
}
static NS_METHOD MonxpcomUnregistration(nsIComponentManager *aCompMgr, 
                                        nsIFile *aPath, 
                                        const char *registryLocation, 
                                        const nsModuleComponentInfo *info)
{
    return NS_OK;
}

static const nsModuleComponentInfo components[] = 
{
  {
    MONXPCOM_DESCRIPTION,
    MONXPCOM_CID,
    MONXPCOM_CONTRACTID,
    MonxpcomConstructor,
    MonxpcomRegistration,
    MonxpcomUnregistration
  }
};

NS_IMPL_NSGETMODULE(Monxpcom, components)
