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

#ifndef __gen_nsIAbDirectoryQuery_h__
#define __gen_nsIAbDirectoryQuery_h__


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

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

class nsIAbCard; /* forward declaration */

class nsIAbDirectory; /* forward declaration */


/* starting interface:    nsIAbDirectoryQueryArguments */
#define NS_IABDIRECTORYQUERYARGUMENTS_IID_STR "03af3018-2590-4f4c-a88c-1fff6595ef05"

#define NS_IABDIRECTORYQUERYARGUMENTS_IID \
  {0x03af3018, 0x2590, 0x4f4c, \
    { 0xa8, 0x8c, 0x1f, 0xff, 0x65, 0x95, 0xef, 0x05 }}

class NS_NO_VTABLE nsIAbDirectoryQueryArguments : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IABDIRECTORYQUERYARGUMENTS_IID)

  /* attribute nsISupports expression; */
  NS_IMETHOD GetExpression(nsISupports * *aExpression) = 0;
  NS_IMETHOD SetExpression(nsISupports *aExpression) = 0;

  /* attribute boolean querySubDirectories; */
  NS_IMETHOD GetQuerySubDirectories(bool *aQuerySubDirectories) = 0;
  NS_IMETHOD SetQuerySubDirectories(bool aQuerySubDirectories) = 0;

  /* attribute nsISupports typeSpecificArg; */
  NS_IMETHOD GetTypeSpecificArg(nsISupports * *aTypeSpecificArg) = 0;
  NS_IMETHOD SetTypeSpecificArg(nsISupports *aTypeSpecificArg) = 0;

  /* attribute AUTF8String filter; */
  NS_IMETHOD GetFilter(nsACString & aFilter) = 0;
  NS_IMETHOD SetFilter(const nsACString & aFilter) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAbDirectoryQueryArguments, NS_IABDIRECTORYQUERYARGUMENTS_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIABDIRECTORYQUERYARGUMENTS \
  NS_IMETHOD GetExpression(nsISupports * *aExpression) override; \
  NS_IMETHOD SetExpression(nsISupports *aExpression) override; \
  NS_IMETHOD GetQuerySubDirectories(bool *aQuerySubDirectories) override; \
  NS_IMETHOD SetQuerySubDirectories(bool aQuerySubDirectories) override; \
  NS_IMETHOD GetTypeSpecificArg(nsISupports * *aTypeSpecificArg) override; \
  NS_IMETHOD SetTypeSpecificArg(nsISupports *aTypeSpecificArg) override; \
  NS_IMETHOD GetFilter(nsACString & aFilter) override; \
  NS_IMETHOD SetFilter(const nsACString & aFilter) 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_NSIABDIRECTORYQUERYARGUMENTS \
  NS_METHOD GetExpression(nsISupports * *aExpression); \
  NS_METHOD SetExpression(nsISupports *aExpression); \
  NS_METHOD GetQuerySubDirectories(bool *aQuerySubDirectories); \
  NS_METHOD SetQuerySubDirectories(bool aQuerySubDirectories); \
  NS_METHOD GetTypeSpecificArg(nsISupports * *aTypeSpecificArg); \
  NS_METHOD SetTypeSpecificArg(nsISupports *aTypeSpecificArg); \
  NS_METHOD GetFilter(nsACString & aFilter); \
  NS_METHOD SetFilter(const nsACString & aFilter); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIABDIRECTORYQUERYARGUMENTS(_to) \
  NS_IMETHOD GetExpression(nsISupports * *aExpression) override { return _to GetExpression(aExpression); } \
  NS_IMETHOD SetExpression(nsISupports *aExpression) override { return _to SetExpression(aExpression); } \
  NS_IMETHOD GetQuerySubDirectories(bool *aQuerySubDirectories) override { return _to GetQuerySubDirectories(aQuerySubDirectories); } \
  NS_IMETHOD SetQuerySubDirectories(bool aQuerySubDirectories) override { return _to SetQuerySubDirectories(aQuerySubDirectories); } \
  NS_IMETHOD GetTypeSpecificArg(nsISupports * *aTypeSpecificArg) override { return _to GetTypeSpecificArg(aTypeSpecificArg); } \
  NS_IMETHOD SetTypeSpecificArg(nsISupports *aTypeSpecificArg) override { return _to SetTypeSpecificArg(aTypeSpecificArg); } \
  NS_IMETHOD GetFilter(nsACString & aFilter) override { return _to GetFilter(aFilter); } \
  NS_IMETHOD SetFilter(const nsACString & aFilter) override { return _to SetFilter(aFilter); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIABDIRECTORYQUERYARGUMENTS(_to) \
  NS_IMETHOD GetExpression(nsISupports * *aExpression) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetExpression(aExpression); } \
  NS_IMETHOD SetExpression(nsISupports *aExpression) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetExpression(aExpression); } \
  NS_IMETHOD GetQuerySubDirectories(bool *aQuerySubDirectories) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetQuerySubDirectories(aQuerySubDirectories); } \
  NS_IMETHOD SetQuerySubDirectories(bool aQuerySubDirectories) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetQuerySubDirectories(aQuerySubDirectories); } \
  NS_IMETHOD GetTypeSpecificArg(nsISupports * *aTypeSpecificArg) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTypeSpecificArg(aTypeSpecificArg); } \
  NS_IMETHOD SetTypeSpecificArg(nsISupports *aTypeSpecificArg) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTypeSpecificArg(aTypeSpecificArg); } \
  NS_IMETHOD GetFilter(nsACString & aFilter) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFilter(aFilter); } \
  NS_IMETHOD SetFilter(const nsACString & aFilter) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFilter(aFilter); } 

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

