/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM ../../../dist/idl/nsIAbLDAPAttributeMap.idl
 */

#ifndef __gen_nsIAbLDAPAttributeMap_h__
#define __gen_nsIAbLDAPAttributeMap_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsILDAPMessage; /* forward declaration */

class nsIAbCard; /* forward declaration */


/* starting interface:    nsIAbLDAPAttributeMap */
#define NS_IABLDAPATTRIBUTEMAP_IID_STR "fa019fd1-7f3d-417a-8957-154cca0240be"

#define NS_IABLDAPATTRIBUTEMAP_IID \
  {0xfa019fd1, 0x7f3d, 0x417a, \
    { 0x89, 0x57, 0x15, 0x4c, 0xca, 0x02, 0x40, 0xbe }}

class NS_NO_VTABLE nsIAbLDAPAttributeMap : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IABLDAPATTRIBUTEMAP_IID)

  /* ACString getAttributeList (in ACString aProperty); */
  NS_IMETHOD GetAttributeList(const nsACString & aProperty, nsACString & _retval) = 0;

  /* void getAttributes (in ACString aProperty, out unsigned long aCount, [array, size_is (aCount), retval] out string aAttrs); */
  NS_IMETHOD GetAttributes(const nsACString & aProperty, uint32_t *aCount, char * **aAttrs) = 0;

  /* ACString getFirstAttribute (in ACString aProperty); */
  NS_IMETHOD GetFirstAttribute(const nsACString & aProperty, nsACString & _retval) = 0;

  /* void setAttributeList (in ACString aProperty, in ACString aAttributeList, in boolean allowInconsistencies); */
  NS_IMETHOD SetAttributeList(const nsACString & aProperty, const nsACString & aAttributeList, bool allowInconsistencies) = 0;

  /* ACString getProperty (in ACString aAttribute); */
  NS_IMETHOD GetProperty(const nsACString & aAttribute, nsACString & _retval) = 0;

  /* ACString getAllCardAttributes (); */
  NS_IMETHOD GetAllCardAttributes(nsACString & _retval) = 0;

  /* void getAllCardProperties (out unsigned long aCount, [array, size_is (aCount), retval] out string aProps); */
  NS_IMETHOD GetAllCardProperties(uint32_t *aCount, char * **aProps) = 0;

  /* void checkState (); */
  NS_IMETHOD CheckState(void) = 0;

  /* void setFromPrefs (in ACString aPrefBranchName); */
  NS_IMETHOD SetFromPrefs(const nsACString & aPrefBranchName) = 0;

  /* void setCardPropertiesFromLDAPMessage (in nsILDAPMessage aMessage, in nsIAbCard aCard); */
  NS_IMETHOD SetCardPropertiesFromLDAPMessage(nsILDAPMessage *aMessage, nsIAbCard *aCard) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAbLDAPAttributeMap, NS_IABLDAPATTRIBUTEMAP_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIABLDAPATTRIBUTEMAP \
  NS_IMETHOD GetAttributeList(const nsACString & aProperty, nsACString & _retval) override; \
  NS_IMETHOD GetAttributes(const nsACString & aProperty, uint32_t *aCount, char * **aAttrs) override; \
  NS_IMETHOD GetFirstAttribute(const nsACString & aProperty, nsACString & _retval) override; \
  NS_IMETHOD SetAttributeList(const nsACString & aProperty, const nsACString & aAttributeList, bool allowInconsistencies) override; \
  NS_IMETHOD GetProperty(const nsACString & aAttribute, nsACString & _retval) override; \
  NS_IMETHOD GetAllCardAttributes(nsACString & _retval) override; \
  NS_IMETHOD GetAllCardProperties(uint32_t *aCount, char * **aProps) override; \
  NS_IMETHOD CheckState(void) override; \
  NS_IMETHOD SetFromPrefs(const nsACString & aPrefBranchName) override; \
  NS_IMETHOD SetCardPropertiesFromLDAPMessage(nsILDAPMessage *aMessage, nsIAbCard *aCard) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIABLDAPATTRIBUTEMAP \
  NS_METHOD GetAttributeList(const nsACString & aProperty, nsACString & _retval); \
  NS_METHOD GetAttributes(const nsACString & aProperty, uint32_t *aCount, char * **aAttrs); \
  NS_METHOD GetFirstAttribute(const nsACString & aProperty, nsACString & _retval); \
  NS_METHOD SetAttributeList(const nsACString & aProperty, const nsACString & aAttributeList, bool allowInconsistencies); \
  NS_METHOD GetProperty(const nsACString & aAttribute, nsACString & _retval); \
  NS_METHOD GetAllCardAttributes(nsACString & _retval); \
  NS_METHOD GetAllCardProperties(uint32_t *aCount, char * **aProps); \
  NS_METHOD CheckState(void); \
  NS_METHOD SetFromPrefs(const nsACString & aPrefBranchName); \
  NS_METHOD SetCardPropertiesFromLDAPMessage(nsILDAPMessage *aMessage, nsIAbCard *aCard); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIABLDAPATTRIBUTEMAP(_to) \
  NS_IMETHOD GetAttributeList(const nsACString & aProperty, nsACString & _retval) override { return _to GetAttributeList(aProperty, _retval); } \
  NS_IMETHOD GetAttributes(const nsACString & aProperty, uint32_t *aCount, char * **aAttrs) override { return _to GetAttributes(aProperty, aCount, aAttrs); } \
  NS_IMETHOD GetFirstAttribute(const nsACString & aProperty, nsACString & _retval) override { return _to GetFirstAttribute(aProperty, _retval); } \
  NS_IMETHOD SetAttributeList(const nsACString & aProperty, const nsACString & aAttributeList, bool allowInconsistencies) override { return _to SetAttributeList(aProperty, aAttributeList, allowInconsistencies); } \
  NS_IMETHOD GetProperty(const nsACString & aAttribute, nsACString & _retval) override { return _to GetProperty(aAttribute, _retval); } \
  NS_IMETHOD GetAllCardAttributes(nsACString & _retval) override { return _to GetAllCardAttributes(_retval); } \
  NS_IMETHOD GetAllCardProperties(uint32_t *aCount, char * **aProps) override { return _to GetAllCardProperties(aCount, aProps); } \
  NS_IMETHOD CheckState(void) override { return _to CheckState(); } \
  NS_IMETHOD SetFromPrefs(const nsACString & aPrefBranchName) override { return _to SetFromPrefs(aPrefBranchName); } \
  NS_IMETHOD SetCardPropertiesFromLDAPMessage(nsILDAPMessage *aMessage, nsIAbCard *aCard) override { return _to SetCardPropertiesFromLDAPMessage(aMessage, aCard); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIABLDAPATTRIBUTEMAP(_to) \
  NS_IMETHOD GetAttributeList(const nsACString & aProperty, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttributeList(aProperty, _retval); } \
  NS_IMETHOD GetAttributes(const nsACString & aProperty, uint32_t *aCount, char * **aAttrs) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttributes(aProperty, aCount, aAttrs); } \
  NS_IMETHOD GetFirstAttribute(const nsACString & aProperty, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstAttribute(aProperty, _retval); } \
  NS_IMETHOD SetAttributeList(const nsACString & aProperty, const nsACString & aAttributeList, bool allowInconsistencies) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetAttributeList(aProperty, aAttributeList, allowInconsistencies); } \
  NS_IMETHOD GetProperty(const nsACString & aAttribute, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperty(aAttribute, _retval); } \
  NS_IMETHOD GetAllCardAttributes(nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllCardAttributes(_retval); } \
  NS_IMETHOD GetAllCardProperties(uint32_t *aCount, char * **aProps) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAllCardProperties(aCount, aProps); } \
  NS_IMETHOD CheckState(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CheckState(); } \
  NS_IMETHOD SetFromPrefs(const nsACString & aPrefBranchName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFromPrefs(aPrefBranchName); } \
  NS_IMETHOD SetCardPropertiesFromLDAPMessage(nsILDAPMessage *aMessage, nsIAbCard *aCard) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCardPropertiesFromLDAPMessage(aMessage, aCard); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsAbLDAPAttributeMap : public nsIAbLDAPAttributeMap
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIABLDAPATTRIBUTEMAP

  nsAbLDAPAttributeMap();

