DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Untracked file

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537
/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM /home/jenkins/src/releases/comm-beta/mozilla/xpcom/io/nsIFile.idl
 */

#ifndef __gen_nsIFile_h__
#define __gen_nsIFile_h__


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

#ifndef __gen_nsIDirectoryEnumerator_h__
#include "nsIDirectoryEnumerator.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
struct PRFileDesc;
struct PRLibrary;
#include <stdio.h>
#include "mozilla/Path.h"
#include "nsCOMPtr.h"
#include "nsStringFwd.h"
namespace mozilla {
using PathString = nsTString<filesystem::Path::value_type>;
using PathSubstring = nsTSubstring<filesystem::Path::value_type>;
} // namespace mozilla

/* starting interface:    nsIFile */
#define NS_IFILE_IID_STR "2fa6884a-ae65-412a-9d4c-ce6e34544ba1"

#define NS_IFILE_IID \
  {0x2fa6884a, 0xae65, 0x412a, \
    { 0x9d, 0x4c, 0xce, 0x6e, 0x34, 0x54, 0x4b, 0xa1 }}

class nsIFile : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IFILE_IID)

  enum {
    NORMAL_FILE_TYPE = 0U,
    DIRECTORY_TYPE = 1U
  };

  /* void append (in AString node); */
  NS_IMETHOD Append(const nsAString& node) = 0;

  /* [noscript] void appendNative (in ACString node); */
  NS_IMETHOD AppendNative(const nsACString& node) = 0;

  /* void normalize (); */
  NS_IMETHOD Normalize(void) = 0;

  /* [must_use] void create (in unsigned long type, in unsigned long permissions); */
  MOZ_MUST_USE NS_IMETHOD Create(uint32_t type, uint32_t permissions) = 0;

  /* attribute AString leafName; */
  NS_IMETHOD GetLeafName(nsAString& aLeafName) = 0;
  NS_IMETHOD SetLeafName(const nsAString& aLeafName) = 0;

  /* [noscript] attribute ACString nativeLeafName; */
  NS_IMETHOD GetNativeLeafName(nsACString& aNativeLeafName) = 0;
  NS_IMETHOD SetNativeLeafName(const nsACString& aNativeLeafName) = 0;

  /* void copyTo (in nsIFile newParentDir, in AString newName); */
  NS_IMETHOD CopyTo(nsIFile *newParentDir, const nsAString& newName) = 0;

  /* [noscript] void CopyToNative (in nsIFile newParentDir, in ACString newName); */
  NS_IMETHOD CopyToNative(nsIFile *newParentDir, const nsACString& newName) = 0;

  /* void copyToFollowingLinks (in nsIFile newParentDir, in AString newName); */
  NS_IMETHOD CopyToFollowingLinks(nsIFile *newParentDir, const nsAString& newName) = 0;

  /* [noscript] void copyToFollowingLinksNative (in nsIFile newParentDir, in ACString newName); */
  NS_IMETHOD CopyToFollowingLinksNative(nsIFile *newParentDir, const nsACString& newName) = 0;

  /* void moveTo (in nsIFile newParentDir, in AString newName); */
  NS_IMETHOD MoveTo(nsIFile *newParentDir, const nsAString& newName) = 0;

  /* [noscript] void moveToNative (in nsIFile newParentDir, in ACString newName); */
  NS_IMETHOD MoveToNative(nsIFile *newParentDir, const nsACString& newName) = 0;

  /* void renameTo (in nsIFile newParentDir, in AString newName); */
  NS_IMETHOD RenameTo(nsIFile *newParentDir, const nsAString& newName) = 0;

  /* [noscript] void renameToNative (in nsIFile newParentDir, in ACString newName); */
  NS_IMETHOD RenameToNative(nsIFile *newParentDir, const nsACString& newName) = 0;

  /* void remove (in boolean recursive); */
  NS_IMETHOD Remove(bool recursive) = 0;

  /* attribute unsigned long permissions; */
  NS_IMETHOD GetPermissions(uint32_t *aPermissions) = 0;
  NS_IMETHOD SetPermissions(uint32_t aPermissions) = 0;

  /* attribute unsigned long permissionsOfLink; */
  NS_IMETHOD GetPermissionsOfLink(uint32_t *aPermissionsOfLink) = 0;
  NS_IMETHOD SetPermissionsOfLink(uint32_t aPermissionsOfLink) = 0;

  /* attribute PRTime lastModifiedTime; */
  NS_IMETHOD GetLastModifiedTime(PRTime *aLastModifiedTime) = 0;
  NS_IMETHOD SetLastModifiedTime(PRTime aLastModifiedTime) = 0;

  /* attribute PRTime lastModifiedTimeOfLink; */
  NS_IMETHOD GetLastModifiedTimeOfLink(PRTime *aLastModifiedTimeOfLink) = 0;
  NS_IMETHOD SetLastModifiedTimeOfLink(PRTime aLastModifiedTimeOfLink) = 0;

  /* attribute int64_t fileSize; */
  NS_IMETHOD GetFileSize(int64_t *aFileSize) = 0;
  NS_IMETHOD SetFileSize(int64_t aFileSize) = 0;

  /* readonly attribute int64_t fileSizeOfLink; */
  NS_IMETHOD GetFileSizeOfLink(int64_t *aFileSizeOfLink) = 0;

  /* readonly attribute AString target; */
  NS_IMETHOD GetTarget(nsAString& aTarget) = 0;

  /* [noscript] readonly attribute ACString nativeTarget; */
  NS_IMETHOD GetNativeTarget(nsACString& aNativeTarget) = 0;

  /* readonly attribute AString path; */
  NS_IMETHOD GetPath(nsAString& aPath) = 0;

  /* [must_use,nostdcall,notxpcom] PathString nativePath (); */
  MOZ_MUST_USE virtual mozilla::PathString NativePath(void) = 0;

 #ifndef XP_WIN
    nsresult GetNativePath(nsACString& aPath);
