userlibandfileserver/fileserver/sfat32/inc/sl_std.h
branchRCL_3
changeset 19 4a8fed1c0ef6
parent 8 538db54a451d
child 20 597aaf25e343
equal deleted inserted replaced
15:2d65c2f76d7b 19:4a8fed1c0ef6
    61 Represents the position of a directory entery in terms of a cluster and off set into it
    61 Represents the position of a directory entery in terms of a cluster and off set into it
    62 */
    62 */
    63 class TEntryPos
    63 class TEntryPos
    64 	{
    64 	{
    65 public:
    65 public:
    66 	TEntryPos() {}
    66 	TEntryPos() : iCluster(EOF_32Bit), iPos(0) {}
    67 	TEntryPos(TInt aCluster,TUint aPos) : iCluster(aCluster), iPos(aPos) {}
    67 	TEntryPos(TInt aCluster,TUint aPos) : iCluster(aCluster), iPos(aPos) {}
    68 
    68 
    69     inline TUint32 Cluster() const;
    69     inline TUint32 Cluster() const;
    70     inline TUint32 Pos() const;
    70     inline TUint32 Pos() const;
    71     inline TBool operator==(const TEntryPos& aRhs) const;
    71     inline TBool operator==(const TEntryPos& aRhs) const;
       
    72     inline void SetEndOfDir();
    72 
    73 
    73 public:
    74 public:
    74 	TInt iCluster;
    75 	TInt iCluster;
    75 	TUint iPos;
    76 	TUint iPos;
    76 	};
    77 	};
   108     inline void ReleaseLock() const {iProxyDrive.LeaveCriticalSection();} 
   109     inline void ReleaseLock() const {iProxyDrive.LeaveCriticalSection();} 
   109 
   110 
   110 
   111 
   111 protected:
   112 protected:
   112     TDriveInterface();
   113     TDriveInterface();
       
   114    ~TDriveInterface() {Close();}
       
   115 
       
   116     //-- outlawed
   113     TDriveInterface(const TDriveInterface&);
   117     TDriveInterface(const TDriveInterface&);
   114     TDriveInterface& operator=(const TDriveInterface&);
   118     TDriveInterface& operator=(const TDriveInterface&);
       
   119     void* operator new(TUint); //-- disable creating objets of this class on the heap.
       
   120     void* operator new(TUint, void*);
   115 
   121 
   116     TBool Init(CFatMountCB* aMount);
   122     TBool Init(CFatMountCB* aMount);
   117     void Close(); 
   123     void Close(); 
   118 
   124 
   119 	inline TBool NotifyUser() const;
   125 	inline TBool NotifyUser() const;
   489     TInt OpenMountForWrite();
   495     TInt OpenMountForWrite();
   490     TInt IsFinalised(TBool& aFinalised);
   496     TInt IsFinalised(TBool& aFinalised);
   491 
   497 
   492     /** 
   498     /** 
   493         A wrapper around TDriveInterface providing its instantination and destruction.
   499         A wrapper around TDriveInterface providing its instantination and destruction.
   494         You must not create objects of this class, use DriveInterface() instead.
   500         You must not create objects of this class, use DriveInterface() method for obtaining the reference to the driver interface.
   495     */
   501     */
   496     class XDriveInterface: public TDriveInterface
   502     class XDriveInterface: public TDriveInterface
   497         {
   503         {
   498       public:
   504       public:
   499         XDriveInterface() : TDriveInterface() {}
   505         using TDriveInterface::Init;
   500         ~XDriveInterface() {Close();}
       
   501         TBool Init(CFatMountCB* aMount) {return TDriveInterface::Init(aMount);}
       
   502         };
   506         };
   503 
   507 
   504 
   508 
   505 public:
   509 public:
   506     
   510     
   536 	inline TInt NumberOfFats() const;
   540 	inline TInt NumberOfFats() const;
   537 	inline TInt FatSizeInBytes() const;
   541 	inline TInt FatSizeInBytes() const;
   538 	inline TInt ClusterRelativePos(TInt aPos) const;
   542 	inline TInt ClusterRelativePos(TInt aPos) const;
   539 	inline TUint StartOfRootDirInBytes() const;
   543 	inline TUint StartOfRootDirInBytes() const;
   540 	inline TUint32 UsableClusters() const;
   544 	inline TUint32 UsableClusters() const;
       
   545     inline TBool ClusterNumberValid(TUint32 aClusterNo) const;
   541 	inline TBool IsBadCluster(TInt aCluster) const;
   546 	inline TBool IsBadCluster(TInt aCluster) const;
       
   547 	
   542 	inline TBool IsRuggedFSys() const;
   548 	inline TBool IsRuggedFSys() const;
   543 	inline void SetRuggedFSys(TBool aVal);
   549 	inline void SetRuggedFSys(TBool aVal);
       
   550 	inline TUint32 AtomicWriteGranularityLog2() const;
       
   551 
   544 	
   552 	
   545 	inline TInt RootIndicator() const;
   553 	inline TInt RootIndicator() const;
   546 	
   554 	
   547     inline TBool IsRootDir(const TEntryPos &aEntry) const;
   555     inline TBool IsRootDir(const TEntryPos &aEntry) const;
   548 	inline CAsyncNotifier* Notifier() const;
   556 	inline CAsyncNotifier* Notifier() const;
   660 	        an array that holds short name candidates, prepared on initialisation.
   668 	        an array that holds short name candidates, prepared on initialisation.
   661 	        */
   669 	        */
   662 	        RArray<TShortName>  iShortNameCandidates;
   670 	        RArray<TShortName>  iShortNameCandidates;
   663 	    };
   671 	    };
   664 
   672 
       
   673    
       
   674     /** a helper class that describes a continuous chunk of diectory entries*/
       
   675     class TEntrySetChunkInfo
       
   676         {
       
   677      public:
       
   678         inline TEntrySetChunkInfo();
       
   679         inline TBool operator==(const TEntrySetChunkInfo& aRhs);
       
   680 
       
   681         //-- FAT entryset can't span more than 3 clusters/sectors
       
   682         enum {KMaxChunks = 3};
       
   683 
       
   684      public:   
       
   685         TEntryPos iEntryPos;    ///< entryset chunk dir. starting position
       
   686         TUint     iNumEntries;  ///< number of entries in the chunk
       
   687         };
       
   688 
       
   689     
       
   690     void DoEraseEntrySetChunkL(const TEntrySetChunkInfo& aEntrySetChunk);
   665 	
   691 	
   666 
   692 
   667 	TBool DoRummageDirCacheL(TUint anAtt,TEntryPos& aStartEntryPos,TFatDirEntry& aStartEntry,TEntryPos& aDosEntryPos,TFatDirEntry& aDosEntry,TDes& aFileName, const TFindHelper& aAuxParam, XFileCreationHelper* aFileCreationHelper, const TLeafDirData& aLeafDir) const;
   693 	TBool DoRummageDirCacheL(TUint anAtt,TEntryPos& aStartEntryPos,TFatDirEntry& aStartEntry,TEntryPos& aDosEntryPos,TFatDirEntry& aDosEntry,TDes& aFileName, const TFindHelper& aAuxParam, XFileCreationHelper* aFileCreationHelper, const TLeafDirData& aLeafDir) const;
   668     TBool DoFindL(const TDesC& aName,TUint anAtt,TEntryPos& aStartEntryPos,TFatDirEntry& aStartEntry,TEntryPos& aDosEntryPos,TFatDirEntry& aDosEntry,TDes& aFileName,TInt anError, XFileCreationHelper* aFileCreationHelper, const TLeafDirData& aLeafDirData) const;
   694     TBool DoFindL(const TDesC& aName,TUint anAtt,TEntryPos& aStartEntryPos,TFatDirEntry& aStartEntry,TEntryPos& aDosEntryPos,TFatDirEntry& aDosEntry,TDes& aFileName,TInt anError, XFileCreationHelper* aFileCreationHelper, const TLeafDirData& aLeafDirData) const;
   669     void FindEntryStartL(const TDesC& aName,TUint anAtt,TFatDirEntry& anEntry,TEntryPos& aPos, XFileCreationHelper* aFileCreationHelper) const;
   695     void FindEntryStartL(const TDesC& aName,TUint anAtt,TFatDirEntry& anEntry,TEntryPos& aPos, XFileCreationHelper* aFileCreationHelper) const;