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

#ifndef __gen_nsIAddrDatabase_h__
#define __gen_nsIAddrDatabase_h__


#ifndef __gen_nsIAddrDBAnnouncer_h__
#include "nsIAddrDBAnnouncer.h"
#endif

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

#ifndef __gen_nsIAbDirectory_h__
#include "nsIAbDirectory.h"
#endif

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

class nsIMdbTableRowCursor; /* forward declaration */

class nsIMdbEnv; /* forward declaration */

class nsIMdbRow; /* forward declaration */

class nsIArray; /* forward declaration */

class nsISimpleEnumerator; /* forward declaration */

// this is the prefix we for attributes that are specific
// to the mozilla addressbook, and weren't in 4.x and aren't specified in
// RFC 2789.  used when exporting and import LDIF
// see nsTextAddress.cpp, nsAddressBook.cpp
#define MOZ_AB_LDIF_PREFIX "mozilla"
// note, GeneratedName is not a real column
// if you change any of this, make sure to change 
// Get / Set CardValue in nsAbCardProperty.cpp
#define kPhoneticNameColumn       "_PhoneticName"
#define kAddressCharSetColumn     "AddrCharSet"
#define kMailListName             "ListName"
#define kMailListNickName         "ListNickName"
#define kMailListDescription      "ListDescription"
#define kMailListTotalAddresses   "ListTotalAddresses"
// not shown in the UI
#define kLowerPriEmailColumn      "LowercasePrimaryEmail"
#define kLower2ndEmailColumn      "LowercaseSecondEmail"
// Palm Integration
#define  CARD_ATTRIB_PALMID "PalmRecId"
#define  CARD_ATTRIB_DISPLAY "DisplayName"

/* starting interface:    nsAddrDBCommitType */
#define NS_ADDRDBCOMMITTYPE_IID_STR "20d4c6c3-0460-403e-aa9c-813654641566"

#define NS_ADDRDBCOMMITTYPE_IID \
  {0x20d4c6c3, 0x0460, 0x403e, \
    { 0xaa, 0x9c, 0x81, 0x36, 0x54, 0x64, 0x15, 0x66 }}

