// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
// which accompanies this distribution, and is available
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
// f32\inc\f32file.inl
// 
//




// Class TEntry
inline const TUid& TEntry::operator[](TInt anIndex) const
/**
Gets any one of the file's three UIDs.

@param anIndex Identifies the UID required. This can be zero, one or 
               two. Specifiying any other value raises a panic.

@return On return, contains the requested UID.

@see TUidType
*/
    {return(iType[anIndex]);}




inline TBool TEntry::IsUidPresent(TUid aUid) const
/**
Tests whether the specified UID matches any of the UIDs in the UID type.

@param aUid The UID to be checked.

@return True if the specified UID is present, false otherwise.

@see TUidType::IsPresent
@see TUidType
*/
    {return(iType.IsPresent(aUid));}




inline TBool TEntry::IsTypeValid() const
/**
Test whether the file has a valid UID.

@return True if the entry has a valid UID, false otherwise. 

@see TUidType::IsValid  
@see TUidType
*/
    {return(iType.IsValid());}




inline TUid TEntry::MostDerivedUid() const
/**
Gets the most derived (i.e. the most specific) UID.

@return The entry's most derived UID.

@see TUidType::MostDerived
@see TUidType
*/
    {return(iType.MostDerived());}




//	Returns the entire size of the TEntry...
inline TInt EntrySize(const TEntry& anEntry)
	{return(sizeof(TUint)+sizeof(TInt)+sizeof(TTime)+sizeof(TInt)+sizeof(TUidType)+anEntry.iName.Size());}




// Class TFindFile
inline const TDesC& TFindFile::File() const
/**
Gets the full file specification of a file which was found by a successful 
call to any of the search variants that do not accept wildcards.

The file specification includes drive, path and filename.

Notes:

1. When called after a successful search using wildcards the only valid 
   components of the retrieved file specification are drive letter and 
   directory.
   
@return The full path and filename.
*/
	{return iFile.FullName();}



// Class CDirScan
inline RFs& CDirScan::Fs()
	{return(*iFs);}




// Class TDriveUnit
inline TDriveUnit::operator TInt() const
/**
Converts the drive unit to an integer value.
*/
	{return(iDrive);}




inline TInt ValidateMatchMask( TUint aMask)
/**
Validates the mask used to match drive attributes.
*/
	{
	const TUint matchedFlags= aMask & KDriveAttMatchedFlags;  //KDriveAttMatchedFlags = 0xFFF
	const TUint matchedAtt = aMask & KDriveAttMatchedAtt;	 //KDriveAttMatchedAtt = 0x0FFF0000
	

	switch(matchedAtt)
		{

		case KDriveAttExclude:
			return matchedFlags==0?KErrArgument:KErrNone;
			

		case KDriveAttExclusive :
			return matchedFlags==0?KErrArgument:KErrNone;
			

		case KDriveAttExclude | KDriveAttExclusive:
			return matchedFlags==0?KErrArgument:KErrNone;
			

		case KDriveAttAll:
			return matchedFlags==0?KErrNone:KErrArgument;
							
		case 0:
			return KErrNone;
			
		default:
			return KErrArgument;			
							
		}
			
				
	}	