#endif
    /*
     * Returns a human-readable path string.
     */
    nsCString HumanReadablePath();
  /* boolean exists (); */
  NS_IMETHOD Exists(bool *_retval) = 0;

  /* boolean isWritable (); */
  NS_IMETHOD IsWritable(bool *_retval) = 0;

  /* boolean isReadable (); */
  NS_IMETHOD IsReadable(bool *_retval) = 0;

  /* boolean isExecutable (); */
  NS_IMETHOD IsExecutable(bool *_retval) = 0;

  /* boolean isHidden (); */
  NS_IMETHOD IsHidden(bool *_retval) = 0;

  /* boolean isDirectory (); */
  NS_IMETHOD IsDirectory(bool *_retval) = 0;

  /* boolean isFile (); */
  NS_IMETHOD IsFile(bool *_retval) = 0;

  /* boolean isSymlink (); */
  NS_IMETHOD IsSymlink(bool *_retval) = 0;

  /* boolean isSpecial (); */
  NS_IMETHOD IsSpecial(bool *_retval) = 0;

  /* [must_use] void createUnique (in unsigned long type, in unsigned long permissions); */
  MOZ_MUST_USE NS_IMETHOD CreateUnique(uint32_t type, uint32_t permissions) = 0;

  /* nsIFile clone (); */
  NS_IMETHOD Clone(nsIFile **_retval) = 0;

  /* boolean equals (in nsIFile inFile); */
  NS_IMETHOD Equals(nsIFile *inFile, bool *_retval) = 0;

  /* boolean contains (in nsIFile inFile); */
  NS_IMETHOD Contains(nsIFile *inFile, bool *_retval) = 0;

  /* readonly attribute nsIFile parent; */
  NS_IMETHOD GetParent(nsIFile **aParent) = 0;

  /* [binaryname(DirectoryEntriesImpl)] readonly attribute nsIDirectoryEnumerator directoryEntries; */
  NS_IMETHOD GetDirectoryEntriesImpl(nsIDirectoryEnumerator **aDirectoryEntries) = 0;

     nsresult GetDirectoryEntries(nsISimpleEnumerator** aOut)
    {
      nsCOMPtr<nsIDirectoryEnumerator> dirEnum;
      nsresult rv = GetDirectoryEntries(getter_AddRefs(dirEnum));
      dirEnum.forget(aOut);
      return rv;
    };
    nsresult GetDirectoryEntries(nsIDirectoryEnumerator** aOut)
    {
      return GetDirectoryEntriesImpl(aOut);
    };
      /* void initWithPath (in AString filePath); */
  NS_IMETHOD InitWithPath(const nsAString& filePath) = 0;

  /* [noscript] void initWithNativePath (in ACString filePath); */
  NS_IMETHOD InitWithNativePath(const nsACString& filePath) = 0;

  /* void initWithFile (in nsIFile aFile); */
  NS_IMETHOD InitWithFile(nsIFile *aFile) = 0;

  /* attribute boolean followLinks; */
  NS_IMETHOD GetFollowLinks(bool *aFollowLinks) = 0;
  NS_IMETHOD SetFollowLinks(bool aFollowLinks) = 0;

  enum {
    OS_READAHEAD = 1073741824U,
    DELETE_ON_CLOSE = 2147483648U
  };

  /* [must_use,noscript] PRFileDescStar openNSPRFileDesc (in long flags, in long mode); */
  MOZ_MUST_USE NS_IMETHOD OpenNSPRFileDesc(int32_t flags, int32_t mode, PRFileDesc * * _retval) = 0;

  /* [must_use,noscript] FILE openANSIFileDesc (in string mode); */
  MOZ_MUST_USE NS_IMETHOD OpenANSIFileDesc(const char * mode, FILE * * _retval) = 0;

  /* [must_use,noscript] PRLibraryStar load (); */
  MOZ_MUST_USE NS_IMETHOD Load(PRLibrary * * _retval) = 0;

  /* [must_use] readonly attribute int64_t diskSpaceAvailable; */
  MOZ_MUST_USE NS_IMETHOD GetDiskSpaceAvailable(int64_t *aDiskSpaceAvailable) = 0;

  /* void appendRelativePath (in AString relativeFilePath); */
  NS_IMETHOD AppendRelativePath(const nsAString& relativeFilePath) = 0;

  /* [noscript] void appendRelativeNativePath (in ACString relativeFilePath); */
  NS_IMETHOD AppendRelativeNativePath(const nsACString& relativeFilePath) = 0;

  /* [must_use] attribute ACString persistentDescriptor; */
  MOZ_MUST_USE NS_IMETHOD GetPersistentDescriptor(nsACString& aPersistentDescriptor) = 0;
  MOZ_MUST_USE NS_IMETHOD SetPersistentDescriptor(const nsACString& aPersistentDescriptor) = 0;

  /* [must_use] void reveal (); */
  MOZ_MUST_USE NS_IMETHOD Reveal(void) = 0;

  /* [must_use] void launch (); */
  MOZ_MUST_USE NS_IMETHOD Launch(void) = 0;

  /* [must_use] ACString getRelativeDescriptor (in nsIFile fromFile); */
  MOZ_MUST_USE NS_IMETHOD GetRelativeDescriptor(nsIFile *fromFile, nsACString& _retval) = 0;

  /* [must_use] void setRelativeDescriptor (in nsIFile fromFile, in ACString relativeDesc); */
  MOZ_MUST_USE NS_IMETHOD SetRelativeDescriptor(nsIFile *fromFile, const nsACString& relativeDesc) = 0;

  /* [must_use] AUTF8String getRelativePath (in nsIFile fromFile); */
  MOZ_MUST_USE NS_IMETHOD GetRelativePath(nsIFile *fromFile, nsACString& _retval) = 0;

  /* [must_use] void setRelativePath (in nsIFile fromFile, in AUTF8String relativeDesc); */
  MOZ_MUST_USE NS_IMETHOD SetRelativePath(nsIFile *fromFile, const nsACString& relativeDesc) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIFile, NS_IFILE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIFILE \
  NS_IMETHOD Append(const nsAString& node) override; \
  NS_IMETHOD AppendNative(const nsACString& node) override; \
  NS_IMETHOD Normalize(void) override; \
  MOZ_MUST_USE NS_IMETHOD Create(uint32_t type, uint32_t permissions) override; \
  NS_IMETHOD GetLeafName(nsAString& aLeafName) override; \
  NS_IMETHOD SetLeafName(const nsAString& aLeafName) override; \
  NS_IMETHOD GetNativeLeafName(nsACString& aNativeLeafName) override; \
  NS_IMETHOD SetNativeLeafName(const nsACString& aNativeLeafName) override; \
  NS_IMETHOD CopyTo(nsIFile *newParentDir, const nsAString& newName) override; \
  NS_IMETHOD CopyToNative(nsIFile *newParentDir, const nsACString& newName) override; \
  NS_IMETHOD CopyToFollowingLinks(nsIFile *newParentDir, const nsAString& newName) override; \
  NS_IMETHOD CopyToFollowingLinksNative(nsIFile *newParentDir, const nsACString& newName) override; \
  NS_IMETHOD MoveTo(nsIFile *newParentDir, const nsAString& newName) override; \
  NS_IMETHOD MoveToNative(nsIFile *newParentDir, const nsACString& newName) override; \
  NS_IMETHOD RenameTo(nsIFile *newParentDir, const nsAString& newName) override; \
  NS_IMETHOD RenameToNative(nsIFile *newParentDir, const nsACString& newName) override; \
  NS_IMETHOD Remove(bool recursive) override; \
  NS_IMETHOD GetPermissions(uint32_t *aPermissions) override; \
  NS_IMETHOD SetPermissions(uint32_t aPermissions) override; \
  NS_IMETHOD GetPermissionsOfLink(uint32_t *aPermissionsOfLink) override; \
  NS_IMETHOD SetPermissionsOfLink(uint32_t aPermissionsOfLink) override; \
  NS_IMETHOD GetLastModifiedTime(PRTime *aLastModifiedTime) override; \
  NS_IMETHOD SetLastModifiedTime(PRTime aLastModifiedTime) override; \
  NS_IMETHOD GetLastModifiedTimeOfLink(PRTime *aLastModifiedTimeOfLink) override; \
  NS_IMETHOD SetLastModifiedTimeOfLink(PRTime aLastModifiedTimeOfLink) override; \
  NS_IMETHOD GetFileSize(int64_t *aFileSize) override; \
  NS_IMETHOD SetFileSize(int64_t aFileSize) override; \
  NS_IMETHOD GetFileSizeOfLink(int64_t *aFileSizeOfLink) override; \
  NS_IMETHOD GetTarget(nsAString& aTarget) override; \
  NS_IMETHOD GetNativeTarget(nsACString& aNativeTarget) override; \
  NS_IMETHOD GetPath(nsAString& aPath) override; \
  MOZ_MUST_USE virtual mozilla::PathString NativePath(void) override; \
  NS_IMETHOD Exists(bool *_retval) override; \
  NS_IMETHOD IsWritable(bool *_retval) override; \
  NS_IMETHOD IsReadable(bool *_retval) override; \
  NS_IMETHOD IsExecutable(bool *_retval) override; \
  NS_IMETHOD IsHidden(bool *_retval) override; \
  NS_IMETHOD IsDirectory(bool *_retval) override; \
  NS_IMETHOD IsFile(bool *_retval) override; \
  NS_IMETHOD IsSymlink(bool *_retval) override; \
  NS_IMETHOD IsSpecial(bool *_retval) override; \
  MOZ_MUST_USE NS_IMETHOD CreateUnique(uint32_t type, uint32_t permissions) override; \
  NS_IMETHOD Clone(nsIFile **_retval) override; \
  NS_IMETHOD Equals(nsIFile *inFile, bool *_retval) override; \
  NS_IMETHOD Contains(nsIFile *inFile, bool *_retval) override; \
  NS_IMETHOD GetParent(nsIFile **aParent) override; \
  NS_IMETHOD GetDirectoryEntriesImpl(nsIDirectoryEnumerator **aDirectoryEntries) override; \
  NS_IMETHOD InitWithPath(const nsAString& filePath) override; \
  NS_IMETHOD InitWithNativePath(const nsACString& filePath) override; \
  NS_IMETHOD InitWithFile(nsIFile *aFile) override; \
  NS_IMETHOD GetFollowLinks(bool *aFollowLinks) override; \
  NS_IMETHOD SetFollowLinks(bool aFollowLinks) override; \
  MOZ_MUST_USE NS_IMETHOD OpenNSPRFileDesc(int32_t flags, int32_t mode, PRFileDesc * * _retval) override; \
  MOZ_MUST_USE NS_IMETHOD OpenANSIFileDesc(const char * mode, FILE * * _retval) override; \
  MOZ_MUST_USE NS_IMETHOD Load(PRLibrary * * _retval) override; \
  MOZ_MUST_USE NS_IMETHOD GetDiskSpaceAvailable(int64_t *aDiskSpaceAvailable) override; \
  NS_IMETHOD AppendRelativePath(const nsAString& relativeFilePath) override; \
  NS_IMETHOD AppendRelativeNativePath(const nsACString& relativeFilePath) override; \
  MOZ_MUST_USE NS_IMETHOD GetPersistentDescriptor(nsACString& aPersistentDescriptor) override; \
  MOZ_MUST_USE NS_IMETHOD SetPersistentDescriptor(const nsACString& aPersistentDescriptor) override; \
  MOZ_MUST_USE NS_IMETHOD Reveal(void) override; \
  MOZ_MUST_USE NS_IMETHOD Launch(void) override; \
  MOZ_MUST_USE NS_IMETHOD GetRelativeDescriptor(nsIFile *fromFile, nsACString& _retval) override; \
  MOZ_MUST_USE NS_IMETHOD SetRelativeDescriptor(nsIFile *fromFile, const nsACString& relativeDesc) override; \
  MOZ_MUST_USE NS_IMETHOD GetRelativePath(nsIFile *fromFile, nsACString& _retval) override; \
  MOZ_MUST_USE NS_IMETHOD SetRelativePath(nsIFile *fromFile, const nsACString& relativeDesc) 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_NSIFILE \
  nsresult Append(const nsAString& node); \
  nsresult AppendNative(const nsACString& node); \
  nsresult Normalize(void); \
  MOZ_MUST_USE nsresult Create(uint32_t type, uint32_t permissions); \
  nsresult GetLeafName(nsAString& aLeafName); \
  nsresult SetLeafName(const nsAString& aLeafName); \
  nsresult GetNativeLeafName(nsACString& aNativeLeafName); \
  nsresult SetNativeLeafName(const nsACString& aNativeLeafName); \
  nsresult CopyTo(nsIFile *newParentDir, const nsAString& newName); \
  nsresult CopyToNative(nsIFile *newParentDir, const nsACString& newName); \
  nsresult CopyToFollowingLinks(nsIFile *newParentDir, const nsAString& newName); \
  nsresult CopyToFollowingLinksNative(nsIFile *newParentDir, const nsACString& newName); \
  nsresult MoveTo(nsIFile *newParentDir, const nsAString& newName); \
  nsresult MoveToNative(nsIFile *newParentDir, const nsACString& newName); \
  nsresult RenameTo(nsIFile *newParentDir, const nsAString& newName); \
  nsresult RenameToNative(nsIFile *newParentDir, const nsACString& newName); \
  nsresult Remove(bool recursive); \
  nsresult GetPermissions(uint32_t *aPermissions); \
  nsresult SetPermissions(uint32_t aPermissions); \
  nsresult GetPermissionsOfLink(uint32_t *aPermissionsOfLink); \
  nsresult SetPermissionsOfLink(uint32_t aPermissionsOfLink); \
  nsresult GetLastModifiedTime(PRTime *aLastModifiedTime); \
  nsresult SetLastModifiedTime(PRTime aLastModifiedTime); \
  nsresult GetLastModifiedTimeOfLink(PRTime *aLastModifiedTimeOfLink); \
  nsresult SetLastModifiedTimeOfLink(PRTime aLastModifiedTimeOfLink); \
  nsresult GetFileSize(int64_t *aFileSize); \
  nsresult SetFileSize(int64_t aFileSize); \
  nsresult GetFileSizeOfLink(int64_t *aFileSizeOfLink); \
  nsresult GetTarget(nsAString& aTarget); \
  nsresult GetNativeTarget(nsACString& aNativeTarget); \
  nsresult GetPath(nsAString& aPath); \
  MOZ_MUST_USE mozilla::PathString NativePath(void); \
  nsresult Exists(bool *_retval); \
  nsresult IsWritable(bool *_retval); \
  nsresult IsReadable(bool *_retval); \
  nsresult IsExecutable(bool *_retval); \
  nsresult IsHidden(bool *_retval); \
  nsresult IsDirectory(bool *_retval); \
  nsresult IsFile(bool *_retval); \
  nsresult IsSymlink(bool *_retval); \
  nsresult IsSpecial(bool *_retval); \
  MOZ_MUST_USE nsresult CreateUnique(uint32_t type, uint32_t permissions); \
  nsresult Clone(nsIFile **_retval); \
  nsresult Equals(nsIFile *inFile, bool *_retval); \
  nsresult Contains(nsIFile *inFile, bool *_retval); \
  nsresult GetParent(nsIFile **aParent); \
  nsresult GetDirectoryEntriesImpl(nsIDirectoryEnumerator **aDirectoryEntries); \
  nsresult InitWithPath(const nsAString& filePath); \
  nsresult InitWithNativePath(const nsACString& filePath); \
  nsresult InitWithFile(nsIFile *aFile); \
  nsresult GetFollowLinks(bool *aFollowLinks); \
  nsresult SetFollowLinks(bool aFollowLinks); \
  MOZ_MUST_USE nsresult OpenNSPRFileDesc(int32_t flags, int32_t mode, PRFileDesc * * _retval); \
  MOZ_MUST_USE nsresult OpenANSIFileDesc(const char * mode, FILE * * _retval); \
  MOZ_MUST_USE nsresult Load(PRLibrary * * _retval); \
  MOZ_MUST_USE nsresult GetDiskSpaceAvailable(int64_t *aDiskSpaceAvailable); \
  nsresult AppendRelativePath(const nsAString& relativeFilePath); \
  nsresult AppendRelativeNativePath(const nsACString& relativeFilePath); \
  MOZ_MUST_USE nsresult GetPersistentDescriptor(nsACString& aPersistentDescriptor); \
  MOZ_MUST_USE nsresult SetPersistentDescriptor(const nsACString& aPersistentDescriptor); \
  MOZ_MUST_USE nsresult Reveal(void); \
  MOZ_MUST_USE nsresult Launch(void); \
  MOZ_MUST_USE nsresult GetRelativeDescriptor(nsIFile *fromFile, nsACString& _retval); \
  MOZ_MUST_USE nsresult SetRelativeDescriptor(nsIFile *fromFile, const nsACString& relativeDesc); \
  MOZ_MUST_USE nsresult GetRelativePath(nsIFile *fromFile, nsACString& _retval); \
  MOZ_MUST_USE nsresult SetRelativePath(nsIFile *fromFile, const nsACString& relativeDesc); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIFILE(_to) \
  NS_IMETHOD Append(const nsAString& node) override { return _to Append(node); } \
  NS_IMETHOD AppendNative(const nsACString& node) override { return _to AppendNative(node); } \
  NS_IMETHOD Normalize(void) override { return _to Normalize(); } \
  MOZ_MUST_USE NS_IMETHOD Create(uint32_t type, uint32_t permissions) override { return _to Create(type, permissions); } \
  NS_IMETHOD GetLeafName(nsAString& aLeafName) override { return _to GetLeafName(aLeafName); } \
  NS_IMETHOD SetLeafName(const nsAString& aLeafName) override { return _to SetLeafName(aLeafName); } \
  NS_IMETHOD GetNativeLeafName(nsACString& aNativeLeafName) override { return _to GetNativeLeafName(aNativeLeafName); } \
  NS_IMETHOD SetNativeLeafName(const nsACString& aNativeLeafName) override { return _to SetNativeLeafName(aNativeLeafName); } \
  NS_IMETHOD CopyTo(nsIFile *newParentDir, const nsAString& newName) override { return _to CopyTo(newParentDir, newName); } \
  NS_IMETHOD CopyToNative(nsIFile *newParentDir, const nsACString& newName) override { return _to CopyToNative(newParentDir, newName); } \
  NS_IMETHOD CopyToFollowingLinks(nsIFile *newParentDir, const nsAString& newName) override { return _to CopyToFollowingLinks(newParentDir, newName); } \
  NS_IMETHOD CopyToFollowingLinksNative(nsIFile *newParentDir, const nsACString& newName) override { return _to CopyToFollowingLinksNative(newParentDir, newName); } \
  NS_IMETHOD MoveTo(nsIFile *newParentDir, const nsAString& newName) override { return _to MoveTo(newParentDir, newName); } \
  NS_IMETHOD MoveToNative(nsIFile *newParentDir, const nsACString& newName) override { return _to MoveToNative(newParentDir, newName); } \
  NS_IMETHOD RenameTo(nsIFile *newParentDir, const nsAString& newName) override { return _to RenameTo(newParentDir, newName); } \
  NS_IMETHOD RenameToNative(nsIFile *newParentDir, const nsACString& newName) override { return _to RenameToNative(newParentDir, newName); } \
  NS_IMETHOD Remove(bool recursive) override { return _to Remove(recursive); } \
  NS_IMETHOD GetPermissions(uint32_t *aPermissions) override { return _to GetPermissions(aPermissions); } \
  NS_IMETHOD SetPermissions(uint32_t aPermissions) override { return _to SetPermissions(aPermissions); } \
  NS_IMETHOD GetPermissionsOfLink(uint32_t *aPermissionsOfLink) override { return _to GetPermissionsOfLink(aPermissionsOfLink); } \
  NS_IMETHOD SetPermissionsOfLink(uint32_t aPermissionsOfLink) override { return _to SetPermissionsOfLink(aPermissionsOfLink); } \
  NS_IMETHOD GetLastModifiedTime(PRTime *aLastModifiedTime) override { return _to GetLastModifiedTime(aLastModifiedTime); } \
  NS_IMETHOD SetLastModifiedTime(PRTime aLastModifiedTime) override { return _to SetLastModifiedTime(aLastModifiedTime); } \
  NS_IMETHOD GetLastModifiedTimeOfLink(PRTime *aLastModifiedTimeOfLink) override { return _to GetLastModifiedTimeOfLink(aLastModifiedTimeOfLink); } \
  NS_IMETHOD SetLastModifiedTimeOfLink(PRTime aLastModifiedTimeOfLink) override { return _to SetLastModifiedTimeOfLink(aLastModifiedTimeOfLink); } \
  NS_IMETHOD GetFileSize(int64_t *aFileSize) override { return _to GetFileSize(aFileSize); } \
  NS_IMETHOD SetFileSize(int64_t aFileSize) override { return _to SetFileSize(aFileSize); } \
  NS_IMETHOD GetFileSizeOfLink(int64_t *aFileSizeOfLink) override { return _to GetFileSizeOfLink(aFileSizeOfLink); } \
  NS_IMETHOD GetTarget(nsAString& aTarget) override { return _to GetTarget(aTarget); } \
  NS_IMETHOD GetNativeTarget(nsACString& aNativeTarget) override { return _to GetNativeTarget(aNativeTarget); } \
  NS_IMETHOD GetPath(nsAString& aPath) override { return _to GetPath(aPath); } \
  MOZ_MUST_USE virtual mozilla::PathString NativePath(void) override { return _to NativePath(); } \
  NS_IMETHOD Exists(bool *_retval) override { return _to Exists(_retval); } \
  NS_IMETHOD IsWritable(bool *_retval) override { return _to IsWritable(_retval); } \
  NS_IMETHOD IsReadable(bool *_retval) override { return _to IsReadable(_retval); } \
  NS_IMETHOD IsExecutable(bool *_retval) override { return _to IsExecutable(_retval); } \
  NS_IMETHOD IsHidden(bool *_retval) override { return _to IsHidden(_retval); } \
  NS_IMETHOD IsDirectory(bool *_retval) override { return _to IsDirectory(_retval); } \
  NS_IMETHOD IsFile(bool *_retval) override { return _to IsFile(_retval); } \
  NS_IMETHOD IsSymlink(bool *_retval) override { return _to IsSymlink(_retval); } \
  NS_IMETHOD IsSpecial(bool *_retval) override { return _to IsSpecial(_retval); } \
  MOZ_MUST_USE NS_IMETHOD CreateUnique(uint32_t type, uint32_t permissions) override { return _to CreateUnique(type, permissions); } \
  NS_IMETHOD Clone(nsIFile **_retval) override { return _to Clone(_retval); } \
  NS_IMETHOD Equals(nsIFile *inFile, bool *_retval) override { return _to Equals(inFile, _retval); } \
  NS_IMETHOD Contains(nsIFile *inFile, bool *_retval) override { return _to Contains(inFile, _retval); } \
  NS_IMETHOD GetParent(nsIFile **aParent) override { return _to GetParent(aParent); } \
  NS_IMETHOD GetDirectoryEntriesImpl(nsIDirectoryEnumerator **aDirectoryEntries) override { return _to GetDirectoryEntriesImpl(aDirectoryEntries); } \
  NS_IMETHOD InitWithPath(const nsAString& filePath) override { return _to InitWithPath(filePath); } \
  NS_IMETHOD InitWithNativePath(const nsACString& filePath) override { return _to InitWithNativePath(filePath); } \
  NS_IMETHOD InitWithFile(nsIFile *aFile) override { return _to InitWithFile(aFile); } \
  NS_IMETHOD GetFollowLinks(bool *aFollowLinks) override { return _to GetFollowLinks(aFollowLinks); } \
  NS_IMETHOD SetFollowLinks(bool aFollowLinks) override { return _to SetFollowLinks(aFollowLinks); } \
  MOZ_MUST_USE NS_IMETHOD OpenNSPRFileDesc(int32_t flags, int32_t mode, PRFileDesc * * _retval) override { return _to OpenNSPRFileDesc(flags, mode, _retval); } \
  MOZ_MUST_USE NS_IMETHOD OpenANSIFileDesc(const char * mode, FILE * * _retval) override { return _to OpenANSIFileDesc(mode, _retval); } \
  MOZ_MUST_USE NS_IMETHOD Load(PRLibrary * * _retval) override { return _to Load(_retval); } \
  MOZ_MUST_USE NS_IMETHOD GetDiskSpaceAvailable(int64_t *aDiskSpaceAvailable) override { return _to GetDiskSpaceAvailable(aDiskSpaceAvailable); } \
  NS_IMETHOD AppendRelativePath(const nsAString& relativeFilePath) override { return _to AppendRelativePath(relativeFilePath); } \
  NS_IMETHOD AppendRelativeNativePath(const nsACString& relativeFilePath) override { return _to AppendRelativeNativePath(relativeFilePath); } \
  MOZ_MUST_USE NS_IMETHOD GetPersistentDescriptor(nsACString& aPersistentDescriptor) override { return _to GetPersistentDescriptor(aPersistentDescriptor); } \
  MOZ_MUST_USE NS_IMETHOD SetPersistentDescriptor(const nsACString& aPersistentDescriptor) override { return _to SetPersistentDescriptor(aPersistentDescriptor); } \
  MOZ_MUST_USE NS_IMETHOD Reveal(void) override { return _to Reveal(); } \
  MOZ_MUST_USE NS_IMETHOD Launch(void) override { return _to Launch(); } \
  MOZ_MUST_USE NS_IMETHOD GetRelativeDescriptor(nsIFile *fromFile, nsACString& _retval) override { return _to GetRelativeDescriptor(fromFile, _retval); } \
  MOZ_MUST_USE NS_IMETHOD SetRelativeDescriptor(nsIFile *fromFile, const nsACString& relativeDesc) override { return _to SetRelativeDescriptor(fromFile, relativeDesc); } \
  MOZ_MUST_USE NS_IMETHOD GetRelativePath(nsIFile *fromFile, nsACString& _retval) override { return _to GetRelativePath(fromFile, _retval); } \
  MOZ_MUST_USE NS_IMETHOD SetRelativePath(nsIFile *fromFile, const nsACString& relativeDesc) override { return _to SetRelativePath(fromFile, relativeDesc); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIFILE(_to) \
  NS_IMETHOD Append(const nsAString& node) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Append(node); } \
  NS_IMETHOD AppendNative(const nsACString& node) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AppendNative(node); } \
  NS_IMETHOD Normalize(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Normalize(); } \
  MOZ_MUST_USE NS_IMETHOD Create(uint32_t type, uint32_t permissions) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Create(type, permissions); } \
  NS_IMETHOD GetLeafName(nsAString& aLeafName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLeafName(aLeafName); } \
  NS_IMETHOD SetLeafName(const nsAString& aLeafName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLeafName(aLeafName); } \
  NS_IMETHOD GetNativeLeafName(nsACString& aNativeLeafName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNativeLeafName(aNativeLeafName); } \
  NS_IMETHOD SetNativeLeafName(const nsACString& aNativeLeafName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNativeLeafName(aNativeLeafName); } \
  NS_IMETHOD CopyTo(nsIFile *newParentDir, const nsAString& newName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyTo(newParentDir, newName); } \
  NS_IMETHOD CopyToNative(nsIFile *newParentDir, const nsACString& newName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyToNative(newParentDir, newName); } \
  NS_IMETHOD CopyToFollowingLinks(nsIFile *newParentDir, const nsAString& newName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyToFollowingLinks(newParentDir, newName); } \
  NS_IMETHOD CopyToFollowingLinksNative(nsIFile *newParentDir, const nsACString& newName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CopyToFollowingLinksNative(newParentDir, newName); } \
  NS_IMETHOD MoveTo(nsIFile *newParentDir, const nsAString& newName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveTo(newParentDir, newName); } \
  NS_IMETHOD MoveToNative(nsIFile *newParentDir, const nsACString& newName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->MoveToNative(newParentDir, newName); } \
  NS_IMETHOD RenameTo(nsIFile *newParentDir, const nsAString& newName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RenameTo(newParentDir, newName); } \
  NS_IMETHOD RenameToNative(nsIFile *newParentDir, const nsACString& newName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->RenameToNative(newParentDir, newName); } \
  NS_IMETHOD Remove(bool recursive) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Remove(recursive); } \
  NS_IMETHOD GetPermissions(uint32_t *aPermissions) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPermissions(aPermissions); } \
  NS_IMETHOD SetPermissions(uint32_t aPermissions) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPermissions(aPermissions); } \
  NS_IMETHOD GetPermissionsOfLink(uint32_t *aPermissionsOfLink) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPermissionsOfLink(aPermissionsOfLink); } \
  NS_IMETHOD SetPermissionsOfLink(uint32_t aPermissionsOfLink) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPermissionsOfLink(aPermissionsOfLink); } \
  NS_IMETHOD GetLastModifiedTime(PRTime *aLastModifiedTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastModifiedTime(aLastModifiedTime); } \
  NS_IMETHOD SetLastModifiedTime(PRTime aLastModifiedTime) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLastModifiedTime(aLastModifiedTime); } \
  NS_IMETHOD GetLastModifiedTimeOfLink(PRTime *aLastModifiedTimeOfLink) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetLastModifiedTimeOfLink(aLastModifiedTimeOfLink); } \
  NS_IMETHOD SetLastModifiedTimeOfLink(PRTime aLastModifiedTimeOfLink) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetLastModifiedTimeOfLink(aLastModifiedTimeOfLink); } \
  NS_IMETHOD GetFileSize(int64_t *aFileSize) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFileSize(aFileSize); } \
  NS_IMETHOD SetFileSize(int64_t aFileSize) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFileSize(aFileSize); } \
  NS_IMETHOD GetFileSizeOfLink(int64_t *aFileSizeOfLink) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFileSizeOfLink(aFileSizeOfLink); } \
  NS_IMETHOD GetTarget(nsAString& aTarget) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTarget(aTarget); } \
  NS_IMETHOD GetNativeTarget(nsACString& aNativeTarget) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNativeTarget(aNativeTarget); } \
  NS_IMETHOD GetPath(nsAString& aPath) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPath(aPath); } \
  MOZ_MUST_USE virtual mozilla::PathString NativePath(void) override; \
  NS_IMETHOD Exists(bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Exists(_retval); } \
  NS_IMETHOD IsWritable(bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsWritable(_retval); } \
  NS_IMETHOD IsReadable(bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsReadable(_retval); } \
  NS_IMETHOD IsExecutable(bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsExecutable(_retval); } \
  NS_IMETHOD IsHidden(bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsHidden(_retval); } \
  NS_IMETHOD IsDirectory(bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsDirectory(_retval); } \
  NS_IMETHOD IsFile(bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsFile(_retval); } \
  NS_IMETHOD IsSymlink(bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsSymlink(_retval); } \
  NS_IMETHOD IsSpecial(bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->IsSpecial(_retval); } \
  MOZ_MUST_USE NS_IMETHOD CreateUnique(uint32_t type, uint32_t permissions) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateUnique(type, permissions); } \
  NS_IMETHOD Clone(nsIFile **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Clone(_retval); } \
  NS_IMETHOD Equals(nsIFile *inFile, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Equals(inFile, _retval); } \
  NS_IMETHOD Contains(nsIFile *inFile, bool *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Contains(inFile, _retval); } \
  NS_IMETHOD GetParent(nsIFile **aParent) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParent(aParent); } \
  NS_IMETHOD GetDirectoryEntriesImpl(nsIDirectoryEnumerator **aDirectoryEntries) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDirectoryEntriesImpl(aDirectoryEntries); } \
  NS_IMETHOD InitWithPath(const nsAString& filePath) override { return !_to ? NS_ERROR_NULL_POINTER : _to->InitWithPath(filePath); } \
  NS_IMETHOD InitWithNativePath(const nsACString& filePath) override { return !_to ? NS_ERROR_NULL_POINTER : _to->InitWithNativePath(filePath); } \
  NS_IMETHOD InitWithFile(nsIFile *aFile) override { return !_to ? NS_ERROR_NULL_POINTER : _to->InitWithFile(aFile); } \
  NS_IMETHOD GetFollowLinks(bool *aFollowLinks) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFollowLinks(aFollowLinks); } \
  NS_IMETHOD SetFollowLinks(bool aFollowLinks) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFollowLinks(aFollowLinks); } \
  MOZ_MUST_USE NS_IMETHOD OpenNSPRFileDesc(int32_t flags, int32_t mode, PRFileDesc * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenNSPRFileDesc(flags, mode, _retval); } \
  MOZ_MUST_USE NS_IMETHOD OpenANSIFileDesc(const char * mode, FILE * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->OpenANSIFileDesc(mode, _retval); } \
  MOZ_MUST_USE NS_IMETHOD Load(PRLibrary * * _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Load(_retval); } \
  MOZ_MUST_USE NS_IMETHOD GetDiskSpaceAvailable(int64_t *aDiskSpaceAvailable) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDiskSpaceAvailable(aDiskSpaceAvailable); } \
  NS_IMETHOD AppendRelativePath(const nsAString& relativeFilePath) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AppendRelativePath(relativeFilePath); } \
  NS_IMETHOD AppendRelativeNativePath(const nsACString& relativeFilePath) override { return !_to ? NS_ERROR_NULL_POINTER : _to->AppendRelativeNativePath(relativeFilePath); } \
  MOZ_MUST_USE NS_IMETHOD GetPersistentDescriptor(nsACString& aPersistentDescriptor) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPersistentDescriptor(aPersistentDescriptor); } \
  MOZ_MUST_USE NS_IMETHOD SetPersistentDescriptor(const nsACString& aPersistentDescriptor) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPersistentDescriptor(aPersistentDescriptor); } \
  MOZ_MUST_USE NS_IMETHOD Reveal(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Reveal(); } \
  MOZ_MUST_USE NS_IMETHOD Launch(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Launch(); } \
  MOZ_MUST_USE NS_IMETHOD GetRelativeDescriptor(nsIFile *fromFile, nsACString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRelativeDescriptor(fromFile, _retval); } \
  MOZ_MUST_USE NS_IMETHOD SetRelativeDescriptor(nsIFile *fromFile, const nsACString& relativeDesc) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRelativeDescriptor(fromFile, relativeDesc); } \
  MOZ_MUST_USE NS_IMETHOD GetRelativePath(nsIFile *fromFile, nsACString& _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRelativePath(fromFile, _retval); } \
  MOZ_MUST_USE NS_IMETHOD SetRelativePath(nsIFile *fromFile, const nsACString& relativeDesc) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRelativePath(fromFile, relativeDesc); } 

#ifdef MOZILLA_INTERNAL_API
#include "nsDirectoryServiceUtils.h"
#endif

#endif /* __gen_nsIFile_h__ */