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

#ifndef __gen_nsIURLParser_h__
#define __gen_nsIURLParser_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

/* starting interface:    nsIURLParser */
#define NS_IURLPARSER_IID_STR "4b4975f9-f128-47fd-b11e-88402233cbdf"

#define NS_IURLPARSER_IID \
  {0x4b4975f9, 0xf128, 0x47fd, \
    { 0xb1, 0x1e, 0x88, 0x40, 0x22, 0x33, 0xcb, 0xdf }}

/**
 * nsIURLParser is the abstract base class for parsing URLs
 */
class NS_NO_VTABLE nsIURLParser : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IURLPARSER_IID)

  /**
     * Parses a URL and thinks it is parsing the scheme
     */
  /* void ParseAtScheme (in string i_Spec, out string o_Scheme, out string o_Username, out string o_Password, out string o_Host, out long o_Port, out string o_Path); */
  NS_IMETHOD ParseAtScheme(const char *i_Spec, char **o_Scheme, char **o_Username, char **o_Password, char **o_Host, PRInt32 *o_Port, char **o_Path) = 0;

  /**
     * Parses a URL and thinks it is parsing the prehost
     */
  /* void ParseAtPreHost (in string i_Spec, out string o_Username, out string o_Password, out string o_Host, out long o_Port, out string o_Path); */
  NS_IMETHOD ParseAtPreHost(const char *i_Spec, char **o_Username, char **o_Password, char **o_Host, PRInt32 *o_Port, char **o_Path) = 0;

  /**
     * Parses a URL and thinks it is parsing the host
     */
  /* void ParseAtHost (in string i_Spec, out string o_Host, out long o_Port, out string o_Path); */
  NS_IMETHOD ParseAtHost(const char *i_Spec, char **o_Host, PRInt32 *o_Port, char **o_Path) = 0;

  /**
     * Parses a URL and thinks it is parsing the port
     */
  /* void ParseAtPort (in string i_Spec, out long o_Port, out string o_Path); */
  NS_IMETHOD ParseAtPort(const char *i_Spec, PRInt32 *o_Port, char **o_Path) = 0;

  /**
     * Parses a URL and thinks it is parsing the path
     */
  /* void ParseAtPath (in string i_Spec, out string o_Path); */
  NS_IMETHOD ParseAtPath(const char *i_Spec, char **o_Path) = 0;

  /**
     * Parses a URL-path and thinks it is parsing the directory
     */
  /* void ParseAtDirectory (in string i_Path, out string o_Directory, out string o_FileBaseName, out string o_FileExtension, out string o_Param, out string o_Query, out string o_Ref); */
  NS_IMETHOD ParseAtDirectory(const char *i_Path, char **o_Directory, char **o_FileBaseName, char **o_FileExtension, char **o_Param, char **o_Query, char **o_Ref) = 0;

  /**
     * Parses the URL-PreHost into its components
     */
  /* void ParsePreHost (in string i_PreHost, out string o_Username, out string o_Password); */
  NS_IMETHOD ParsePreHost(const char *i_PreHost, char **o_Username, char **o_Password) = 0;

  /**
     * Parses the URL-Filename into its components
     */
  /* void ParseFileName (in string i_FileName, out string o_FileBaseName, out string o_FileExtension); */
  NS_IMETHOD ParseFileName(const char *i_FileName, char **o_FileBaseName, char **o_FileExtension) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIURLPARSER \
  NS_IMETHOD ParseAtScheme(const char *i_Spec, char **o_Scheme, char **o_Username, char **o_Password, char **o_Host, PRInt32 *o_Port, char **o_Path); \
  NS_IMETHOD ParseAtPreHost(const char *i_Spec, char **o_Username, char **o_Password, char **o_Host, PRInt32 *o_Port, char **o_Path); \
  NS_IMETHOD ParseAtHost(const char *i_Spec, char **o_Host, PRInt32 *o_Port, char **o_Path); \
  NS_IMETHOD ParseAtPort(const char *i_Spec, PRInt32 *o_Port, char **o_Path); \
  NS_IMETHOD ParseAtPath(const char *i_Spec, char **o_Path); \
  NS_IMETHOD ParseAtDirectory(const char *i_Path, char **o_Directory, char **o_FileBaseName, char **o_FileExtension, char **o_Param, char **o_Query, char **o_Ref); \
  NS_IMETHOD ParsePreHost(const char *i_PreHost, char **o_Username, char **o_Password); \
  NS_IMETHOD ParseFileName(const char *i_FileName, char **o_FileBaseName, char **o_FileExtension); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIURLPARSER(_to) \
  NS_IMETHOD ParseAtScheme(const char *i_Spec, char **o_Scheme, char **o_Username, char **o_Password, char **o_Host, PRInt32 *o_Port, char **o_Path) { return _to ## ParseAtScheme(i_Spec, o_Scheme, o_Username, o_Password, o_Host, o_Port, o_Path); } \
  NS_IMETHOD ParseAtPreHost(const char *i_Spec, char **o_Username, char **o_Password, char **o_Host, PRInt32 *o_Port, char **o_Path) { return _to ## ParseAtPreHost(i_Spec, o_Username, o_Password, o_Host, o_Port, o_Path); } \
  NS_IMETHOD ParseAtHost(const char *i_Spec, char **o_Host, PRInt32 *o_Port, char **o_Path) { return _to ## ParseAtHost(i_Spec, o_Host, o_Port, o_Path); } \
  NS_IMETHOD ParseAtPort(const char *i_Spec, PRInt32 *o_Port, char **o_Path) { return _to ## ParseAtPort(i_Spec, o_Port, o_Path); } \
  NS_IMETHOD ParseAtPath(const char *i_Spec, char **o_Path) { return _to ## ParseAtPath(i_Spec, o_Path); } \
  NS_IMETHOD ParseAtDirectory(const char *i_Path, char **o_Directory, char **o_FileBaseName, char **o_FileExtension, char **o_Param, char **o_Query, char **o_Ref) { return _to ## ParseAtDirectory(i_Path, o_Directory, o_FileBaseName, o_FileExtension, o_Param, o_Query, o_Ref); } \
  NS_IMETHOD ParsePreHost(const char *i_PreHost, char **o_Username, char **o_Password) { return _to ## ParsePreHost(i_PreHost, o_Username, o_Password); } \
  NS_IMETHOD ParseFileName(const char *i_FileName, char **o_FileBaseName, char **o_FileExtension) { return _to ## ParseFileName(i_FileName, o_FileBaseName, o_FileExtension); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIURLPARSER(_to) \
  NS_IMETHOD ParseAtScheme(const char *i_Spec, char **o_Scheme, char **o_Username, char **o_Password, char **o_Host, PRInt32 *o_Port, char **o_Path) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ParseAtScheme(i_Spec, o_Scheme, o_Username, o_Password, o_Host, o_Port, o_Path); } \
  NS_IMETHOD ParseAtPreHost(const char *i_Spec, char **o_Username, char **o_Password, char **o_Host, PRInt32 *o_Port, char **o_Path) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ParseAtPreHost(i_Spec, o_Username, o_Password, o_Host, o_Port, o_Path); } \
  NS_IMETHOD ParseAtHost(const char *i_Spec, char **o_Host, PRInt32 *o_Port, char **o_Path) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ParseAtHost(i_Spec, o_Host, o_Port, o_Path); } \
  NS_IMETHOD ParseAtPort(const char *i_Spec, PRInt32 *o_Port, char **o_Path) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ParseAtPort(i_Spec, o_Port, o_Path); } \
  NS_IMETHOD ParseAtPath(const char *i_Spec, char **o_Path) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ParseAtPath(i_Spec, o_Path); } \
  NS_IMETHOD ParseAtDirectory(const char *i_Path, char **o_Directory, char **o_FileBaseName, char **o_FileExtension, char **o_Param, char **o_Query, char **o_Ref) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ParseAtDirectory(i_Path, o_Directory, o_FileBaseName, o_FileExtension, o_Param, o_Query, o_Ref); } \
  NS_IMETHOD ParsePreHost(const char *i_PreHost, char **o_Username, char **o_Password) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ParsePreHost(i_PreHost, o_Username, o_Password); } \
  NS_IMETHOD ParseFileName(const char *i_FileName, char **o_FileBaseName, char **o_FileExtension) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ParseFileName(i_FileName, o_FileBaseName, o_FileExtension); } 

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

