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

#ifndef __gen_nsIAbLDAPCard_h__
#define __gen_nsIAbLDAPCard_h__


#ifndef __gen_nsIAbCard_h__
#include "nsIAbCard.h"
#endif

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

class nsILDAPModification; /* forward declaration */

class nsILDAPMessage; /* forward declaration */

class nsIArray; /* forward declaration */


/* starting interface:    nsIAbLDAPCard */
#define NS_IABLDAPCARD_IID_STR "2831b3b0-30ef-4070-8ad3-90ae04980e11"

#define NS_IABLDAPCARD_IID \
  {0x2831b3b0, 0x30ef, 0x4070, \
    { 0x8a, 0xd3, 0x90, 0xae, 0x04, 0x98, 0x0e, 0x11 }}

class NS_NO_VTABLE NS_SCRIPTABLE nsIAbLDAPCard : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IABLDAPCARD_IID)

  /**
   * Returns the required information for an LDAP update message.
   *
   * @param  aAttrMap    The map between LDAP attributes and card properties
   * @param  aClassCount The number of objectClass values
   * @param  aClasses    The objectClass values that the card needs to have
   * @param  updateType  This should be one of:
   *                         nsILDAPModification::MOD_ADD
   *                         nsILDAPModification::MOD_REPLACE
   *
   * @return             Returns an array of modifications required to
   *                     add or replace the card in the ldap directory.
   */
  /* nsIArray getLDAPMessageInfo (in nsIAbLDAPAttributeMap aAttrMap, in unsigned long aClassCount, [array, size_is (aClassCount)] in string aClasses, in long updateType); */
  NS_SCRIPTABLE NS_IMETHOD GetLDAPMessageInfo(nsIAbLDAPAttributeMap *aAttrMap, PRUint32 aClassCount, const char **aClasses, PRInt32 updateType, nsIArray **_retval NS_OUTPARAM) = 0;

  /**
   * Builds a relative distinguished name (RDN) with the given set of
   * attributes.
   *
   * @param  aAttrMap    The map between LDAP attributes and card properties
   * @param  aAttrCount  The number of attributes to use for the RDN
   * @param  aAttributes The name of the attributes to use for the RDN
   *
   */
  /* ACString buildRdn (in nsIAbLDAPAttributeMap aAttrMap, in unsigned long aAttrCount, [array, size_is (aAttrCount)] in string aAttributes); */
  NS_SCRIPTABLE NS_IMETHOD BuildRdn(nsIAbLDAPAttributeMap *aAttrMap, PRUint32 aAttrCount, const char **aAttributes, nsACString & _retval NS_OUTPARAM) = 0;

  /**
   * Stores meta-properties from a raw LDAP search result.
   *
   * @param aMessage     The LDAP search result message.
   *
   */
  /* void setMetaProperties (in nsILDAPMessage aMessage); */
  NS_SCRIPTABLE NS_IMETHOD SetMetaProperties(nsILDAPMessage *aMessage) = 0;

  /* attribute ACString dn; */
  NS_SCRIPTABLE NS_IMETHOD GetDn(nsACString & aDn) = 0;
  NS_SCRIPTABLE NS_IMETHOD SetDn(const nsACString & aDn) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAbLDAPCard, NS_IABLDAPCARD_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIABLDAPCARD \
  NS_SCRIPTABLE NS_IMETHOD GetLDAPMessageInfo(nsIAbLDAPAttributeMap *aAttrMap, PRUint32 aClassCount, const char **aClasses, PRInt32 updateType, nsIArray **_retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD BuildRdn(nsIAbLDAPAttributeMap *aAttrMap, PRUint32 aAttrCount, const char **aAttributes, nsACString & _retval NS_OUTPARAM); \
  NS_SCRIPTABLE NS_IMETHOD SetMetaProperties(nsILDAPMessage *aMessage); \
  NS_SCRIPTABLE NS_IMETHOD GetDn(nsACString & aDn); \
  NS_SCRIPTABLE NS_IMETHOD SetDn(const nsACString & aDn); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIABLDAPCARD(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetLDAPMessageInfo(nsIAbLDAPAttributeMap *aAttrMap, PRUint32 aClassCount, const char **aClasses, PRInt32 updateType, nsIArray **_retval NS_OUTPARAM) { return _to GetLDAPMessageInfo(aAttrMap, aClassCount, aClasses, updateType, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD BuildRdn(nsIAbLDAPAttributeMap *aAttrMap, PRUint32 aAttrCount, const char **aAttributes, nsACString & _retval NS_OUTPARAM) { return _to BuildRdn(aAttrMap, aAttrCount, aAttributes, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD SetMetaProperties(nsILDAPMessage *aMessage) { return _to SetMetaProperties(aMessage); } \
  NS_SCRIPTABLE NS_IMETHOD GetDn(nsACString & aDn) { return _to GetDn(aDn); } \
  NS_SCRIPTABLE NS_IMETHOD SetDn(const nsACString & aDn) { return _to SetDn(aDn); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIABLDAPCARD(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetLDAPMessageInfo(nsIAbLDAPAttributeMap *aAttrMap, PRUint32 aClassCount, const char **aClasses, PRInt32 updateType, nsIArray **_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLDAPMessageInfo(aAttrMap, aClassCount, aClasses, updateType, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD BuildRdn(nsIAbLDAPAttributeMap *aAttrMap, PRUint32 aAttrCount, const char **aAttributes, nsACString & _retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->BuildRdn(aAttrMap, aAttrCount, aAttributes, _retval); } \
  NS_SCRIPTABLE NS_IMETHOD SetMetaProperties(nsILDAPMessage *aMessage) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMetaProperties(aMessage); } \
  NS_SCRIPTABLE NS_IMETHOD GetDn(nsACString & aDn) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDn(aDn); } \
  NS_SCRIPTABLE NS_IMETHOD SetDn(const nsACString & aDn) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDn(aDn); } 

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

/* Header file */
class nsAbLDAPCard : public nsIAbLDAPCard
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIABLDAPCARD

  nsAbLDAPCard();

private:
  ~nsAbLDAPCard();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsAbLDAPCard, nsIAbLDAPCard)

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

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

/* nsIArray getLDAPMessageInfo (in nsIAbLDAPAttributeMap aAttrMap, in unsigned long aClassCount, [array, size_is (aClassCount)] in string aClasses, in long updateType); */
NS_IMETHODIMP nsAbLDAPCard::GetLDAPMessageInfo(nsIAbLDAPAttributeMap *aAttrMap, PRUint32 aClassCount, const char **aClasses, PRInt32 updateType, nsIArray **_retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString buildRdn (in nsIAbLDAPAttributeMap aAttrMap, in unsigned long aAttrCount, [array, size_is (aAttrCount)] in string aAttributes); */
NS_IMETHODIMP nsAbLDAPCard::BuildRdn(nsIAbLDAPAttributeMap *aAttrMap, PRUint32 aAttrCount, const char **aAttributes, nsACString & _retval NS_OUTPARAM)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setMetaProperties (in nsILDAPMessage aMessage); */
NS_IMETHODIMP nsAbLDAPCard::SetMetaProperties(nsILDAPMessage *aMessage)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString dn; */
NS_IMETHODIMP nsAbLDAPCard::GetDn(nsACString & aDn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbLDAPCard::SetDn(const nsACString & aDn)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIAbLDAPCard_h__ */
