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

#ifndef __gen_nsIAbCard_h__
#define __gen_nsIAbCard_h__


#ifndef __gen_nsIAbItem_h__
#include "nsIAbItem.h"
#endif

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

class nsIVariant; /* forward declaration */


/* starting interface:    nsIAbPreferMailFormat */
#define NS_IABPREFERMAILFORMAT_IID_STR "97448252-f189-11d4-a422-001083003d0c"

#define NS_IABPREFERMAILFORMAT_IID \
  {0x97448252, 0xf189, 0x11d4, \
    { 0xa4, 0x22, 0x00, 0x10, 0x83, 0x00, 0x3d, 0x0c }}

class NS_NO_VTABLE nsIAbPreferMailFormat {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IABPREFERMAILFORMAT_IID)

  enum {
    unknown = 0U,
    plaintext = 1U,
    html = 2U
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAbPreferMailFormat, NS_IABPREFERMAILFORMAT_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIABPREFERMAILFORMAT \

/* 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_NSIABPREFERMAILFORMAT \

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIABPREFERMAILFORMAT(_to) \

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIABPREFERMAILFORMAT(_to) \

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

/* Header file */
class nsAbPreferMailFormat : public nsIAbPreferMailFormat
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIABPREFERMAILFORMAT

  nsAbPreferMailFormat();

private:
  ~nsAbPreferMailFormat();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsAbPreferMailFormat, nsIAbPreferMailFormat)

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

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

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


/* starting interface:    nsIAbCard */
#define NS_IABCARD_IID_STR "9bddf024-5178-4097-894e-d84b4ddde101"

#define NS_IABCARD_IID \
  {0x9bddf024, 0x5178, 0x4097, \
    { 0x89, 0x4e, 0xd8, 0x4b, 0x4d, 0xdd, 0xe1, 0x01 }}