/* Header file */
class nsURLParser : public nsIURLParser
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIURLPARSER

  nsURLParser();
  virtual ~nsURLParser();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsURLParser, nsIURLParser)

nsURLParser::nsURLParser()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

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

/* void ParseAtScheme (in string i_Spec, out string o_Scheme, out string o_Username, out string o_Password, out string o_Host, out long o_Port, out string o_Path); */
NS_IMETHODIMP nsURLParser::ParseAtScheme(const char *i_Spec, char **o_Scheme, char **o_Username, char **o_Password, char **o_Host, PRInt32 *o_Port, char **o_Path)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ParseAtPreHost (in string i_Spec, out string o_Username, out string o_Password, out string o_Host, out long o_Port, out string o_Path); */
NS_IMETHODIMP nsURLParser::ParseAtPreHost(const char *i_Spec, char **o_Username, char **o_Password, char **o_Host, PRInt32 *o_Port, char **o_Path)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ParseAtHost (in string i_Spec, out string o_Host, out long o_Port, out string o_Path); */
NS_IMETHODIMP nsURLParser::ParseAtHost(const char *i_Spec, char **o_Host, PRInt32 *o_Port, char **o_Path)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ParseAtPort (in string i_Spec, out long o_Port, out string o_Path); */
NS_IMETHODIMP nsURLParser::ParseAtPort(const char *i_Spec, PRInt32 *o_Port, char **o_Path)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ParseAtPath (in string i_Spec, out string o_Path); */
NS_IMETHODIMP nsURLParser::ParseAtPath(const char *i_Spec, char **o_Path)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ParseAtDirectory (in string i_Path, out string o_Directory, out string o_FileBaseName, out string o_FileExtension, out string o_Param, out string o_Query, out string o_Ref); */
NS_IMETHODIMP nsURLParser::ParseAtDirectory(const char *i_Path, char **o_Directory, char **o_FileBaseName, char **o_FileExtension, char **o_Param, char **o_Query, char **o_Ref)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ParsePreHost (in string i_PreHost, out string o_Username, out string o_Password); */
NS_IMETHODIMP nsURLParser::ParsePreHost(const char *i_PreHost, char **o_Username, char **o_Password)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void ParseFileName (in string i_FileName, out string o_FileBaseName, out string o_FileExtension); */
NS_IMETHODIMP nsURLParser::ParseFileName(const char *i_FileName, char **o_FileBaseName, char **o_FileExtension)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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

#define NS_STANDARDURLPARSER_CID                     \
{ /* dbf72351-4fd8-46f0-9dbc-fa5ba60a30c5 */         \
    0xdbf72351,                                      \
    0x4fd8,                                          \
    0x46f0,                                          \
    {0x9d, 0xbc, 0xfa, 0x5b, 0xa6, 0x0a, 0x30, 0x5c} \
}
#define NS_AUTHORITYURLPARSER_CID                    \
{ /* 90012125-1616-4fa1-ae14-4e7fa5766eb6 */         \
    0x90012125,                                      \
    0x1616,                                          \
    0x4fa1,                                          \
    {0xae, 0x14, 0x4e, 0x7f, 0xa5, 0x76, 0x6e, 0xb6} \
}
#define NS_NOAUTHORITYURLPARSER_CID                  \
{ /* 9eeb1b89-c87e-4404-9de6-dbd41aeaf3d7 */         \
    0x9eeb1b89,                                      \
    0xc87e,                                          \
    0x4404,                                          \
    {0x9d, 0xe6, 0xdb, 0xd4, 0x1a, 0xea, 0xf3, 0xd7} \
}

#endif /* __gen_nsIURLParser_h__ */