/* Header file */
class nsAbDirectoryQueryArguments : public nsIAbDirectoryQueryArguments
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIABDIRECTORYQUERYARGUMENTS

  nsAbDirectoryQueryArguments();

private:
  ~nsAbDirectoryQueryArguments();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsAbDirectoryQueryArguments, nsIAbDirectoryQueryArguments)

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

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

/* attribute nsISupports expression; */
NS_IMETHODIMP nsAbDirectoryQueryArguments::GetExpression(nsISupports * *aExpression)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbDirectoryQueryArguments::SetExpression(nsISupports *aExpression)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean querySubDirectories; */
NS_IMETHODIMP nsAbDirectoryQueryArguments::GetQuerySubDirectories(bool *aQuerySubDirectories)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbDirectoryQueryArguments::SetQuerySubDirectories(bool aQuerySubDirectories)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsISupports typeSpecificArg; */
NS_IMETHODIMP nsAbDirectoryQueryArguments::GetTypeSpecificArg(nsISupports * *aTypeSpecificArg)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbDirectoryQueryArguments::SetTypeSpecificArg(nsISupports *aTypeSpecificArg)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute AUTF8String filter; */
NS_IMETHODIMP nsAbDirectoryQueryArguments::GetFilter(nsACString & aFilter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbDirectoryQueryArguments::SetFilter(const nsACString & aFilter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIAbDirectoryQueryPropertyValue */
#define NS_IABDIRECTORYQUERYPROPERTYVALUE_IID_STR "3a6e0c0c-1dd2-11b2-b23d-ea3a8ccb333c"

#define NS_IABDIRECTORYQUERYPROPERTYVALUE_IID \
  {0x3a6e0c0c, 0x1dd2, 0x11b2, \
    { 0xb2, 0x3d, 0xea, 0x3a, 0x8c, 0xcb, 0x33, 0x3c }}

class NS_NO_VTABLE nsIAbDirectoryQueryPropertyValue : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IABDIRECTORYQUERYPROPERTYVALUE_IID)

  /* readonly attribute string name; */
  NS_IMETHOD GetName(char * *aName) = 0;

  /* readonly attribute wstring value; */
  NS_IMETHOD GetValue(char16_t * *aValue) = 0;

  /* readonly attribute nsISupports valueISupports; */
  NS_IMETHOD GetValueISupports(nsISupports * *aValueISupports) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAbDirectoryQueryPropertyValue, NS_IABDIRECTORYQUERYPROPERTYVALUE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIABDIRECTORYQUERYPROPERTYVALUE \
  NS_IMETHOD GetName(char * *aName) override; \
  NS_IMETHOD GetValue(char16_t * *aValue) override; \
  NS_IMETHOD GetValueISupports(nsISupports * *aValueISupports) 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_NSIABDIRECTORYQUERYPROPERTYVALUE \
  NS_METHOD GetName(char * *aName); \
  NS_METHOD GetValue(char16_t * *aValue); \
  NS_METHOD GetValueISupports(nsISupports * *aValueISupports); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIABDIRECTORYQUERYPROPERTYVALUE(_to) \
  NS_IMETHOD GetName(char * *aName) override { return _to GetName(aName); } \
  NS_IMETHOD GetValue(char16_t * *aValue) override { return _to GetValue(aValue); } \
  NS_IMETHOD GetValueISupports(nsISupports * *aValueISupports) override { return _to GetValueISupports(aValueISupports); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIABDIRECTORYQUERYPROPERTYVALUE(_to) \
  NS_IMETHOD GetName(char * *aName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD GetValue(char16_t * *aValue) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetValue(aValue); } \
  NS_IMETHOD GetValueISupports(nsISupports * *aValueISupports) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetValueISupports(aValueISupports); } 

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

/* Header file */
class nsAbDirectoryQueryPropertyValue : public nsIAbDirectoryQueryPropertyValue
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIABDIRECTORYQUERYPROPERTYVALUE

  nsAbDirectoryQueryPropertyValue();

private:
  ~nsAbDirectoryQueryPropertyValue();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsAbDirectoryQueryPropertyValue, nsIAbDirectoryQueryPropertyValue)

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

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