class NS_NO_VTABLE nsAddrDBCommitType {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ADDRDBCOMMITTYPE_IID)

  enum {
    kLargeCommit = 1,
    kSessionCommit = 2,
    kCompressCommit = 3
  };

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsAddrDBCommitType, NS_ADDRDBCOMMITTYPE_IID)

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

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

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSADDRDBCOMMITTYPE(_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_NSADDRDBCOMMITTYPE(_to) \

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

/* Header file */
class _MYCLASS_ : public nsAddrDBCommitType
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSADDRDBCOMMITTYPE

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(_MYCLASS_, nsAddrDBCommitType)

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

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

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


/* starting interface:    nsIAddrDatabase */
#define NS_IADDRDATABASE_IID_STR "c54973e4-d251-4b93-a0d0-81a616225061"

#define NS_IADDRDATABASE_IID \
  {0xc54973e4, 0xd251, 0x4b93, \
    { 0xa0, 0xd0, 0x81, 0xa6, 0x16, 0x22, 0x50, 0x61 }}

class NS_NO_VTABLE nsIAddrDatabase : public nsIAddrDBAnnouncer {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IADDRDATABASE_IID)

  /* attribute nsIFile dbPath; */
  NS_IMETHOD GetDbPath(nsIFile * *aDbPath) = 0;
  NS_IMETHOD SetDbPath(nsIFile *aDbPath) = 0;

  /* nsIAddrDatabase open (in nsIFile dbFile, in boolean create, in boolean upgrading); */
  NS_IMETHOD Open(nsIFile *dbFile, bool create, bool upgrading, nsIAddrDatabase * *_retval) = 0;

  /* void close (in boolean forceCommit); */
  NS_IMETHOD Close(bool forceCommit) = 0;

  /* void openMDB (in nsIFile dbName, in boolean create); */
  NS_IMETHOD OpenMDB(nsIFile *dbName, bool create) = 0;

  /* void closeMDB (in boolean commit); */
  NS_IMETHOD CloseMDB(bool commit) = 0;

  /* void commit (in unsigned long commitType); */
  NS_IMETHOD Commit(uint32_t commitType) = 0;

  /* void forceClosed (); */
  NS_IMETHOD ForceClosed(void) = 0;

  /* void createNewCardAndAddToDB (in nsIAbCard aNewCard, in boolean aNotify, in nsIAbDirectory aParent); */
  NS_IMETHOD CreateNewCardAndAddToDB(nsIAbCard *aNewCard, bool aNotify, nsIAbDirectory *aParent) = 0;

  /* void createNewListCardAndAddToDB (in nsIAbDirectory list, in unsigned long listRowID, in nsIAbCard newCard, in boolean aNotify); */
  NS_IMETHOD CreateNewListCardAndAddToDB(nsIAbDirectory *list, uint32_t listRowID, nsIAbCard *newCard, bool aNotify) = 0;

  /* void createMailListAndAddToDB (in nsIAbDirectory aNewList, in boolean aNotify, in nsIAbDirectory aParent); */
  NS_IMETHOD CreateMailListAndAddToDB(nsIAbDirectory *aNewList, bool aNotify, nsIAbDirectory *aParent) = 0;

  /* nsISimpleEnumerator enumerateCards (in nsIAbDirectory directory); */
  NS_IMETHOD EnumerateCards(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval) = 0;

  /* nsISimpleEnumerator enumerateListAddresses (in nsIAbDirectory directory); */
  NS_IMETHOD EnumerateListAddresses(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval) = 0;

  /* void getMailingListsFromDB (in nsIAbDirectory parentDir); */
  NS_IMETHOD GetMailingListsFromDB(nsIAbDirectory *parentDir) = 0;

  /* void deleteCard (in nsIAbCard aCard, in boolean aNotify, in nsIAbDirectory aParent); */
  NS_IMETHOD DeleteCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent) = 0;

  /* void editCard (in nsIAbCard aCard, in boolean aNotify, in nsIAbDirectory aParent); */
  NS_IMETHOD EditCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent) = 0;

  /* boolean containsCard (in nsIAbCard card); */
  NS_IMETHOD ContainsCard(nsIAbCard *card, bool *_retval) = 0;

  /* void deleteMailList (in nsIAbDirectory aMailList, [optional] in nsIAbDirectory aParent); */
  NS_IMETHOD DeleteMailList(nsIAbDirectory *aMailList, nsIAbDirectory *aParent) = 0;

  /* void editMailList (in nsIAbDirectory mailList, in nsIAbCard listCard, in boolean aNotify); */
  NS_IMETHOD EditMailList(nsIAbDirectory *mailList, nsIAbCard *listCard, bool aNotify) = 0;

  /* boolean containsMailList (in nsIAbDirectory mailList); */
  NS_IMETHOD ContainsMailList(nsIAbDirectory *mailList, bool *_retval) = 0;

  /* void deleteCardFromMailList (in nsIAbDirectory mailList, in nsIAbCard card, in boolean aNotify); */
  NS_IMETHOD DeleteCardFromMailList(nsIAbDirectory *mailList, nsIAbCard *card, bool aNotify) = 0;

  /* nsIAbCard getCardFromAttribute (in nsIAbDirectory aDirectory, in string aName, in AUTF8String aUTF8Value, in boolean aCaseInsensitive); */
  NS_IMETHOD GetCardFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & aUTF8Value, bool aCaseInsensitive, nsIAbCard * *_retval) = 0;

  /* nsISimpleEnumerator getCardsFromAttribute (in nsIAbDirectory aDirectory, in string aName, in AUTF8String uUTF8Value, in boolean aCaseInsensitive); */
  NS_IMETHOD GetCardsFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & uUTF8Value, bool aCaseInsensitive, nsISimpleEnumerator * *_retval) = 0;

  /* boolean findMailListbyUnicodeName (in wstring listName); */
  NS_IMETHOD FindMailListbyUnicodeName(const char16_t * listName, bool *_retval) = 0;

  /* void getCardCount (out uint32_t count); */
  NS_IMETHOD GetCardCount(uint32_t *count) = 0;

  /* [noscript] readonly attribute nsIMdbRow newRow; */
  NS_IMETHOD GetNewRow(nsIMdbRow * *aNewRow) = 0;

  /* [noscript] readonly attribute nsIMdbRow newListRow; */
  NS_IMETHOD GetNewListRow(nsIMdbRow * *aNewListRow) = 0;

  /* [noscript] void addCardRowToDB (in nsIMdbRow newRow); */
  NS_IMETHOD AddCardRowToDB(nsIMdbRow *newRow) = 0;

  /* [noscript] void addLdifListMember (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddLdifListMember(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addFirstName (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddFirstName(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addLastName (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddLastName(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addPhoneticFirstName (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddPhoneticFirstName(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addPhoneticLastName (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddPhoneticLastName(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addDisplayName (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddDisplayName(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addNickName (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddNickName(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addPrimaryEmail (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddPrimaryEmail(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void add2ndEmail (in nsIMdbRow row, in string value); */
  NS_IMETHOD Add2ndEmail(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addWorkPhone (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddWorkPhone(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addHomePhone (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddHomePhone(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addFaxNumber (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddFaxNumber(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addPagerNumber (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddPagerNumber(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addCellularNumber (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddCellularNumber(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addWorkPhoneType (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddWorkPhoneType(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addHomePhoneType (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddHomePhoneType(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addFaxNumberType (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddFaxNumberType(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addPagerNumberType (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddPagerNumberType(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addCellularNumberType (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddCellularNumberType(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addHomeAddress (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddHomeAddress(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addHomeAddress2 (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddHomeAddress2(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addHomeCity (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddHomeCity(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addHomeState (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddHomeState(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addHomeZipCode (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddHomeZipCode(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addHomeCountry (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddHomeCountry(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addWorkAddress (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddWorkAddress(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addWorkAddress2 (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddWorkAddress2(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addWorkCity (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddWorkCity(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addWorkState (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddWorkState(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addWorkZipCode (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddWorkZipCode(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addWorkCountry (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddWorkCountry(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addJobTitle (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddJobTitle(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addDepartment (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddDepartment(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addCompany (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddCompany(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addAimScreenName (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddAimScreenName(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addAnniversaryYear (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddAnniversaryYear(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addAnniversaryMonth (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddAnniversaryMonth(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addAnniversaryDay (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddAnniversaryDay(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addSpouseName (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddSpouseName(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addFamilyName (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddFamilyName(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addDefaultAddress (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddDefaultAddress(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addCategory (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddCategory(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addWebPage1 (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddWebPage1(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addWebPage2 (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddWebPage2(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addBirthYear (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddBirthYear(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addBirthMonth (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddBirthMonth(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addBirthDay (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddBirthDay(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addCustom1 (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddCustom1(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addCustom2 (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddCustom2(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addCustom3 (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddCustom3(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addCustom4 (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddCustom4(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addNotes (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddNotes(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addPreferMailFormat (in nsIMdbRow row, in unsigned long value); */
  NS_IMETHOD AddPreferMailFormat(nsIMdbRow *row, uint32_t value) = 0;

  /* [noscript] void addPopularityIndex (in nsIMdbRow row, in unsigned long value); */
  NS_IMETHOD AddPopularityIndex(nsIMdbRow *row, uint32_t value) = 0;

  /* [noscript] void addListName (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddListName(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addListNickName (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddListNickName(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addListDescription (in nsIMdbRow row, in string value); */
  NS_IMETHOD AddListDescription(nsIMdbRow *row, const char * value) = 0;

  /* [noscript] void addListDirNode (in nsIMdbRow listRow); */
  NS_IMETHOD AddListDirNode(nsIMdbRow *listRow) = 0;

  /* void setCardValue (in nsIAbCard card, in string name, in wstring value, in boolean notify); */
  NS_IMETHOD SetCardValue(nsIAbCard *card, const char * name, const char16_t * value, bool notify) = 0;

  /* wstring getCardValue (in nsIAbCard card, in string name); */
  NS_IMETHOD GetCardValue(nsIAbCard *card, const char * name, char16_t * *_retval) = 0;

  /* readonly attribute nsIArray deletedCardList; */
  NS_IMETHOD GetDeletedCardList(nsIArray * *aDeletedCardList) = 0;

  /* readonly attribute unsigned long deletedCardCount; */
  NS_IMETHOD GetDeletedCardCount(uint32_t *aDeletedCardCount) = 0;

  /* void AddListCardColumnsToRow (in nsIAbCard aPCard, in nsIMdbRow aPListRow, in unsigned long aPos, out nsIAbCard aPNewCard, in boolean aInMailingList, in nsIAbDirectory aParent, in nsIAbDirectory aRoot); */
  NS_IMETHOD AddListCardColumnsToRow(nsIAbCard *aPCard, nsIMdbRow *aPListRow, uint32_t aPos, nsIAbCard * *aPNewCard, bool aInMailingList, nsIAbDirectory *aParent, nsIAbDirectory *aRoot) = 0;

  /* void InitCardFromRow (in nsIAbCard aNewCard, in nsIMdbRow aCardRow); */
  NS_IMETHOD InitCardFromRow(nsIAbCard *aNewCard, nsIMdbRow *aCardRow) = 0;

  /* void SetListAddressTotal (in nsIMdbRow aListRow, in uint32_t aTotal); */
  NS_IMETHOD SetListAddressTotal(nsIMdbRow *aListRow, uint32_t aTotal) = 0;

  /* nsIMdbRow FindRowByCard (in nsIAbCard aCard); */
  NS_IMETHOD FindRowByCard(nsIAbCard *aCard, nsIMdbRow * *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAddrDatabase, NS_IADDRDATABASE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIADDRDATABASE \
  NS_IMETHOD GetDbPath(nsIFile * *aDbPath) override; \
  NS_IMETHOD SetDbPath(nsIFile *aDbPath) override; \
  NS_IMETHOD Open(nsIFile *dbFile, bool create, bool upgrading, nsIAddrDatabase * *_retval) override; \
  NS_IMETHOD Close(bool forceCommit) override; \
  NS_IMETHOD OpenMDB(nsIFile *dbName, bool create) override; \
  NS_IMETHOD CloseMDB(bool commit) override; \
  NS_IMETHOD Commit(uint32_t commitType) override; \
  NS_IMETHOD ForceClosed(void) override; \
  NS_IMETHOD CreateNewCardAndAddToDB(nsIAbCard *aNewCard, bool aNotify, nsIAbDirectory *aParent) override; \
  NS_IMETHOD CreateNewListCardAndAddToDB(nsIAbDirectory *list, uint32_t listRowID, nsIAbCard *newCard, bool aNotify) override; \
  NS_IMETHOD CreateMailListAndAddToDB(nsIAbDirectory *aNewList, bool aNotify, nsIAbDirectory *aParent) override; \
  NS_IMETHOD EnumerateCards(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval) override; \
  NS_IMETHOD EnumerateListAddresses(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval) override; \
  NS_IMETHOD GetMailingListsFromDB(nsIAbDirectory *parentDir) override; \
  NS_IMETHOD DeleteCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent) override; \
  NS_IMETHOD EditCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent) override; \
  NS_IMETHOD ContainsCard(nsIAbCard *card, bool *_retval) override; \
  NS_IMETHOD DeleteMailList(nsIAbDirectory *aMailList, nsIAbDirectory *aParent) override; \
  NS_IMETHOD EditMailList(nsIAbDirectory *mailList, nsIAbCard *listCard, bool aNotify) override; \
  NS_IMETHOD ContainsMailList(nsIAbDirectory *mailList, bool *_retval) override; \
  NS_IMETHOD DeleteCardFromMailList(nsIAbDirectory *mailList, nsIAbCard *card, bool aNotify) override; \
  NS_IMETHOD GetCardFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & aUTF8Value, bool aCaseInsensitive, nsIAbCard * *_retval) override; \
  NS_IMETHOD GetCardsFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & uUTF8Value, bool aCaseInsensitive, nsISimpleEnumerator * *_retval) override; \
  NS_IMETHOD FindMailListbyUnicodeName(const char16_t * listName, bool *_retval) override; \
  NS_IMETHOD GetCardCount(uint32_t *count) override; \
  NS_IMETHOD GetNewRow(nsIMdbRow * *aNewRow) override; \
  NS_IMETHOD GetNewListRow(nsIMdbRow * *aNewListRow) override; \
  NS_IMETHOD AddCardRowToDB(nsIMdbRow *newRow) override; \
  NS_IMETHOD AddLdifListMember(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddFirstName(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddLastName(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddPhoneticFirstName(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddPhoneticLastName(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddDisplayName(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddNickName(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddPrimaryEmail(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD Add2ndEmail(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddWorkPhone(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddHomePhone(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddFaxNumber(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddPagerNumber(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddCellularNumber(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddWorkPhoneType(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddHomePhoneType(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddFaxNumberType(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddPagerNumberType(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddCellularNumberType(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddHomeAddress(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddHomeAddress2(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddHomeCity(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddHomeState(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddHomeZipCode(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddHomeCountry(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddWorkAddress(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddWorkAddress2(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddWorkCity(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddWorkState(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddWorkZipCode(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddWorkCountry(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddJobTitle(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddDepartment(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddCompany(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddAimScreenName(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddAnniversaryYear(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddAnniversaryMonth(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddAnniversaryDay(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddSpouseName(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddFamilyName(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddDefaultAddress(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddCategory(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddWebPage1(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddWebPage2(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddBirthYear(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddBirthMonth(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddBirthDay(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddCustom1(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddCustom2(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddCustom3(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddCustom4(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddNotes(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddPreferMailFormat(nsIMdbRow *row, uint32_t value) override; \
  NS_IMETHOD AddPopularityIndex(nsIMdbRow *row, uint32_t value) override; \
  NS_IMETHOD AddListName(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddListNickName(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddListDescription(nsIMdbRow *row, const char * value) override; \
  NS_IMETHOD AddListDirNode(nsIMdbRow *listRow) override; \
  NS_IMETHOD SetCardValue(nsIAbCard *card, const char * name, const char16_t * value, bool notify) override; \
  NS_IMETHOD GetCardValue(nsIAbCard *card, const char * name, char16_t * *_retval) override; \
  NS_IMETHOD GetDeletedCardList(nsIArray * *aDeletedCardList) override; \
  NS_IMETHOD GetDeletedCardCount(uint32_t *aDeletedCardCount) override; \
  NS_IMETHOD AddListCardColumnsToRow(nsIAbCard *aPCard, nsIMdbRow *aPListRow, uint32_t aPos, nsIAbCard * *aPNewCard, bool aInMailingList, nsIAbDirectory *aParent, nsIAbDirectory *aRoot) override; \
  NS_IMETHOD InitCardFromRow(nsIAbCard *aNewCard, nsIMdbRow *aCardRow) override; \
  NS_IMETHOD SetListAddressTotal(nsIMdbRow *aListRow, uint32_t aTotal) override; \
  NS_IMETHOD FindRowByCard(nsIAbCard *aCard, nsIMdbRow * *_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_NSIADDRDATABASE \
  NS_METHOD GetDbPath(nsIFile * *aDbPath); \
  NS_METHOD SetDbPath(nsIFile *aDbPath); \
  NS_METHOD Open(nsIFile *dbFile, bool create, bool upgrading, nsIAddrDatabase * *_retval); \
  NS_METHOD Close(bool forceCommit); \
  NS_METHOD OpenMDB(nsIFile *dbName, bool create); \
  NS_METHOD CloseMDB(bool commit); \
  NS_METHOD Commit(uint32_t commitType); \
  NS_METHOD ForceClosed(void); \
  NS_METHOD CreateNewCardAndAddToDB(nsIAbCard *aNewCard, bool aNotify, nsIAbDirectory *aParent); \
  NS_METHOD CreateNewListCardAndAddToDB(nsIAbDirectory *list, uint32_t listRowID, nsIAbCard *newCard, bool aNotify); \
  NS_METHOD CreateMailListAndAddToDB(nsIAbDirectory *aNewList, bool aNotify, nsIAbDirectory *aParent); \
  NS_METHOD EnumerateCards(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval); \
  NS_METHOD EnumerateListAddresses(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval); \
  NS_METHOD GetMailingListsFromDB(nsIAbDirectory *parentDir); \
  NS_METHOD DeleteCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent); \
  NS_METHOD EditCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent); \
  NS_METHOD ContainsCard(nsIAbCard *card, bool *_retval); \
  NS_METHOD DeleteMailList(nsIAbDirectory *aMailList, nsIAbDirectory *aParent); \
  NS_METHOD EditMailList(nsIAbDirectory *mailList, nsIAbCard *listCard, bool aNotify); \
  NS_METHOD ContainsMailList(nsIAbDirectory *mailList, bool *_retval); \
  NS_METHOD DeleteCardFromMailList(nsIAbDirectory *mailList, nsIAbCard *card, bool aNotify); \
  NS_METHOD GetCardFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & aUTF8Value, bool aCaseInsensitive, nsIAbCard * *_retval); \
  NS_METHOD GetCardsFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & uUTF8Value, bool aCaseInsensitive, nsISimpleEnumerator * *_retval); \
  NS_METHOD FindMailListbyUnicodeName(const char16_t * listName, bool *_retval); \
  NS_METHOD GetCardCount(uint32_t *count); \
  NS_METHOD GetNewRow(nsIMdbRow * *aNewRow); \
  NS_METHOD GetNewListRow(nsIMdbRow * *aNewListRow); \
  NS_METHOD AddCardRowToDB(nsIMdbRow *newRow); \
  NS_METHOD AddLdifListMember(nsIMdbRow *row, const char * value); \
  NS_METHOD AddFirstName(nsIMdbRow *row, const char * value); \
  NS_METHOD AddLastName(nsIMdbRow *row, const char * value); \
  NS_METHOD AddPhoneticFirstName(nsIMdbRow *row, const char * value); \
  NS_METHOD AddPhoneticLastName(nsIMdbRow *row, const char * value); \
  NS_METHOD AddDisplayName(nsIMdbRow *row, const char * value); \
  NS_METHOD AddNickName(nsIMdbRow *row, const char * value); \
  NS_METHOD AddPrimaryEmail(nsIMdbRow *row, const char * value); \
  NS_METHOD Add2ndEmail(nsIMdbRow *row, const char * value); \
  NS_METHOD AddWorkPhone(nsIMdbRow *row, const char * value); \
  NS_METHOD AddHomePhone(nsIMdbRow *row, const char * value); \
  NS_METHOD AddFaxNumber(nsIMdbRow *row, const char * value); \
  NS_METHOD AddPagerNumber(nsIMdbRow *row, const char * value); \
  NS_METHOD AddCellularNumber(nsIMdbRow *row, const char * value); \
  NS_METHOD AddWorkPhoneType(nsIMdbRow *row, const char * value); \
  NS_METHOD AddHomePhoneType(nsIMdbRow *row, const char * value); \
  NS_METHOD AddFaxNumberType(nsIMdbRow *row, const char * value); \
  NS_METHOD AddPagerNumberType(nsIMdbRow *row, const char * value); \
  NS_METHOD AddCellularNumberType(nsIMdbRow *row, const char * value); \
  NS_METHOD AddHomeAddress(nsIMdbRow *row, const char * value); \
  NS_METHOD AddHomeAddress2(nsIMdbRow *row, const char * value); \
  NS_METHOD AddHomeCity(nsIMdbRow *row, const char * value); \
  NS_METHOD AddHomeState(nsIMdbRow *row, const char * value); \
  NS_METHOD AddHomeZipCode(nsIMdbRow *row, const char * value); \
  NS_METHOD AddHomeCountry(nsIMdbRow *row, const char * value); \
  NS_METHOD AddWorkAddress(nsIMdbRow *row, const char * value); \
  NS_METHOD AddWorkAddress2(nsIMdbRow *row, const char * value); \
  NS_METHOD AddWorkCity(nsIMdbRow *row, const char * value); \
  NS_METHOD AddWorkState(nsIMdbRow *row, const char * value); \
  NS_METHOD AddWorkZipCode(nsIMdbRow *row, const char * value); \
  NS_METHOD AddWorkCountry(nsIMdbRow *row, const char * value); \
  NS_METHOD AddJobTitle(nsIMdbRow *row, const char * value); \
  NS_METHOD AddDepartment(nsIMdbRow *row, const char * value); \
  NS_METHOD AddCompany(nsIMdbRow *row, const char * value); \
  NS_METHOD AddAimScreenName(nsIMdbRow *row, const char * value); \
  NS_METHOD AddAnniversaryYear(nsIMdbRow *row, const char * value); \
  NS_METHOD AddAnniversaryMonth(nsIMdbRow *row, const char * value); \
  NS_METHOD AddAnniversaryDay(nsIMdbRow *row, const char * value); \
  NS_METHOD AddSpouseName(nsIMdbRow *row, const char * value); \
  NS_METHOD AddFamilyName(nsIMdbRow *row, const char * value); \
  NS_METHOD AddDefaultAddress(nsIMdbRow *row, const char * value); \
  NS_METHOD AddCategory(nsIMdbRow *row, const char * value); \
  NS_METHOD AddWebPage1(nsIMdbRow *row, const char * value); \
  NS_METHOD AddWebPage2(nsIMdbRow *row, const char * value); \
  NS_METHOD AddBirthYear(nsIMdbRow *row, const char * value); \
  NS_METHOD AddBirthMonth(nsIMdbRow *row, const char * value); \
  NS_METHOD AddBirthDay(nsIMdbRow *row, const char * value); \
  NS_METHOD AddCustom1(nsIMdbRow *row, const char * value); \
  NS_METHOD AddCustom2(nsIMdbRow *row, const char * value); \
  NS_METHOD AddCustom3(nsIMdbRow *row, const char * value); \
  NS_METHOD AddCustom4(nsIMdbRow *row, const char * value); \
  NS_METHOD AddNotes(nsIMdbRow *row, const char * value); \
  NS_METHOD AddPreferMailFormat(nsIMdbRow *row, uint32_t value); \
  NS_METHOD AddPopularityIndex(nsIMdbRow *row, uint32_t value); \
  NS_METHOD AddListName(nsIMdbRow *row, const char * value); \
  NS_METHOD AddListNickName(nsIMdbRow *row, const char * value); \
  NS_METHOD AddListDescription(nsIMdbRow *row, const char * value); \
  NS_METHOD AddListDirNode(nsIMdbRow *listRow); \
  NS_METHOD SetCardValue(nsIAbCard *card, const char * name, const char16_t * value, bool notify); \
  NS_METHOD GetCardValue(nsIAbCard *card, const char * name, char16_t * *_retval); \
  NS_METHOD GetDeletedCardList(nsIArray * *aDeletedCardList); \
  NS_METHOD GetDeletedCardCount(uint32_t *aDeletedCardCount); \
  NS_METHOD AddListCardColumnsToRow(nsIAbCard *aPCard, nsIMdbRow *aPListRow, uint32_t aPos, nsIAbCard * *aPNewCard, bool aInMailingList, nsIAbDirectory *aParent, nsIAbDirectory *aRoot); \
  NS_METHOD InitCardFromRow(nsIAbCard *aNewCard, nsIMdbRow *aCardRow); \
  NS_METHOD SetListAddressTotal(nsIMdbRow *aListRow, uint32_t aTotal); \
  NS_METHOD FindRowByCard(nsIAbCard *aCard, nsIMdbRow * *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIADDRDATABASE(_to) \
  NS_IMETHOD GetDbPath(nsIFile * *aDbPath) override { return _to GetDbPath(aDbPath); } \
  NS_IMETHOD SetDbPath(nsIFile *aDbPath) override { return _to SetDbPath(aDbPath); } \
  NS_IMETHOD Open(nsIFile *dbFile, bool create, bool upgrading, nsIAddrDatabase * *_retval) override { return _to Open(dbFile, create, upgrading, _retval); } \
  NS_IMETHOD Close(bool forceCommit) override { return _to Close(forceCommit); } \
  NS_IMETHOD OpenMDB(nsIFile *dbName, bool create) override { return _to OpenMDB(dbName, create); } \
  NS_IMETHOD CloseMDB(bool commit) override { return _to CloseMDB(commit); } \
  NS_IMETHOD Commit(uint32_t commitType) override { return _to Commit(commitType); } \
  NS_IMETHOD ForceClosed(void) override { return _to ForceClosed(); } \
  NS_IMETHOD CreateNewCardAndAddToDB(nsIAbCard *aNewCard, bool aNotify, nsIAbDirectory *aParent) override { return _to CreateNewCardAndAddToDB(aNewCard, aNotify, aParent); } \
  NS_IMETHOD CreateNewListCardAndAddToDB(nsIAbDirectory *list, uint32_t listRowID, nsIAbCard *newCard, bool aNotify) override { return _to CreateNewListCardAndAddToDB(list, listRowID, newCard, aNotify); } \
  NS_IMETHOD CreateMailListAndAddToDB(nsIAbDirectory *aNewList, bool aNotify, nsIAbDirectory *aParent) override { return _to CreateMailListAndAddToDB(aNewList, aNotify, aParent); } \
  NS_IMETHOD EnumerateCards(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval) override { return _to EnumerateCards(directory, _retval); } \
  NS_IMETHOD EnumerateListAddresses(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval) override { return _to EnumerateListAddresses(directory, _retval); } \
  NS_IMETHOD GetMailingListsFromDB(nsIAbDirectory *parentDir) override { return _to GetMailingListsFromDB(parentDir); } \
  NS_IMETHOD DeleteCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent) override { return _to DeleteCard(aCard, aNotify, aParent); } \
  NS_IMETHOD EditCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent) override { return _to EditCard(aCard, aNotify, aParent); } \
  NS_IMETHOD ContainsCard(nsIAbCard *card, bool *_retval) override { return _to ContainsCard(card, _retval); } \
  NS_IMETHOD DeleteMailList(nsIAbDirectory *aMailList, nsIAbDirectory *aParent) override { return _to DeleteMailList(aMailList, aParent); } \
  NS_IMETHOD EditMailList(nsIAbDirectory *mailList, nsIAbCard *listCard, bool aNotify) override { return _to EditMailList(mailList, listCard, aNotify); } \
  NS_IMETHOD ContainsMailList(nsIAbDirectory *mailList, bool *_retval) override { return _to ContainsMailList(mailList, _retval); } \
  NS_IMETHOD DeleteCardFromMailList(nsIAbDirectory *mailList, nsIAbCard *card, bool aNotify) override { return _to DeleteCardFromMailList(mailList, card, aNotify); } \
  NS_IMETHOD GetCardFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & aUTF8Value, bool aCaseInsensitive, nsIAbCard * *_retval) override { return _to GetCardFromAttribute(aDirectory, aName, aUTF8Value, aCaseInsensitive, _retval); } \
  NS_IMETHOD GetCardsFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & uUTF8Value, bool aCaseInsensitive, nsISimpleEnumerator * *_retval) override { return _to GetCardsFromAttribute(aDirectory, aName, uUTF8Value, aCaseInsensitive, _retval); } \
  NS_IMETHOD FindMailListbyUnicodeName(const char16_t * listName, bool *_retval) override { return _to FindMailListbyUnicodeName(listName, _retval); } \
  NS_IMETHOD GetCardCount(uint32_t *count) override { return _to GetCardCount(count); } \
  NS_IMETHOD GetNewRow(nsIMdbRow * *aNewRow) override { return _to GetNewRow(aNewRow); } \
  NS_IMETHOD GetNewListRow(nsIMdbRow * *aNewListRow) override { return _to GetNewListRow(aNewListRow); } \
  NS_IMETHOD AddCardRowToDB(nsIMdbRow *newRow) override { return _to AddCardRowToDB(newRow); } \
  NS_IMETHOD AddLdifListMember(nsIMdbRow *row, const char * value) override { return _to AddLdifListMember(row, value); } \
  NS_IMETHOD AddFirstName(nsIMdbRow *row, const char * value) override { return _to AddFirstName(row, value); } \
  NS_IMETHOD AddLastName(nsIMdbRow *row, const char * value) override { return _to AddLastName(row, value); } \
  NS_IMETHOD AddPhoneticFirstName(nsIMdbRow *row, const char * value) override { return _to AddPhoneticFirstName(row, value); } \
  NS_IMETHOD AddPhoneticLastName(nsIMdbRow *row, const char * value) override { return _to AddPhoneticLastName(row, value); } \
  NS_IMETHOD AddDisplayName(nsIMdbRow *row, const char * value) override { return _to AddDisplayName(row, value); } \
  NS_IMETHOD AddNickName(nsIMdbRow *row, const char * value) override { return _to AddNickName(row, value); } \
  NS_IMETHOD AddPrimaryEmail(nsIMdbRow *row, const char * value) override { return _to AddPrimaryEmail(row, value); } \
  NS_IMETHOD Add2ndEmail(nsIMdbRow *row, const char * value) override { return _to Add2ndEmail(row, value); } \
  NS_IMETHOD AddWorkPhone(nsIMdbRow *row, const char * value) override { return _to AddWorkPhone(row, value); } \
  NS_IMETHOD AddHomePhone(nsIMdbRow *row, const char * value) override { return _to AddHomePhone(row, value); } \
  NS_IMETHOD AddFaxNumber(nsIMdbRow *row, const char * value) override { return _to AddFaxNumber(row, value); } \
  NS_IMETHOD AddPagerNumber(nsIMdbRow *row, const char * value) override { return _to AddPagerNumber(row, value); } \
  NS_IMETHOD AddCellularNumber(nsIMdbRow *row, const char * value) override { return _to AddCellularNumber(row, value); } \
  NS_IMETHOD AddWorkPhoneType(nsIMdbRow *row, const char * value) override { return _to AddWorkPhoneType(row, value); } \
  NS_IMETHOD AddHomePhoneType(nsIMdbRow *row, const char * value) override { return _to AddHomePhoneType(row, value); } \
  NS_IMETHOD AddFaxNumberType(nsIMdbRow *row, const char * value) override { return _to AddFaxNumberType(row, value); } \
  NS_IMETHOD AddPagerNumberType(nsIMdbRow *row, const char * value) override { return _to AddPagerNumberType(row, value); } \
  NS_IMETHOD AddCellularNumberType(nsIMdbRow *row, const char * value) override { return _to AddCellularNumberType(row, value); } \
  NS_IMETHOD AddHomeAddress(nsIMdbRow *row, const char * value) override { return _to AddHomeAddress(row, value); } \
  NS_IMETHOD AddHomeAddress2(nsIMdbRow *row, const char * value) override { return _to AddHomeAddress2(row, value); } \
  NS_IMETHOD AddHomeCity(nsIMdbRow *row, const char * value) override { return _to AddHomeCity(row, value); } \
  NS_IMETHOD AddHomeState(nsIMdbRow *row, const char * value) override { return _to AddHomeState(row, value); } \
  NS_IMETHOD AddHomeZipCode(nsIMdbRow *row, const char * value) override { return _to AddHomeZipCode(row, value); } \
  NS_IMETHOD AddHomeCountry(nsIMdbRow *row, const char * value) override { return _to AddHomeCountry(row, value); } \
  NS_IMETHOD AddWorkAddress(nsIMdbRow *row, const char * value) override { return _to AddWorkAddress(row, value); } \
  NS_IMETHOD AddWorkAddress2(nsIMdbRow *row, const char * value) override { return _to AddWorkAddress2(row, value); } \
  NS_IMETHOD AddWorkCity(nsIMdbRow *row, const char * value) override { return _to AddWorkCity(row, value); } \
  NS_IMETHOD AddWorkState(nsIMdbRow *row, const char * value) override { return _to AddWorkState(row, value); } \
  NS_IMETHOD AddWorkZipCode(nsIMdbRow *row, const char * value) override { return _to AddWorkZipCode(row, value); } \
  NS_IMETHOD AddWorkCountry(nsIMdbRow *row, const char * value) override { return _to AddWorkCountry(row, value); } \
  NS_IMETHOD AddJobTitle(nsIMdbRow *row, const char * value) override { return _to AddJobTitle(row, value); } \
  NS_IMETHOD AddDepartment(nsIMdbRow *row, const char * value) override { return _to AddDepartment(row, value); } \
  NS_IMETHOD AddCompany(nsIMdbRow *row, const char * value) override { return _to AddCompany(row, value); } \
  NS_IMETHOD AddAimScreenName(nsIMdbRow *row, const char * value) override { return _to AddAimScreenName(row, value); } \
  NS_IMETHOD AddAnniversaryYear(nsIMdbRow *row, const char * value) override { return _to AddAnniversaryYear(row, value); } \
  NS_IMETHOD AddAnniversaryMonth(nsIMdbRow *row, const char * value) override { return _to AddAnniversaryMonth(row, value); } \
  NS_IMETHOD AddAnniversaryDay(nsIMdbRow *row, const char * value) override { return _to AddAnniversaryDay(row, value); } \
  NS_IMETHOD AddSpouseName(nsIMdbRow *row, const char * value) override { return _to AddSpouseName(row, value); } \
  NS_IMETHOD AddFamilyName(nsIMdbRow *row, const char * value) override { return _to AddFamilyName(row, value); } \
  NS_IMETHOD AddDefaultAddress(nsIMdbRow *row, const char * value) override { return _to AddDefaultAddress(row, value); } \
  NS_IMETHOD AddCategory(nsIMdbRow *row, const char * value) override { return _to AddCategory(row, value); } \
  NS_IMETHOD AddWebPage1(nsIMdbRow *row, const char * value) override { return _to AddWebPage1(row, value); } \
  NS_IMETHOD AddWebPage2(nsIMdbRow *row, const char * value) override { return _to AddWebPage2(row, value); } \
  NS_IMETHOD AddBirthYear(nsIMdbRow *row, const char * value) override { return _to AddBirthYear(row, value); } \
  NS_IMETHOD AddBirthMonth(nsIMdbRow *row, const char * value) override { return _to AddBirthMonth(row, value); } \
  NS_IMETHOD AddBirthDay(nsIMdbRow *row, const char * value) override { return _to AddBirthDay(row, value); } \
  NS_IMETHOD AddCustom1(nsIMdbRow *row, const char * value) override { return _to AddCustom1(row, value); } \
  NS_IMETHOD AddCustom2(nsIMdbRow *row, const char * value) override { return _to AddCustom2(row, value); } \
  NS_IMETHOD AddCustom3(nsIMdbRow *row, const char * value) override { return _to AddCustom3(row, value); } \
  NS_IMETHOD AddCustom4(nsIMdbRow *row, const char * value) override { return _to AddCustom4(row, value); } \
  NS_IMETHOD AddNotes(nsIMdbRow *row, const char * value) override { return _to AddNotes(row, value); } \
  NS_IMETHOD AddPreferMailFormat(nsIMdbRow *row, uint32_t value) override { return _to AddPreferMailFormat(row, value); } \
  NS_IMETHOD AddPopularityIndex(nsIMdbRow *row, uint32_t value) override { return _to AddPopularityIndex(row, value); } \
  NS_IMETHOD AddListName(nsIMdbRow *row, const char * value) override { return _to AddListName(row, value); } \
  NS_IMETHOD AddListNickName(nsIMdbRow *row, const char * value) override { return _to AddListNickName(row, value); } \
  NS_IMETHOD AddListDescription(nsIMdbRow *row, const char * value) override { return _to AddListDescription(row, value); } \
  NS_IMETHOD AddListDirNode(nsIMdbRow *listRow) override { return _to AddListDirNode(listRow); } \
  NS_IMETHOD SetCardValue(nsIAbCard *card, const char * name, const char16_t * value, bool notify) override { return _to SetCardValue(card, name, value, notify); } \
  NS_IMETHOD GetCardValue(nsIAbCard *card, const char * name, char16_t * *_retval) override { return _to GetCardValue(card, name, _retval); } \
  NS_IMETHOD GetDeletedCardList(nsIArray * *aDeletedCardList) override { return _to GetDeletedCardList(aDeletedCardList); } \
  NS_IMETHOD GetDeletedCardCount(uint32_t *aDeletedCardCount) override { return _to GetDeletedCardCount(aDeletedCardCount); } \
  NS_IMETHOD AddListCardColumnsToRow(nsIAbCard *aPCard, nsIMdbRow *aPListRow, uint32_t aPos, nsIAbCard * *aPNewCard, bool aInMailingList, nsIAbDirectory *aParent, nsIAbDirectory *aRoot) override { return _to AddListCardColumnsToRow(aPCard, aPListRow, aPos, aPNewCard, aInMailingList, aParent, aRoot); } \
  NS_IMETHOD InitCardFromRow(nsIAbCard *aNewCard, nsIMdbRow *aCardRow) override { return _to InitCardFromRow(aNewCard, aCardRow); } \
  NS_IMETHOD SetListAddressTotal(nsIMdbRow *aListRow, uint32_t aTotal) override { return _to SetListAddressTotal(aListRow, aTotal); } \
  NS_IMETHOD FindRowByCard(nsIAbCard *aCard, nsIMdbRow * *_retval) override { return _to FindRowByCard(aCard, _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_NSIADDRDATABASE(_to) \
  NS_IMETHOD GetDbPath(nsIFile * *aDbPath) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDbPath(aDbPath); } \
  NS_IMETHOD SetDbPath(nsIFile *aDbPath) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDbPath(aDbPath); } \
  NS_IMETHOD Open(nsIFile *dbFile, bool create, bool upgrading, nsIAddrDatabase * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Open(dbFile, create, upgrading, _retval); } \
  NS_IMETHOD Close(bool forceCommit) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Close(forceCommit); } \
  NS_IMETHOD OpenMDB(nsIFile *dbName, bool create) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenMDB(dbName, create); } \
  NS_IMETHOD CloseMDB(bool commit) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CloseMDB(commit); } \
  NS_IMETHOD Commit(uint32_t commitType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Commit(commitType); } \
  NS_IMETHOD ForceClosed(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ForceClosed(); } \
  NS_IMETHOD CreateNewCardAndAddToDB(nsIAbCard *aNewCard, bool aNotify, nsIAbDirectory *aParent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateNewCardAndAddToDB(aNewCard, aNotify, aParent); } \
  NS_IMETHOD CreateNewListCardAndAddToDB(nsIAbDirectory *list, uint32_t listRowID, nsIAbCard *newCard, bool aNotify) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateNewListCardAndAddToDB(list, listRowID, newCard, aNotify); } \
  NS_IMETHOD CreateMailListAndAddToDB(nsIAbDirectory *aNewList, bool aNotify, nsIAbDirectory *aParent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateMailListAndAddToDB(aNewList, aNotify, aParent); } \
  NS_IMETHOD EnumerateCards(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateCards(directory, _retval); } \
  NS_IMETHOD EnumerateListAddresses(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EnumerateListAddresses(directory, _retval); } \
  NS_IMETHOD GetMailingListsFromDB(nsIAbDirectory *parentDir) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMailingListsFromDB(parentDir); } \
  NS_IMETHOD DeleteCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteCard(aCard, aNotify, aParent); } \
  NS_IMETHOD EditCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EditCard(aCard, aNotify, aParent); } \
  NS_IMETHOD ContainsCard(nsIAbCard *card, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ContainsCard(card, _retval); } \
  NS_IMETHOD DeleteMailList(nsIAbDirectory *aMailList, nsIAbDirectory *aParent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteMailList(aMailList, aParent); } \
  NS_IMETHOD EditMailList(nsIAbDirectory *mailList, nsIAbCard *listCard, bool aNotify) override { return !_to ? NS_ERROR_NULL_POINTER : _to->EditMailList(mailList, listCard, aNotify); } \
  NS_IMETHOD ContainsMailList(nsIAbDirectory *mailList, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->ContainsMailList(mailList, _retval); } \
  NS_IMETHOD DeleteCardFromMailList(nsIAbDirectory *mailList, nsIAbCard *card, bool aNotify) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteCardFromMailList(mailList, card, aNotify); } \
  NS_IMETHOD GetCardFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & aUTF8Value, bool aCaseInsensitive, nsIAbCard * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCardFromAttribute(aDirectory, aName, aUTF8Value, aCaseInsensitive, _retval); } \
  NS_IMETHOD GetCardsFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & uUTF8Value, bool aCaseInsensitive, nsISimpleEnumerator * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCardsFromAttribute(aDirectory, aName, uUTF8Value, aCaseInsensitive, _retval); } \
  NS_IMETHOD FindMailListbyUnicodeName(const char16_t * listName, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FindMailListbyUnicodeName(listName, _retval); } \
  NS_IMETHOD GetCardCount(uint32_t *count) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCardCount(count); } \
  NS_IMETHOD GetNewRow(nsIMdbRow * *aNewRow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNewRow(aNewRow); } \
  NS_IMETHOD GetNewListRow(nsIMdbRow * *aNewListRow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNewListRow(aNewListRow); } \
  NS_IMETHOD AddCardRowToDB(nsIMdbRow *newRow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCardRowToDB(newRow); } \
  NS_IMETHOD AddLdifListMember(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddLdifListMember(row, value); } \
  NS_IMETHOD AddFirstName(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddFirstName(row, value); } \
  NS_IMETHOD AddLastName(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddLastName(row, value); } \
  NS_IMETHOD AddPhoneticFirstName(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddPhoneticFirstName(row, value); } \
  NS_IMETHOD AddPhoneticLastName(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddPhoneticLastName(row, value); } \
  NS_IMETHOD AddDisplayName(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddDisplayName(row, value); } \
  NS_IMETHOD AddNickName(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddNickName(row, value); } \
  NS_IMETHOD AddPrimaryEmail(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddPrimaryEmail(row, value); } \
  NS_IMETHOD Add2ndEmail(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Add2ndEmail(row, value); } \
  NS_IMETHOD AddWorkPhone(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddWorkPhone(row, value); } \
  NS_IMETHOD AddHomePhone(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddHomePhone(row, value); } \
  NS_IMETHOD AddFaxNumber(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddFaxNumber(row, value); } \
  NS_IMETHOD AddPagerNumber(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddPagerNumber(row, value); } \
  NS_IMETHOD AddCellularNumber(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCellularNumber(row, value); } \
  NS_IMETHOD AddWorkPhoneType(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddWorkPhoneType(row, value); } \
  NS_IMETHOD AddHomePhoneType(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddHomePhoneType(row, value); } \
  NS_IMETHOD AddFaxNumberType(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddFaxNumberType(row, value); } \
  NS_IMETHOD AddPagerNumberType(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddPagerNumberType(row, value); } \
  NS_IMETHOD AddCellularNumberType(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCellularNumberType(row, value); } \
  NS_IMETHOD AddHomeAddress(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddHomeAddress(row, value); } \
  NS_IMETHOD AddHomeAddress2(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddHomeAddress2(row, value); } \
  NS_IMETHOD AddHomeCity(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddHomeCity(row, value); } \
  NS_IMETHOD AddHomeState(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddHomeState(row, value); } \
  NS_IMETHOD AddHomeZipCode(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddHomeZipCode(row, value); } \
  NS_IMETHOD AddHomeCountry(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddHomeCountry(row, value); } \
  NS_IMETHOD AddWorkAddress(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddWorkAddress(row, value); } \
  NS_IMETHOD AddWorkAddress2(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddWorkAddress2(row, value); } \
  NS_IMETHOD AddWorkCity(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddWorkCity(row, value); } \
  NS_IMETHOD AddWorkState(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddWorkState(row, value); } \
  NS_IMETHOD AddWorkZipCode(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddWorkZipCode(row, value); } \
  NS_IMETHOD AddWorkCountry(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddWorkCountry(row, value); } \
  NS_IMETHOD AddJobTitle(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddJobTitle(row, value); } \
  NS_IMETHOD AddDepartment(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddDepartment(row, value); } \
  NS_IMETHOD AddCompany(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCompany(row, value); } \
  NS_IMETHOD AddAimScreenName(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddAimScreenName(row, value); } \
  NS_IMETHOD AddAnniversaryYear(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddAnniversaryYear(row, value); } \
  NS_IMETHOD AddAnniversaryMonth(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddAnniversaryMonth(row, value); } \
  NS_IMETHOD AddAnniversaryDay(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddAnniversaryDay(row, value); } \
  NS_IMETHOD AddSpouseName(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddSpouseName(row, value); } \
  NS_IMETHOD AddFamilyName(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddFamilyName(row, value); } \
  NS_IMETHOD AddDefaultAddress(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddDefaultAddress(row, value); } \
  NS_IMETHOD AddCategory(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCategory(row, value); } \
  NS_IMETHOD AddWebPage1(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddWebPage1(row, value); } \
  NS_IMETHOD AddWebPage2(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddWebPage2(row, value); } \
  NS_IMETHOD AddBirthYear(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddBirthYear(row, value); } \
  NS_IMETHOD AddBirthMonth(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddBirthMonth(row, value); } \
  NS_IMETHOD AddBirthDay(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddBirthDay(row, value); } \
  NS_IMETHOD AddCustom1(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCustom1(row, value); } \
  NS_IMETHOD AddCustom2(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCustom2(row, value); } \
  NS_IMETHOD AddCustom3(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCustom3(row, value); } \
  NS_IMETHOD AddCustom4(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddCustom4(row, value); } \
  NS_IMETHOD AddNotes(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddNotes(row, value); } \
  NS_IMETHOD AddPreferMailFormat(nsIMdbRow *row, uint32_t value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddPreferMailFormat(row, value); } \
  NS_IMETHOD AddPopularityIndex(nsIMdbRow *row, uint32_t value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddPopularityIndex(row, value); } \
  NS_IMETHOD AddListName(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddListName(row, value); } \
  NS_IMETHOD AddListNickName(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddListNickName(row, value); } \
  NS_IMETHOD AddListDescription(nsIMdbRow *row, const char * value) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddListDescription(row, value); } \
  NS_IMETHOD AddListDirNode(nsIMdbRow *listRow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddListDirNode(listRow); } \
  NS_IMETHOD SetCardValue(nsIAbCard *card, const char * name, const char16_t * value, bool notify) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCardValue(card, name, value, notify); } \
  NS_IMETHOD GetCardValue(nsIAbCard *card, const char * name, char16_t * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCardValue(card, name, _retval); } \
  NS_IMETHOD GetDeletedCardList(nsIArray * *aDeletedCardList) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeletedCardList(aDeletedCardList); } \
  NS_IMETHOD GetDeletedCardCount(uint32_t *aDeletedCardCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeletedCardCount(aDeletedCardCount); } \
  NS_IMETHOD AddListCardColumnsToRow(nsIAbCard *aPCard, nsIMdbRow *aPListRow, uint32_t aPos, nsIAbCard * *aPNewCard, bool aInMailingList, nsIAbDirectory *aParent, nsIAbDirectory *aRoot) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AddListCardColumnsToRow(aPCard, aPListRow, aPos, aPNewCard, aInMailingList, aParent, aRoot); } \
  NS_IMETHOD InitCardFromRow(nsIAbCard *aNewCard, nsIMdbRow *aCardRow) override { return !_to ? NS_ERROR_NULL_POINTER : _to->InitCardFromRow(aNewCard, aCardRow); } \
  NS_IMETHOD SetListAddressTotal(nsIMdbRow *aListRow, uint32_t aTotal) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetListAddressTotal(aListRow, aTotal); } \
  NS_IMETHOD FindRowByCard(nsIAbCard *aCard, nsIMdbRow * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->FindRowByCard(aCard, _retval); } 

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

/* Header file */
class nsAddrDatabase : public nsIAddrDatabase
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIADDRDATABASE

  nsAddrDatabase();

private:
  ~nsAddrDatabase();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsAddrDatabase, nsIAddrDatabase)

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

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

/* attribute nsIFile dbPath; */
NS_IMETHODIMP nsAddrDatabase::GetDbPath(nsIFile * *aDbPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAddrDatabase::SetDbPath(nsIFile *aDbPath)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIAddrDatabase open (in nsIFile dbFile, in boolean create, in boolean upgrading); */
NS_IMETHODIMP nsAddrDatabase::Open(nsIFile *dbFile, bool create, bool upgrading, nsIAddrDatabase * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void close (in boolean forceCommit); */
NS_IMETHODIMP nsAddrDatabase::Close(bool forceCommit)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void openMDB (in nsIFile dbName, in boolean create); */
NS_IMETHODIMP nsAddrDatabase::OpenMDB(nsIFile *dbName, bool create)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void closeMDB (in boolean commit); */
NS_IMETHODIMP nsAddrDatabase::CloseMDB(bool commit)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void commit (in unsigned long commitType); */
NS_IMETHODIMP nsAddrDatabase::Commit(uint32_t commitType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void forceClosed (); */
NS_IMETHODIMP nsAddrDatabase::ForceClosed()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createNewCardAndAddToDB (in nsIAbCard aNewCard, in boolean aNotify, in nsIAbDirectory aParent); */
NS_IMETHODIMP nsAddrDatabase::CreateNewCardAndAddToDB(nsIAbCard *aNewCard, bool aNotify, nsIAbDirectory *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createNewListCardAndAddToDB (in nsIAbDirectory list, in unsigned long listRowID, in nsIAbCard newCard, in boolean aNotify); */
NS_IMETHODIMP nsAddrDatabase::CreateNewListCardAndAddToDB(nsIAbDirectory *list, uint32_t listRowID, nsIAbCard *newCard, bool aNotify)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createMailListAndAddToDB (in nsIAbDirectory aNewList, in boolean aNotify, in nsIAbDirectory aParent); */
NS_IMETHODIMP nsAddrDatabase::CreateMailListAndAddToDB(nsIAbDirectory *aNewList, bool aNotify, nsIAbDirectory *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator enumerateCards (in nsIAbDirectory directory); */
NS_IMETHODIMP nsAddrDatabase::EnumerateCards(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator enumerateListAddresses (in nsIAbDirectory directory); */
NS_IMETHODIMP nsAddrDatabase::EnumerateListAddresses(nsIAbDirectory *directory, nsISimpleEnumerator * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMailingListsFromDB (in nsIAbDirectory parentDir); */
NS_IMETHODIMP nsAddrDatabase::GetMailingListsFromDB(nsIAbDirectory *parentDir)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteCard (in nsIAbCard aCard, in boolean aNotify, in nsIAbDirectory aParent); */
NS_IMETHODIMP nsAddrDatabase::DeleteCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void editCard (in nsIAbCard aCard, in boolean aNotify, in nsIAbDirectory aParent); */
NS_IMETHODIMP nsAddrDatabase::EditCard(nsIAbCard *aCard, bool aNotify, nsIAbDirectory *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean containsCard (in nsIAbCard card); */
NS_IMETHODIMP nsAddrDatabase::ContainsCard(nsIAbCard *card, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteMailList (in nsIAbDirectory aMailList, [optional] in nsIAbDirectory aParent); */
NS_IMETHODIMP nsAddrDatabase::DeleteMailList(nsIAbDirectory *aMailList, nsIAbDirectory *aParent)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void editMailList (in nsIAbDirectory mailList, in nsIAbCard listCard, in boolean aNotify); */
NS_IMETHODIMP nsAddrDatabase::EditMailList(nsIAbDirectory *mailList, nsIAbCard *listCard, bool aNotify)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean containsMailList (in nsIAbDirectory mailList); */
NS_IMETHODIMP nsAddrDatabase::ContainsMailList(nsIAbDirectory *mailList, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteCardFromMailList (in nsIAbDirectory mailList, in nsIAbCard card, in boolean aNotify); */
NS_IMETHODIMP nsAddrDatabase::DeleteCardFromMailList(nsIAbDirectory *mailList, nsIAbCard *card, bool aNotify)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIAbCard getCardFromAttribute (in nsIAbDirectory aDirectory, in string aName, in AUTF8String aUTF8Value, in boolean aCaseInsensitive); */
NS_IMETHODIMP nsAddrDatabase::GetCardFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & aUTF8Value, bool aCaseInsensitive, nsIAbCard * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getCardsFromAttribute (in nsIAbDirectory aDirectory, in string aName, in AUTF8String uUTF8Value, in boolean aCaseInsensitive); */
NS_IMETHODIMP nsAddrDatabase::GetCardsFromAttribute(nsIAbDirectory *aDirectory, const char * aName, const nsACString & uUTF8Value, bool aCaseInsensitive, nsISimpleEnumerator * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean findMailListbyUnicodeName (in wstring listName); */
NS_IMETHODIMP nsAddrDatabase::FindMailListbyUnicodeName(const char16_t * listName, bool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCardCount (out uint32_t count); */
NS_IMETHODIMP nsAddrDatabase::GetCardCount(uint32_t *count)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] readonly attribute nsIMdbRow newRow; */
NS_IMETHODIMP nsAddrDatabase::GetNewRow(nsIMdbRow * *aNewRow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] readonly attribute nsIMdbRow newListRow; */
NS_IMETHODIMP nsAddrDatabase::GetNewListRow(nsIMdbRow * *aNewListRow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addCardRowToDB (in nsIMdbRow newRow); */
NS_IMETHODIMP nsAddrDatabase::AddCardRowToDB(nsIMdbRow *newRow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addLdifListMember (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddLdifListMember(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addFirstName (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddFirstName(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addLastName (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddLastName(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addPhoneticFirstName (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddPhoneticFirstName(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addPhoneticLastName (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddPhoneticLastName(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addDisplayName (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddDisplayName(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addNickName (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddNickName(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addPrimaryEmail (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddPrimaryEmail(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void add2ndEmail (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::Add2ndEmail(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addWorkPhone (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddWorkPhone(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addHomePhone (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddHomePhone(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addFaxNumber (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddFaxNumber(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addPagerNumber (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddPagerNumber(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addCellularNumber (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddCellularNumber(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addWorkPhoneType (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddWorkPhoneType(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addHomePhoneType (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddHomePhoneType(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addFaxNumberType (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddFaxNumberType(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addPagerNumberType (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddPagerNumberType(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addCellularNumberType (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddCellularNumberType(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addHomeAddress (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddHomeAddress(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addHomeAddress2 (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddHomeAddress2(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addHomeCity (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddHomeCity(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addHomeState (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddHomeState(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addHomeZipCode (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddHomeZipCode(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addHomeCountry (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddHomeCountry(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addWorkAddress (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddWorkAddress(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addWorkAddress2 (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddWorkAddress2(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addWorkCity (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddWorkCity(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addWorkState (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddWorkState(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addWorkZipCode (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddWorkZipCode(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addWorkCountry (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddWorkCountry(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addJobTitle (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddJobTitle(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addDepartment (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddDepartment(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addCompany (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddCompany(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addAimScreenName (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddAimScreenName(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addAnniversaryYear (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddAnniversaryYear(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addAnniversaryMonth (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddAnniversaryMonth(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addAnniversaryDay (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddAnniversaryDay(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addSpouseName (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddSpouseName(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addFamilyName (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddFamilyName(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addDefaultAddress (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddDefaultAddress(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addCategory (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddCategory(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addWebPage1 (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddWebPage1(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addWebPage2 (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddWebPage2(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addBirthYear (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddBirthYear(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addBirthMonth (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddBirthMonth(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addBirthDay (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddBirthDay(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addCustom1 (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddCustom1(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addCustom2 (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddCustom2(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addCustom3 (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddCustom3(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addCustom4 (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddCustom4(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addNotes (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddNotes(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addPreferMailFormat (in nsIMdbRow row, in unsigned long value); */
NS_IMETHODIMP nsAddrDatabase::AddPreferMailFormat(nsIMdbRow *row, uint32_t value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addPopularityIndex (in nsIMdbRow row, in unsigned long value); */
NS_IMETHODIMP nsAddrDatabase::AddPopularityIndex(nsIMdbRow *row, uint32_t value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addListName (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddListName(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addListNickName (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddListNickName(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addListDescription (in nsIMdbRow row, in string value); */
NS_IMETHODIMP nsAddrDatabase::AddListDescription(nsIMdbRow *row, const char * value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void addListDirNode (in nsIMdbRow listRow); */
NS_IMETHODIMP nsAddrDatabase::AddListDirNode(nsIMdbRow *listRow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setCardValue (in nsIAbCard card, in string name, in wstring value, in boolean notify); */
NS_IMETHODIMP nsAddrDatabase::SetCardValue(nsIAbCard *card, const char * name, const char16_t * value, bool notify)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* wstring getCardValue (in nsIAbCard card, in string name); */
NS_IMETHODIMP nsAddrDatabase::GetCardValue(nsIAbCard *card, const char * name, char16_t * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIArray deletedCardList; */
NS_IMETHODIMP nsAddrDatabase::GetDeletedCardList(nsIArray * *aDeletedCardList)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long deletedCardCount; */
NS_IMETHODIMP nsAddrDatabase::GetDeletedCardCount(uint32_t *aDeletedCardCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void AddListCardColumnsToRow (in nsIAbCard aPCard, in nsIMdbRow aPListRow, in unsigned long aPos, out nsIAbCard aPNewCard, in boolean aInMailingList, in nsIAbDirectory aParent, in nsIAbDirectory aRoot); */
NS_IMETHODIMP nsAddrDatabase::AddListCardColumnsToRow(nsIAbCard *aPCard, nsIMdbRow *aPListRow, uint32_t aPos, nsIAbCard * *aPNewCard, bool aInMailingList, nsIAbDirectory *aParent, nsIAbDirectory *aRoot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void InitCardFromRow (in nsIAbCard aNewCard, in nsIMdbRow aCardRow); */
NS_IMETHODIMP nsAddrDatabase::InitCardFromRow(nsIAbCard *aNewCard, nsIMdbRow *aCardRow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void SetListAddressTotal (in nsIMdbRow aListRow, in uint32_t aTotal); */
NS_IMETHODIMP nsAddrDatabase::SetListAddressTotal(nsIMdbRow *aListRow, uint32_t aTotal)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMdbRow FindRowByCard (in nsIAbCard aCard); */
NS_IMETHODIMP nsAddrDatabase::FindRowByCard(nsIAbCard *aCard, nsIMdbRow * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIAddrDatabase_h__ */
