160 lines
4.7 KiB
C++
160 lines
4.7 KiB
C++
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
dir.hxx
|
|
|
|
Abstract:
|
|
|
|
This module contains the declaration for the FSN_DIRECTORY class.
|
|
FSN_DIRECTORY is derived from the abstract FSNODE class. It offers an
|
|
interface which supports the manipulation of DIRECTORIES. It's primary
|
|
purpose is to support the creation of lists of FSNODE (e.g. FILE and
|
|
DIRECTORY) objects that meet some criteria (see FSN_FILETER)and to
|
|
manipulate (e.g. copy, move) FSNODEs which are 'owned' by a FSN_DIRECTORY.
|
|
|
|
Author:
|
|
|
|
David J. Gilman (davegi) 09-Jan-1991
|
|
|
|
Environment:
|
|
|
|
ULIB, User Mode
|
|
|
|
--*/
|
|
|
|
#if ! defined( _FSN_DIRECTORY_ )
|
|
|
|
#define _FSN_DIRECTORY_
|
|
|
|
#include "fsnode.hxx"
|
|
|
|
//
|
|
// Forward references
|
|
//
|
|
|
|
DECLARE_CLASS( FSN_DIRECTORY );
|
|
DECLARE_CLASS( FSN_FILE );
|
|
DECLARE_CLASS( FSN_FILTER );
|
|
DECLARE_CLASS( FSNODE );
|
|
DECLARE_CLASS( PATH );
|
|
|
|
//
|
|
// Type of the callback function for the Traverse method
|
|
//
|
|
typedef BOOLEAN (*CALLBACK_FUNCTION)( IN PVOID Object, IN OUT PFSNODE Node, IN PPATH DestinationPath);
|
|
|
|
//
|
|
// Type of the confirmation function for Copy method.
|
|
//
|
|
typedef BOOLEAN (*CONFIRM_COPY_FUNCTION)( IN PCFSNODE Source,
|
|
IN OUT PPATH DestinationPath );
|
|
|
|
|
|
class FSN_DIRECTORY : public FSNODE {
|
|
|
|
friend class FSN_FILTER;
|
|
friend class SYSTEM;
|
|
|
|
public:
|
|
|
|
DECLARE_CAST_MEMBER_FUNCTION( FSN_DIRECTORY );
|
|
|
|
/*
|
|
NONVIRTUAL
|
|
PFSN_DIRECTORY
|
|
CreateDirectory (
|
|
IN PCPATH Path
|
|
) CONST;
|
|
*/
|
|
|
|
NONVIRTUAL
|
|
ULIB_EXPORT
|
|
PFSN_DIRECTORY
|
|
CreateDirectoryPath (
|
|
IN PCPATH Path
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
PFSN_FILE
|
|
CreateFile (
|
|
IN PCPATH Path,
|
|
IN BOOLEAN OverWrite DEFAULT FALSE
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
BOOLEAN
|
|
Copy (
|
|
IN PFSN_FILTER FsnFilter,
|
|
IN PCFSN_DIRECTORY DestinationDir,
|
|
IN BOOLEAN Recurse DEFAULT FALSE,
|
|
IN BOOLEAN OverWrite DEFAULT FALSE
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
ULIB_EXPORT
|
|
BOOLEAN
|
|
DeleteDirectory (
|
|
);
|
|
|
|
NONVIRTUAL
|
|
BOOLEAN
|
|
DeleteFsNode (
|
|
IN PCFSN_FILTER FsnFilter,
|
|
IN BOOLEAN Recurse DEFAULT FALSE
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
ULIB_EXPORT
|
|
BOOLEAN
|
|
IsEmpty (
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
BOOLEAN
|
|
Move (
|
|
IN PCFSN_FILTER FsnFilter,
|
|
IN PCSTR DestinationName DEFAULT NULL,
|
|
IN PCFSN_DIRECTORY DestinationDir DEFAULT NULL,
|
|
IN BOOLEAN Recurse DEFAULT FALSE,
|
|
IN BOOLEAN OverWrite DEFAULT FALSE
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
ULIB_EXPORT
|
|
PARRAY
|
|
QueryFsnodeArray (
|
|
IN PFSN_FILTER FsnFilter DEFAULT NULL
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
ULIB_EXPORT
|
|
BOOLEAN
|
|
Traverse (
|
|
IN PVOID Object,
|
|
IN PFSN_FILTER FsnFilter,
|
|
IN OUT PPATH DestinationPath,
|
|
IN CALLBACK_FUNCTION CallBackFunction
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
ULIB_EXPORT
|
|
PFSNODE
|
|
GetNext (
|
|
IN OUT HANDLE *hndl,
|
|
OUT PDWORD error
|
|
);
|
|
|
|
|
|
protected:
|
|
|
|
DECLARE_CONSTRUCTOR( FSN_DIRECTORY );
|
|
|
|
private:
|
|
|
|
};
|
|
|
|
#endif // _FSN_DIRECTORY_
|