private:
  ~nsAbLDAPAttributeMap();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsAbLDAPAttributeMap, nsIAbLDAPAttributeMap)

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

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

/* ACString getAttributeList (in ACString aProperty); */
NS_IMETHODIMP nsAbLDAPAttributeMap::GetAttributeList(const nsACString & aProperty, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getAttributes (in ACString aProperty, out unsigned long aCount, [array, size_is (aCount), retval] out string aAttrs); */
NS_IMETHODIMP nsAbLDAPAttributeMap::GetAttributes(const nsACString & aProperty, uint32_t *aCount, char * **aAttrs)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString getFirstAttribute (in ACString aProperty); */
NS_IMETHODIMP nsAbLDAPAttributeMap::GetFirstAttribute(const nsACString & aProperty, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setAttributeList (in ACString aProperty, in ACString aAttributeList, in boolean allowInconsistencies); */
NS_IMETHODIMP nsAbLDAPAttributeMap::SetAttributeList(const nsACString & aProperty, const nsACString & aAttributeList, bool allowInconsistencies)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString getProperty (in ACString aAttribute); */
NS_IMETHODIMP nsAbLDAPAttributeMap::GetProperty(const nsACString & aAttribute, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString getAllCardAttributes (); */
NS_IMETHODIMP nsAbLDAPAttributeMap::GetAllCardAttributes(nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getAllCardProperties (out unsigned long aCount, [array, size_is (aCount), retval] out string aProps); */
NS_IMETHODIMP nsAbLDAPAttributeMap::GetAllCardProperties(uint32_t *aCount, char * **aProps)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void checkState (); */
NS_IMETHODIMP nsAbLDAPAttributeMap::CheckState()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFromPrefs (in ACString aPrefBranchName); */
NS_IMETHODIMP nsAbLDAPAttributeMap::SetFromPrefs(const nsACString & aPrefBranchName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCardPropertiesFromLDAPMessage (in nsILDAPMessage aMessage, in nsIAbCard aCard); */
NS_IMETHODIMP nsAbLDAPAttributeMap::SetCardPropertiesFromLDAPMessage(nsILDAPMessage *aMessage, nsIAbCard *aCard)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIAbLDAPAttributeMapService */
#define NS_IABLDAPATTRIBUTEMAPSERVICE_IID_STR "12e2d589-3c2a-48e4-8c82-b1e6464a0dfd"

#define NS_IABLDAPATTRIBUTEMAPSERVICE_IID \
  {0x12e2d589, 0x3c2a, 0x48e4, \
    { 0x8c, 0x82, 0xb1, 0xe6, 0x46, 0x4a, 0x0d, 0xfd }}

class NS_NO_VTABLE nsIAbLDAPAttributeMapService : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IABLDAPATTRIBUTEMAPSERVICE_IID)

  /* nsIAbLDAPAttributeMap getMapForPrefBranch (in ACString aPrefBranchName); */
  NS_IMETHOD GetMapForPrefBranch(const nsACString & aPrefBranchName, nsIAbLDAPAttributeMap * *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAbLDAPAttributeMapService, NS_IABLDAPATTRIBUTEMAPSERVICE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIABLDAPATTRIBUTEMAPSERVICE \
  NS_IMETHOD GetMapForPrefBranch(const nsACString & aPrefBranchName, nsIAbLDAPAttributeMap * *_retval) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSIABLDAPATTRIBUTEMAPSERVICE \
  NS_METHOD GetMapForPrefBranch(const nsACString & aPrefBranchName, nsIAbLDAPAttributeMap * *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIABLDAPATTRIBUTEMAPSERVICE(_to) \
  NS_IMETHOD GetMapForPrefBranch(const nsACString & aPrefBranchName, nsIAbLDAPAttributeMap * *_retval) override { return _to GetMapForPrefBranch(aPrefBranchName, _retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIABLDAPATTRIBUTEMAPSERVICE(_to) \
  NS_IMETHOD GetMapForPrefBranch(const nsACString & aPrefBranchName, nsIAbLDAPAttributeMap * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMapForPrefBranch(aPrefBranchName, _retval); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsAbLDAPAttributeMapService : public nsIAbLDAPAttributeMapService
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIABLDAPATTRIBUTEMAPSERVICE

  nsAbLDAPAttributeMapService();

private:
  ~nsAbLDAPAttributeMapService();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsAbLDAPAttributeMapService, nsIAbLDAPAttributeMapService)

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

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

/* nsIAbLDAPAttributeMap getMapForPrefBranch (in ACString aPrefBranchName); */
NS_IMETHODIMP nsAbLDAPAttributeMapService::GetMapForPrefBranch(const nsACString & aPrefBranchName, nsIAbLDAPAttributeMap * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

// test whether one of the getters has actually found an attribute
#define ATTRMAP_FOUND_ATTR(rv, str) (NS_SUCCEEDED(rv) && !(str).IsEmpty())

#endif /* __gen_nsIAbLDAPAttributeMap_h__ */
