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

#ifndef __gen_flockIBuildDetails_h__
#define __gen_flockIBuildDetails_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:    flockIBuildDetails */
#define FLOCKIBUILDDETAILS_IID_STR "07e36bd4-782a-4518-8c82-9c4be5d047a2"

#define FLOCKIBUILDDETAILS_IID \
  {0x07e36bd4, 0x782a, 0x4518, \
    { 0x8c, 0x82, 0x9c, 0x4b, 0xe5, 0xd0, 0x47, 0xa2 }}

/**
 * This interface provides some identifying information of the current build. 
 * For a debug build, only the debugBuild attribute is valid, the rest are
 * undefined.
 */
class NS_NO_VTABLE NS_SCRIPTABLE flockIBuildDetails : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(FLOCKIBUILDDETAILS_IID)

  /**
   * The build ID of this build (epoch timestamp.scmID).
   */
  /* readonly attribute ACString buildID; */
  NS_SCRIPTABLE NS_IMETHOD GetBuildID(nsACString & aBuildID) = 0;

  /**
   * Indicates if the build is a debug build or not.
   */
  /* readonly attribute boolean debugBuild; */
  NS_SCRIPTABLE NS_IMETHOD GetDebugBuild(PRBool *aDebugBuild) = 0;

  /**
   * The timestamp of this build.
   */
  /* readonly attribute PRTime timestamp; */
  NS_SCRIPTABLE NS_IMETHOD GetTimestamp(PRTime *aTimestamp) = 0;

  /**
   * The SCM identifier associated with this build. This maybe "unknown"
   * if the app was not built directly from a SCM checkout.
   */
  /* readonly attribute ACString scmID; */
  NS_SCRIPTABLE NS_IMETHOD GetScmID(nsACString & aScmID) = 0;

  /**
   * The version of Firefox this build is based upon.
   */
  /* readonly attribute ACString baseFirefoxVersion; */
  NS_SCRIPTABLE NS_IMETHOD GetBaseFirefoxVersion(nsACString & aBaseFirefoxVersion) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(flockIBuildDetails, FLOCKIBUILDDETAILS_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_FLOCKIBUILDDETAILS \
  NS_SCRIPTABLE NS_IMETHOD GetBuildID(nsACString & aBuildID); \
  NS_SCRIPTABLE NS_IMETHOD GetDebugBuild(PRBool *aDebugBuild); \
  NS_SCRIPTABLE NS_IMETHOD GetTimestamp(PRTime *aTimestamp); \
  NS_SCRIPTABLE NS_IMETHOD GetScmID(nsACString & aScmID); \
  NS_SCRIPTABLE NS_IMETHOD GetBaseFirefoxVersion(nsACString & aBaseFirefoxVersion); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_FLOCKIBUILDDETAILS(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetBuildID(nsACString & aBuildID) { return _to GetBuildID(aBuildID); } \
  NS_SCRIPTABLE NS_IMETHOD GetDebugBuild(PRBool *aDebugBuild) { return _to GetDebugBuild(aDebugBuild); } \
  NS_SCRIPTABLE NS_IMETHOD GetTimestamp(PRTime *aTimestamp) { return _to GetTimestamp(aTimestamp); } \
  NS_SCRIPTABLE NS_IMETHOD GetScmID(nsACString & aScmID) { return _to GetScmID(aScmID); } \
  NS_SCRIPTABLE NS_IMETHOD GetBaseFirefoxVersion(nsACString & aBaseFirefoxVersion) { return _to GetBaseFirefoxVersion(aBaseFirefoxVersion); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_FLOCKIBUILDDETAILS(_to) \
  NS_SCRIPTABLE NS_IMETHOD GetBuildID(nsACString & aBuildID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBuildID(aBuildID); } \
  NS_SCRIPTABLE NS_IMETHOD GetDebugBuild(PRBool *aDebugBuild) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDebugBuild(aDebugBuild); } \
  NS_SCRIPTABLE NS_IMETHOD GetTimestamp(PRTime *aTimestamp) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTimestamp(aTimestamp); } \
  NS_SCRIPTABLE NS_IMETHOD GetScmID(nsACString & aScmID) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetScmID(aScmID); } \
  NS_SCRIPTABLE NS_IMETHOD GetBaseFirefoxVersion(nsACString & aBaseFirefoxVersion) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBaseFirefoxVersion(aBaseFirefoxVersion); } 

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

/* Header file */
class _MYCLASS_ : public flockIBuildDetails
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_FLOCKIBUILDDETAILS

  _MYCLASS_();

private:
  ~_MYCLASS_();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(_MYCLASS_, flockIBuildDetails)

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

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

/* readonly attribute ACString buildID; */
NS_IMETHODIMP _MYCLASS_::GetBuildID(nsACString & aBuildID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean debugBuild; */
NS_IMETHODIMP _MYCLASS_::GetDebugBuild(PRBool *aDebugBuild)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute PRTime timestamp; */
NS_IMETHODIMP _MYCLASS_::GetTimestamp(PRTime *aTimestamp)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString scmID; */
NS_IMETHODIMP _MYCLASS_::GetScmID(nsACString & aScmID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString baseFirefoxVersion; */
NS_IMETHODIMP _MYCLASS_::GetBaseFirefoxVersion(nsACString & aBaseFirefoxVersion)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_flockIBuildDetails_h__ */