/* readonly attribute string name; */
NS_IMETHODIMP nsAbDirectoryQueryPropertyValue::GetName(char * *aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute wstring value; */
NS_IMETHODIMP nsAbDirectoryQueryPropertyValue::GetValue(char16_t * *aValue)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsISupports valueISupports; */
NS_IMETHODIMP nsAbDirectoryQueryPropertyValue::GetValueISupports(nsISupports * *aValueISupports)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIAbDirectoryQueryResultListener */
#define NS_IABDIRECTORYQUERYRESULTLISTENER_IID_STR "516e7ffa-69bc-41db-a493-dfb4895832f3"

#define NS_IABDIRECTORYQUERYRESULTLISTENER_IID \
  {0x516e7ffa, 0x69bc, 0x41db, \
    { 0xa4, 0x93, 0xdf, 0xb4, 0x89, 0x58, 0x32, 0xf3 }}

class NS_NO_VTABLE nsIAbDirectoryQueryResultListener : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IABDIRECTORYQUERYRESULTLISTENER_IID)

  /* void onQueryFoundCard (in nsIAbCard aCard); */
  NS_IMETHOD OnQueryFoundCard(nsIAbCard *aCard) = 0;

  enum {
    queryResultMatch = 0,
    queryResultComplete = 1,
    queryResultStopped = 2,
    queryResultError = 3
  };

  /* void onQueryResult (in long aResult, in long aErrorCode); */
  NS_IMETHOD OnQueryResult(int32_t aResult, int32_t aErrorCode) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAbDirectoryQueryResultListener, NS_IABDIRECTORYQUERYRESULTLISTENER_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIABDIRECTORYQUERYRESULTLISTENER \
  NS_IMETHOD OnQueryFoundCard(nsIAbCard *aCard) override; \
  NS_IMETHOD OnQueryResult(int32_t aResult, int32_t aErrorCode) 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_NSIABDIRECTORYQUERYRESULTLISTENER \
  NS_METHOD OnQueryFoundCard(nsIAbCard *aCard); \
  NS_METHOD OnQueryResult(int32_t aResult, int32_t aErrorCode); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIABDIRECTORYQUERYRESULTLISTENER(_to) \
  NS_IMETHOD OnQueryFoundCard(nsIAbCard *aCard) override { return _to OnQueryFoundCard(aCard); } \
  NS_IMETHOD OnQueryResult(int32_t aResult, int32_t aErrorCode) override { return _to OnQueryResult(aResult, aErrorCode); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIABDIRECTORYQUERYRESULTLISTENER(_to) \
  NS_IMETHOD OnQueryFoundCard(nsIAbCard *aCard) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnQueryFoundCard(aCard); } \
  NS_IMETHOD OnQueryResult(int32_t aResult, int32_t aErrorCode) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OnQueryResult(aResult, aErrorCode); } 

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

/* Header file */
class nsAbDirectoryQueryResultListener : public nsIAbDirectoryQueryResultListener
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIABDIRECTORYQUERYRESULTLISTENER

  nsAbDirectoryQueryResultListener();

private:
  ~nsAbDirectoryQueryResultListener();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsAbDirectoryQueryResultListener, nsIAbDirectoryQueryResultListener)

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

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