class NS_NO_VTABLE nsIAbCard : public nsIAbItem {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IABCARD_IID)

  /* attribute AUTF8String directoryId; */
  NS_IMETHOD GetDirectoryId(nsACString & aDirectoryId) = 0;
  NS_IMETHOD SetDirectoryId(const nsACString & aDirectoryId) = 0;

  /* attribute AUTF8String localId; */
  NS_IMETHOD GetLocalId(nsACString & aLocalId) = 0;
  NS_IMETHOD SetLocalId(const nsACString & aLocalId) = 0;

  /* readonly attribute nsISimpleEnumerator properties; */
  NS_IMETHOD GetProperties(nsISimpleEnumerator * *aProperties) = 0;

  /* nsIVariant getProperty (in AUTF8String name, in nsIVariant defaultValue); */
  NS_IMETHOD GetProperty(const nsACString & name, nsIVariant *defaultValue, nsIVariant * *_retval) = 0;

  /* AString getPropertyAsAString (in string name); */
  NS_IMETHOD GetPropertyAsAString(const char * name, nsAString & _retval) = 0;

  /* AUTF8String getPropertyAsAUTF8String (in string name); */
  NS_IMETHOD GetPropertyAsAUTF8String(const char * name, nsACString & _retval) = 0;

  /* unsigned long getPropertyAsUint32 (in string name); */
  NS_IMETHOD GetPropertyAsUint32(const char * name, uint32_t *_retval) = 0;

  /* boolean getPropertyAsBool (in string name); */
  NS_IMETHOD GetPropertyAsBool(const char * name, bool *_retval) = 0;

  /* void setProperty (in AUTF8String name, in nsIVariant value); */
  NS_IMETHOD SetProperty(const nsACString & name, nsIVariant *value) = 0;

  /* void setPropertyAsAString (in string name, in AString value); */
  NS_IMETHOD SetPropertyAsAString(const char * name, const nsAString & value) = 0;

  /* void setPropertyAsAUTF8String (in string name, in AUTF8String value); */
  NS_IMETHOD SetPropertyAsAUTF8String(const char * name, const nsACString & value) = 0;

  /* void setPropertyAsUint32 (in string name, in unsigned long value); */
  NS_IMETHOD SetPropertyAsUint32(const char * name, uint32_t value) = 0;

  /* void setPropertyAsBool (in string name, in boolean value); */
  NS_IMETHOD SetPropertyAsBool(const char * name, bool value) = 0;

  /* void deleteProperty (in AUTF8String name); */
  NS_IMETHOD DeleteProperty(const nsACString & name) = 0;

  /* attribute AString firstName; */
  NS_IMETHOD GetFirstName(nsAString & aFirstName) = 0;
  NS_IMETHOD SetFirstName(const nsAString & aFirstName) = 0;

  /* attribute AString lastName; */
  NS_IMETHOD GetLastName(nsAString & aLastName) = 0;
  NS_IMETHOD SetLastName(const nsAString & aLastName) = 0;

  /* attribute AString displayName; */
  NS_IMETHOD GetDisplayName(nsAString & aDisplayName) = 0;
  NS_IMETHOD SetDisplayName(const nsAString & aDisplayName) = 0;

  /* attribute AString primaryEmail; */
  NS_IMETHOD GetPrimaryEmail(nsAString & aPrimaryEmail) = 0;
  NS_IMETHOD SetPrimaryEmail(const nsAString & aPrimaryEmail) = 0;

  /* boolean hasEmailAddress (in AUTF8String aEmailAddress); */
  NS_IMETHOD HasEmailAddress(const nsACString & aEmailAddress, bool *_retval) = 0;

  /* AUTF8String translateTo (in AUTF8String aType); */
  NS_IMETHOD TranslateTo(const nsACString & aType, nsACString & _retval) = 0;

  /* AString generatePhoneticName (in boolean aLastNameFirst); */
  NS_IMETHOD GeneratePhoneticName(bool aLastNameFirst, nsAString & _retval) = 0;

  /* AString generateChatName (); */
  NS_IMETHOD GenerateChatName(nsAString & _retval) = 0;

  /* void copy (in nsIAbCard aSrcCard); */
  NS_IMETHOD Copy(nsIAbCard *aSrcCard) = 0;

  /* boolean equals (in nsIAbCard aCard); */
  NS_IMETHOD Equals(nsIAbCard *aCard, bool *_retval) = 0;

  /* attribute boolean isMailList; */
  NS_IMETHOD GetIsMailList(bool *aIsMailList) = 0;
  NS_IMETHOD SetIsMailList(bool aIsMailList) = 0;

  /* attribute string mailListURI; */
  NS_IMETHOD GetMailListURI(char * *aMailListURI) = 0;
  NS_IMETHOD SetMailListURI(const char * aMailListURI) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAbCard, NS_IABCARD_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIABCARD \
  NS_IMETHOD GetDirectoryId(nsACString & aDirectoryId) override; \
  NS_IMETHOD SetDirectoryId(const nsACString & aDirectoryId) override; \
  NS_IMETHOD GetLocalId(nsACString & aLocalId) override; \
  NS_IMETHOD SetLocalId(const nsACString & aLocalId) override; \
  NS_IMETHOD GetProperties(nsISimpleEnumerator * *aProperties) override; \
  NS_IMETHOD GetProperty(const nsACString & name, nsIVariant *defaultValue, nsIVariant * *_retval) override; \
  NS_IMETHOD GetPropertyAsAString(const char * name, nsAString & _retval) override; \
  NS_IMETHOD GetPropertyAsAUTF8String(const char * name, nsACString & _retval) override; \
  NS_IMETHOD GetPropertyAsUint32(const char * name, uint32_t *_retval) override; \
  NS_IMETHOD GetPropertyAsBool(const char * name, bool *_retval) override; \
  NS_IMETHOD SetProperty(const nsACString & name, nsIVariant *value) override; \
  NS_IMETHOD SetPropertyAsAString(const char * name, const nsAString & value) override; \
  NS_IMETHOD SetPropertyAsAUTF8String(const char * name, const nsACString & value) override; \
  NS_IMETHOD SetPropertyAsUint32(const char * name, uint32_t value) override; \
  NS_IMETHOD SetPropertyAsBool(const char * name, bool value) override; \
  NS_IMETHOD DeleteProperty(const nsACString & name) override; \
  NS_IMETHOD GetFirstName(nsAString & aFirstName) override; \
  NS_IMETHOD SetFirstName(const nsAString & aFirstName) override; \
  NS_IMETHOD GetLastName(nsAString & aLastName) override; \
  NS_IMETHOD SetLastName(const nsAString & aLastName) override; \
  NS_IMETHOD GetDisplayName(nsAString & aDisplayName) override; \
  NS_IMETHOD SetDisplayName(const nsAString & aDisplayName) override; \
  NS_IMETHOD GetPrimaryEmail(nsAString & aPrimaryEmail) override; \
  NS_IMETHOD SetPrimaryEmail(const nsAString & aPrimaryEmail) override; \
  NS_IMETHOD HasEmailAddress(const nsACString & aEmailAddress, bool *_retval) override; \
  NS_IMETHOD TranslateTo(const nsACString & aType, nsACString & _retval) override; \
  NS_IMETHOD GeneratePhoneticName(bool aLastNameFirst, nsAString & _retval) override; \
  NS_IMETHOD GenerateChatName(nsAString & _retval) override; \
  NS_IMETHOD Copy(nsIAbCard *aSrcCard) override; \
  NS_IMETHOD Equals(nsIAbCard *aCard, bool *_retval) override; \
  NS_IMETHOD GetIsMailList(bool *aIsMailList) override; \
  NS_IMETHOD SetIsMailList(bool aIsMailList) override; \
  NS_IMETHOD GetMailListURI(char * *aMailListURI) override; \
  NS_IMETHOD SetMailListURI(const char * aMailListURI) 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_NSIABCARD \
  NS_METHOD GetDirectoryId(nsACString & aDirectoryId); \
  NS_METHOD SetDirectoryId(const nsACString & aDirectoryId); \
  NS_METHOD GetLocalId(nsACString & aLocalId); \
  NS_METHOD SetLocalId(const nsACString & aLocalId); \
  NS_METHOD GetProperties(nsISimpleEnumerator * *aProperties); \
  NS_METHOD GetProperty(const nsACString & name, nsIVariant *defaultValue, nsIVariant * *_retval); \
  NS_METHOD GetPropertyAsAString(const char * name, nsAString & _retval); \
  NS_METHOD GetPropertyAsAUTF8String(const char * name, nsACString & _retval); \
  NS_METHOD GetPropertyAsUint32(const char * name, uint32_t *_retval); \
  NS_METHOD GetPropertyAsBool(const char * name, bool *_retval); \
  NS_METHOD SetProperty(const nsACString & name, nsIVariant *value); \
  NS_METHOD SetPropertyAsAString(const char * name, const nsAString & value); \
  NS_METHOD SetPropertyAsAUTF8String(const char * name, const nsACString & value); \
  NS_METHOD SetPropertyAsUint32(const char * name, uint32_t value); \
  NS_METHOD SetPropertyAsBool(const char * name, bool value); \
  NS_METHOD DeleteProperty(const nsACString & name); \
  NS_METHOD GetFirstName(nsAString & aFirstName); \
  NS_METHOD SetFirstName(const nsAString & aFirstName); \
  NS_METHOD GetLastName(nsAString & aLastName); \
  NS_METHOD SetLastName(const nsAString & aLastName); \
  NS_METHOD GetDisplayName(nsAString & aDisplayName); \
  NS_METHOD SetDisplayName(const nsAString & aDisplayName); \
  NS_METHOD GetPrimaryEmail(nsAString & aPrimaryEmail); \
  NS_METHOD SetPrimaryEmail(const nsAString & aPrimaryEmail); \
  NS_METHOD HasEmailAddress(const nsACString & aEmailAddress, bool *_retval); \
  NS_METHOD TranslateTo(const nsACString & aType, nsACString & _retval); \
  NS_METHOD GeneratePhoneticName(bool aLastNameFirst, nsAString & _retval); \
  NS_METHOD GenerateChatName(nsAString & _retval); \
  NS_METHOD Copy(nsIAbCard *aSrcCard); \
  NS_METHOD Equals(nsIAbCard *aCard, bool *_retval); \
  NS_METHOD GetIsMailList(bool *aIsMailList); \
  NS_METHOD SetIsMailList(bool aIsMailList); \
  NS_METHOD GetMailListURI(char * *aMailListURI); \
  NS_METHOD SetMailListURI(const char * aMailListURI); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIABCARD(_to) \
  NS_IMETHOD GetDirectoryId(nsACString & aDirectoryId) override { return _to GetDirectoryId(aDirectoryId); } \
  NS_IMETHOD SetDirectoryId(const nsACString & aDirectoryId) override { return _to SetDirectoryId(aDirectoryId); } \
  NS_IMETHOD GetLocalId(nsACString & aLocalId) override { return _to GetLocalId(aLocalId); } \
  NS_IMETHOD SetLocalId(const nsACString & aLocalId) override { return _to SetLocalId(aLocalId); } \
  NS_IMETHOD GetProperties(nsISimpleEnumerator * *aProperties) override { return _to GetProperties(aProperties); } \
  NS_IMETHOD GetProperty(const nsACString & name, nsIVariant *defaultValue, nsIVariant * *_retval) override { return _to GetProperty(name, defaultValue, _retval); } \
  NS_IMETHOD GetPropertyAsAString(const char * name, nsAString & _retval) override { return _to GetPropertyAsAString(name, _retval); } \
  NS_IMETHOD GetPropertyAsAUTF8String(const char * name, nsACString & _retval) override { return _to GetPropertyAsAUTF8String(name, _retval); } \
  NS_IMETHOD GetPropertyAsUint32(const char * name, uint32_t *_retval) override { return _to GetPropertyAsUint32(name, _retval); } \
  NS_IMETHOD GetPropertyAsBool(const char * name, bool *_retval) override { return _to GetPropertyAsBool(name, _retval); } \
  NS_IMETHOD SetProperty(const nsACString & name, nsIVariant *value) override { return _to SetProperty(name, value); } \
  NS_IMETHOD SetPropertyAsAString(const char * name, const nsAString & value) override { return _to SetPropertyAsAString(name, value); } \
  NS_IMETHOD SetPropertyAsAUTF8String(const char * name, const nsACString & value) override { return _to SetPropertyAsAUTF8String(name, value); } \
  NS_IMETHOD SetPropertyAsUint32(const char * name, uint32_t value) override { return _to SetPropertyAsUint32(name, value); } \
  NS_IMETHOD SetPropertyAsBool(const char * name, bool value) override { return _to SetPropertyAsBool(name, value); } \
  NS_IMETHOD DeleteProperty(const nsACString & name) override { return _to DeleteProperty(name); } \
  NS_IMETHOD GetFirstName(nsAString & aFirstName) override { return _to GetFirstName(aFirstName); } \
  NS_IMETHOD SetFirstName(const nsAString & aFirstName) override { return _to SetFirstName(aFirstName); } \
  NS_IMETHOD GetLastName(nsAString & aLastName) override { return _to GetLastName(aLastName); } \
  NS_IMETHOD SetLastName(const nsAString & aLastName) override { return _to SetLastName(aLastName); } \
  NS_IMETHOD GetDisplayName(nsAString & aDisplayName) override { return _to GetDisplayName(aDisplayName); } \
  NS_IMETHOD SetDisplayName(const nsAString & aDisplayName) override { return _to SetDisplayName(aDisplayName); } \
  NS_IMETHOD GetPrimaryEmail(nsAString & aPrimaryEmail) override { return _to GetPrimaryEmail(aPrimaryEmail); } \
  NS_IMETHOD SetPrimaryEmail(const nsAString & aPrimaryEmail) override { return _to SetPrimaryEmail(aPrimaryEmail); } \
  NS_IMETHOD HasEmailAddress(const nsACString & aEmailAddress, bool *_retval) override { return _to HasEmailAddress(aEmailAddress, _retval); } \
  NS_IMETHOD TranslateTo(const nsACString & aType, nsACString & _retval) override { return _to TranslateTo(aType, _retval); } \
  NS_IMETHOD GeneratePhoneticName(bool aLastNameFirst, nsAString & _retval) override { return _to GeneratePhoneticName(aLastNameFirst, _retval); } \
  NS_IMETHOD GenerateChatName(nsAString & _retval) override { return _to GenerateChatName(_retval); } \
  NS_IMETHOD Copy(nsIAbCard *aSrcCard) override { return _to Copy(aSrcCard); } \
  NS_IMETHOD Equals(nsIAbCard *aCard, bool *_retval) override { return _to Equals(aCard, _retval); } \
  NS_IMETHOD GetIsMailList(bool *aIsMailList) override { return _to GetIsMailList(aIsMailList); } \
  NS_IMETHOD SetIsMailList(bool aIsMailList) override { return _to SetIsMailList(aIsMailList); } \
  NS_IMETHOD GetMailListURI(char * *aMailListURI) override { return _to GetMailListURI(aMailListURI); } \
  NS_IMETHOD SetMailListURI(const char * aMailListURI) override { return _to SetMailListURI(aMailListURI); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIABCARD(_to) \
  NS_IMETHOD GetDirectoryId(nsACString & aDirectoryId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDirectoryId(aDirectoryId); } \
  NS_IMETHOD SetDirectoryId(const nsACString & aDirectoryId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDirectoryId(aDirectoryId); } \
  NS_IMETHOD GetLocalId(nsACString & aLocalId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLocalId(aLocalId); } \
  NS_IMETHOD SetLocalId(const nsACString & aLocalId) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLocalId(aLocalId); } \
  NS_IMETHOD GetProperties(nsISimpleEnumerator * *aProperties) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperties(aProperties); } \
  NS_IMETHOD GetProperty(const nsACString & name, nsIVariant *defaultValue, nsIVariant * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProperty(name, defaultValue, _retval); } \
  NS_IMETHOD GetPropertyAsAString(const char * name, nsAString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPropertyAsAString(name, _retval); } \
  NS_IMETHOD GetPropertyAsAUTF8String(const char * name, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPropertyAsAUTF8String(name, _retval); } \
  NS_IMETHOD GetPropertyAsUint32(const char * name, uint32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPropertyAsUint32(name, _retval); } \
  NS_IMETHOD GetPropertyAsBool(const char * name, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPropertyAsBool(name, _retval); } \
  NS_IMETHOD SetProperty(const nsACString & name, nsIVariant *value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetProperty(name, value); } \
  NS_IMETHOD SetPropertyAsAString(const char * name, const nsAString & value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPropertyAsAString(name, value); } \
  NS_IMETHOD SetPropertyAsAUTF8String(const char * name, const nsACString & value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPropertyAsAUTF8String(name, value); } \
  NS_IMETHOD SetPropertyAsUint32(const char * name, uint32_t value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPropertyAsUint32(name, value); } \
  NS_IMETHOD SetPropertyAsBool(const char * name, bool value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPropertyAsBool(name, value); } \
  NS_IMETHOD DeleteProperty(const nsACString & name) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteProperty(name); } \
  NS_IMETHOD GetFirstName(nsAString & aFirstName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstName(aFirstName); } \
  NS_IMETHOD SetFirstName(const nsAString & aFirstName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFirstName(aFirstName); } \
  NS_IMETHOD GetLastName(nsAString & aLastName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastName(aLastName); } \
  NS_IMETHOD SetLastName(const nsAString & aLastName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLastName(aLastName); } \
  NS_IMETHOD GetDisplayName(nsAString & aDisplayName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDisplayName(aDisplayName); } \
  NS_IMETHOD SetDisplayName(const nsAString & aDisplayName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDisplayName(aDisplayName); } \
  NS_IMETHOD GetPrimaryEmail(nsAString & aPrimaryEmail) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPrimaryEmail(aPrimaryEmail); } \
  NS_IMETHOD SetPrimaryEmail(const nsAString & aPrimaryEmail) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPrimaryEmail(aPrimaryEmail); } \
  NS_IMETHOD HasEmailAddress(const nsACString & aEmailAddress, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->HasEmailAddress(aEmailAddress, _retval); } \
  NS_IMETHOD TranslateTo(const nsACString & aType, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->TranslateTo(aType, _retval); } \
  NS_IMETHOD GeneratePhoneticName(bool aLastNameFirst, nsAString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GeneratePhoneticName(aLastNameFirst, _retval); } \
  NS_IMETHOD GenerateChatName(nsAString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GenerateChatName(_retval); } \
  NS_IMETHOD Copy(nsIAbCard *aSrcCard) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Copy(aSrcCard); } \
  NS_IMETHOD Equals(nsIAbCard *aCard, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Equals(aCard, _retval); } \
  NS_IMETHOD GetIsMailList(bool *aIsMailList) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetIsMailList(aIsMailList); } \
  NS_IMETHOD SetIsMailList(bool aIsMailList) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetIsMailList(aIsMailList); } \
  NS_IMETHOD GetMailListURI(char * *aMailListURI) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMailListURI(aMailListURI); } \
  NS_IMETHOD SetMailListURI(const char * aMailListURI) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMailListURI(aMailListURI); } 

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

