1*bf31ee39SPawel Dziepak /* 2*bf31ee39SPawel Dziepak * Copyright 2012 Haiku, Inc. All rights reserved. 3*bf31ee39SPawel Dziepak * Distributed under the terms of the MIT License. 4*bf31ee39SPawel Dziepak * 5*bf31ee39SPawel Dziepak * Authors: 6*bf31ee39SPawel Dziepak * Paweł Dziepak, pdziepak@quarnos.org 7*bf31ee39SPawel Dziepak */ 8*bf31ee39SPawel Dziepak #ifndef INODE_H 9*bf31ee39SPawel Dziepak #define INODE_H 10*bf31ee39SPawel Dziepak 11*bf31ee39SPawel Dziepak 12*bf31ee39SPawel Dziepak #include <SupportDefs.h> 13*bf31ee39SPawel Dziepak 14*bf31ee39SPawel Dziepak #include "Filesystem.h" 15*bf31ee39SPawel Dziepak #include "NFS4Defs.h" 16*bf31ee39SPawel Dziepak 17*bf31ee39SPawel Dziepak 18*bf31ee39SPawel Dziepak class Inode { 19*bf31ee39SPawel Dziepak public: 20*bf31ee39SPawel Dziepak Inode(Filesystem* fs, const Filehandle &fh); 21*bf31ee39SPawel Dziepak 22*bf31ee39SPawel Dziepak inline ino_t ID() const; 23*bf31ee39SPawel Dziepak 24*bf31ee39SPawel Dziepak private: 25*bf31ee39SPawel Dziepak uint64 fFileId; 26*bf31ee39SPawel Dziepak 27*bf31ee39SPawel Dziepak Filehandle fHandle; 28*bf31ee39SPawel Dziepak Filesystem* fFilesystem; 29*bf31ee39SPawel Dziepak }; 30*bf31ee39SPawel Dziepak 31*bf31ee39SPawel Dziepak 32*bf31ee39SPawel Dziepak inline ino_t 33*bf31ee39SPawel Dziepak Inode::ID() const 34*bf31ee39SPawel Dziepak { 35*bf31ee39SPawel Dziepak if (sizeof(ino_t) >= sizeof(uint64)) 36*bf31ee39SPawel Dziepak return fFileId; 37*bf31ee39SPawel Dziepak else 38*bf31ee39SPawel Dziepak return (ino_t)fFileId ^ (fFileId >> 39*bf31ee39SPawel Dziepak (sizeof(uint64) - sizeof(ino_t)) * 8); 40*bf31ee39SPawel Dziepak } 41*bf31ee39SPawel Dziepak 42*bf31ee39SPawel Dziepak 43*bf31ee39SPawel Dziepak #endif // INODE_H 44*bf31ee39SPawel Dziepak 45