/* void onQueryFoundCard (in nsIAbCard aCard); */
NS_IMETHODIMP nsAbDirectoryQueryResultListener::OnQueryFoundCard(nsIAbCard *aCard)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onQueryResult (in long aResult, in long aErrorCode); */
NS_IMETHODIMP nsAbDirectoryQueryResultListener::OnQueryResult(int32_t aResult, int32_t aErrorCode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIAbDirectoryQuery */
#define NS_IABDIRECTORYQUERY_IID_STR "60b5961c-ce61-47b3-aa99-6d865f734dee"

#define NS_IABDIRECTORYQUERY_IID \
  {0x60b5961c, 0xce61, 0x47b3, \
    { 0xaa, 0x99, 0x6d, 0x86, 0x5f, 0x73, 0x4d, 0xee }}

class NS_NO_VTABLE nsIAbDirectoryQuery : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IABDIRECTORYQUERY_IID)

  /* long doQuery (in nsIAbDirectory aDirectory, in nsIAbDirectoryQueryArguments aArguments, in nsIAbDirSearchListener aListener, in long aResultLimit, in long aTimeOut); */
  NS_IMETHOD DoQuery(nsIAbDirectory *aDirectory, nsIAbDirectoryQueryArguments *aArguments, nsIAbDirSearchListener *aListener, int32_t aResultLimit, int32_t aTimeOut, int32_t *_retval) = 0;

  /* void stopQuery (in long contextID); */
  NS_IMETHOD StopQuery(int32_t contextID) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIAbDirectoryQuery, NS_IABDIRECTORYQUERY_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIABDIRECTORYQUERY \
  NS_IMETHOD DoQuery(nsIAbDirectory *aDirectory, nsIAbDirectoryQueryArguments *aArguments, nsIAbDirSearchListener *aListener, int32_t aResultLimit, int32_t aTimeOut, int32_t *_retval) override; \
  NS_IMETHOD StopQuery(int32_t contextID) 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_NSIABDIRECTORYQUERY \
  NS_METHOD DoQuery(nsIAbDirectory *aDirectory, nsIAbDirectoryQueryArguments *aArguments, nsIAbDirSearchListener *aListener, int32_t aResultLimit, int32_t aTimeOut, int32_t *_retval); \
  NS_METHOD StopQuery(int32_t contextID); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIABDIRECTORYQUERY(_to) \
  NS_IMETHOD DoQuery(nsIAbDirectory *aDirectory, nsIAbDirectoryQueryArguments *aArguments, nsIAbDirSearchListener *aListener, int32_t aResultLimit, int32_t aTimeOut, int32_t *_retval) override { return _to DoQuery(aDirectory, aArguments, aListener, aResultLimit, aTimeOut, _retval); } \
  NS_IMETHOD StopQuery(int32_t contextID) override { return _to StopQuery(contextID); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIABDIRECTORYQUERY(_to) \
  NS_IMETHOD DoQuery(nsIAbDirectory *aDirectory, nsIAbDirectoryQueryArguments *aArguments, nsIAbDirSearchListener *aListener, int32_t aResultLimit, int32_t aTimeOut, int32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DoQuery(aDirectory, aArguments, aListener, aResultLimit, aTimeOut, _retval); } \
  NS_IMETHOD StopQuery(int32_t contextID) override { return !_to ? NS_ERROR_NULL_POINTER : _to->StopQuery(contextID); } 

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

/* Header file */
class nsAbDirectoryQuery : public nsIAbDirectoryQuery
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIABDIRECTORYQUERY

  nsAbDirectoryQuery();

private:
  ~nsAbDirectoryQuery();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsAbDirectoryQuery, nsIAbDirectoryQuery)

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

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

/* long doQuery (in nsIAbDirectory aDirectory, in nsIAbDirectoryQueryArguments aArguments, in nsIAbDirSearchListener aListener, in long aResultLimit, in long aTimeOut); */
NS_IMETHODIMP nsAbDirectoryQuery::DoQuery(nsIAbDirectory *aDirectory, nsIAbDirectoryQueryArguments *aArguments, nsIAbDirSearchListener *aListener, int32_t aResultLimit, int32_t aTimeOut, int32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void stopQuery (in long contextID); */
NS_IMETHODIMP nsAbDirectoryQuery::StopQuery(int32_t contextID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIAbDirectoryQuery_h__ */