/* Header file */
class nsAbCard : public nsIAbCard
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIABCARD

  nsAbCard();

private:
  ~nsAbCard();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsAbCard, nsIAbCard)

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

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

/* attribute AUTF8String directoryId; */
NS_IMETHODIMP nsAbCard::GetDirectoryId(nsACString & aDirectoryId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbCard::SetDirectoryId(const nsACString & aDirectoryId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String localId; */
NS_IMETHODIMP nsAbCard::GetLocalId(nsACString & aLocalId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbCard::SetLocalId(const nsACString & aLocalId)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISimpleEnumerator properties; */
NS_IMETHODIMP nsAbCard::GetProperties(nsISimpleEnumerator * *aProperties)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIVariant getProperty (in AUTF8String name, in nsIVariant defaultValue); */
NS_IMETHODIMP nsAbCard::GetProperty(const nsACString & name, nsIVariant *defaultValue, nsIVariant * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString getPropertyAsAString (in string name); */
NS_IMETHODIMP nsAbCard::GetPropertyAsAString(const char * name, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AUTF8String getPropertyAsAUTF8String (in string name); */
NS_IMETHODIMP nsAbCard::GetPropertyAsAUTF8String(const char * name, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* unsigned long getPropertyAsUint32 (in string name); */
NS_IMETHODIMP nsAbCard::GetPropertyAsUint32(const char * name, uint32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean getPropertyAsBool (in string name); */
NS_IMETHODIMP nsAbCard::GetPropertyAsBool(const char * name, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setProperty (in AUTF8String name, in nsIVariant value); */
NS_IMETHODIMP nsAbCard::SetProperty(const nsACString & name, nsIVariant *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setPropertyAsAString (in string name, in AString value); */
NS_IMETHODIMP nsAbCard::SetPropertyAsAString(const char * name, const nsAString & value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setPropertyAsAUTF8String (in string name, in AUTF8String value); */
NS_IMETHODIMP nsAbCard::SetPropertyAsAUTF8String(const char * name, const nsACString & value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setPropertyAsUint32 (in string name, in unsigned long value); */
NS_IMETHODIMP nsAbCard::SetPropertyAsUint32(const char * name, uint32_t value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setPropertyAsBool (in string name, in boolean value); */
NS_IMETHODIMP nsAbCard::SetPropertyAsBool(const char * name, bool value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteProperty (in AUTF8String name); */
NS_IMETHODIMP nsAbCard::DeleteProperty(const nsACString & name)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AString firstName; */
NS_IMETHODIMP nsAbCard::GetFirstName(nsAString & aFirstName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbCard::SetFirstName(const nsAString & aFirstName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AString lastName; */
NS_IMETHODIMP nsAbCard::GetLastName(nsAString & aLastName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbCard::SetLastName(const nsAString & aLastName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AString displayName; */
NS_IMETHODIMP nsAbCard::GetDisplayName(nsAString & aDisplayName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbCard::SetDisplayName(const nsAString & aDisplayName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AString primaryEmail; */
NS_IMETHODIMP nsAbCard::GetPrimaryEmail(nsAString & aPrimaryEmail)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbCard::SetPrimaryEmail(const nsAString & aPrimaryEmail)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean hasEmailAddress (in AUTF8String aEmailAddress); */
NS_IMETHODIMP nsAbCard::HasEmailAddress(const nsACString & aEmailAddress, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AUTF8String translateTo (in AUTF8String aType); */
NS_IMETHODIMP nsAbCard::TranslateTo(const nsACString & aType, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString generatePhoneticName (in boolean aLastNameFirst); */
NS_IMETHODIMP nsAbCard::GeneratePhoneticName(bool aLastNameFirst, nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* AString generateChatName (); */
NS_IMETHODIMP nsAbCard::GenerateChatName(nsAString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void copy (in nsIAbCard aSrcCard); */
NS_IMETHODIMP nsAbCard::Copy(nsIAbCard *aSrcCard)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean equals (in nsIAbCard aCard); */
NS_IMETHODIMP nsAbCard::Equals(nsIAbCard *aCard, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean isMailList; */
NS_IMETHODIMP nsAbCard::GetIsMailList(bool *aIsMailList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbCard::SetIsMailList(bool aIsMailList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute string mailListURI; */
NS_IMETHODIMP nsAbCard::GetMailListURI(char * *aMailListURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbCard::SetMailListURI(const char * aMailListURI)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

// A nice list of properties for the benefit of C++ clients
#define kFirstNameProperty          "FirstName"
#define kLastNameProperty           "LastName"
#define kDisplayNameProperty        "DisplayName"
#define kNicknameProperty           "NickName"
#define kPriEmailProperty           "PrimaryEmail"
#define kPreferMailFormatProperty   "PreferMailFormat"
#define kLastModifiedDateProperty   "LastModifiedDate"
#define kPopularityIndexProperty    "PopularityIndex"
#define kPhoneticFirstNameProperty  "PhoneticFirstName"
#define kPhoneticLastNameProperty   "PhoneticLastName"
#define kSpouseNameProperty         "SpouseName"
#define kFamilyNameProperty         "FamilyName"
#define k2ndEmailProperty           "SecondEmail"
#define kHomeAddressProperty        "HomeAddress"
#define kHomeAddress2Property       "HomeAddress2"
#define kHomeCityProperty           "HomeCity"
#define kHomeStateProperty          "HomeState"
#define kHomeZipCodeProperty        "HomeZipCode"
#define kHomeCountryProperty        "HomeCountry"
#define kHomeWebPageProperty        "WebPage2"
#define kWorkAddressProperty        "WorkAddress"
#define kWorkAddress2Property       "WorkAddress2"
#define kWorkCityProperty           "WorkCity"
#define kWorkStateProperty          "WorkState"
#define kWorkZipCodeProperty        "WorkZipCode"
#define kWorkCountryProperty        "WorkCountry"
#define kWorkWebPageProperty        "WebPage1"
#define kHomePhoneProperty          "HomePhone"
#define kHomePhoneTypeProperty      "HomePhoneType"
#define kWorkPhoneProperty          "WorkPhone"
#define kWorkPhoneTypeProperty      "WorkPhoneType"
#define kFaxProperty                "FaxNumber"
#define kFaxTypeProperty            "FaxNumberType"
#define kPagerTypeProperty          "PagerNumberType"
#define kPagerProperty              "PagerNumber"
#define kCellularProperty           "CellularNumber"
#define kCellularTypeProperty       "CellularNumberType"
#define kJobTitleProperty           "JobTitle"
#define kDepartmentProperty         "Department"
#define kCompanyProperty            "Company"
#define kScreenNameProperty         "_AimScreenName"
#define kCustom1Property            "Custom1"
#define kCustom2Property            "Custom2"
#define kCustom3Property            "Custom3"
#define kCustom4Property            "Custom4"
#define kNotesProperty              "Notes"
#define kGtalkProperty              "_GoogleTalk"
#define kAIMProperty                "_AimScreenName"
#define kYahooProperty              "_Yahoo"
#define kSkypeProperty              "_Skype"
#define kQQProperty                 "_QQ"
#define kMSNProperty                "_MSN"
#define kICQProperty                "_ICQ"
#define kXMPPProperty               "_JabberId"
#define kIRCProperty                "_IRC"
#define kAnniversaryYearProperty    "AnniversaryYear"
#define kAnniversaryMonthProperty   "AnniversaryMonth"
#define kAnniversaryDayProperty     "AnniversaryDay"
#define kBirthYearProperty          "BirthYear"
#define kBirthMonthProperty         "BirthMonth"
#define kBirthDayProperty           "BirthDay"

#endif /* __gen_nsIAbCard_h__ */
