campo-sirio/al/h/fileattr.h
alex 714dd74636 Archive Library versione 2.00
git-svn-id: svn://10.65.10.50/trunk@5350 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-10-09 16:09:54 +00:00

198 lines
6.3 KiB
C++
Executable File

/*
* FILEATTR.H
*
* Header file for ArchiveLib 2.0
*
* Copyright (c) 1994 Greenleaf Software, Inc.
* All Rights Reserved
*
* DESCRIPTION
*
* This file contains the class definition for ALFileAttributes.
*
* CLASS DEFINITIONS:
*
* ALFileAttributes
*
* REVISION HISTORY
*
* May 26, 1994 1.0A : First release
*
* February 14, 1996 2.0A : New release
*/
#ifndef _FILEATTR_H
#define _FILEATTR_H
/*
* class ALFileAttributes
*
* DESCRIPTION
*
* This class is used to carry around file attributes. Its only
* real job at this time is to sit in the ALStorage class
* and then produce packed attributes for inclusion in an archive,
* and vice versa. We will need to add some additional members
* here for searching archives based on certain attribute criteria.
*
* Note that most of the classes in Archive library deliberately
* withhold the copy constructor and assignment operator. In this case,
* however, the compiler is able to generate an adequate version of
* these functions, so they aren't disabled.
*
* DATA MEMBERS
*
* miReadOnly : The read only file attribute bit, set when the file
* is opened or when the directory is read from the archive.
*
* miSystem : The system file attribute bit.
*
* miHidden : The hidden file attribute bit.
*
* miArchive : The archive (backup) file attribute bit.
*
* miDirectory : The directory file attribute bit.
*
* MEMBER FUNCTIONS
*
* ALFileAttributes() : The constructor, doesn't have to do much.
* ~ALFileAttributes() : The destructor, doesn't have to do anything.
* operator new( size_t size ) : Memory allocation operator, only used if
* the library is inside a DLL.
* PackedAttributes() : Returns the bits packed into an integer
* in ArchiveLib proprietary format.
* SetFromPackedAttributes() : Sets the member bits using as input a
* short int in proprietary ArchiveLib format.
*
* ReadOnly() : Is the Read Only attribute bit set?
* System() : Is the system attribute bit set?
* Hidden() : Is the Hidden attribute set?
* Archive() : Is the Archive (backup) bit set?
* Directory() : Is the directory attribute bit set?
*
* REVISION HISTORY
*
* May 26, 1994 1.0A : First release
*
* February 14, 1996 2.0A : New release
*/
#if defined( __cplusplus )
class AL_CLASS_TYPE ALFileAttributes { /* Tag public class */
/*
* Constructors, destructors, declarations, and friends
*/
friend class AL_CLASS_TYPE ALFile;
public :
AL_PROTO ALFileAttributes();
AL_PROTO ~ALFileAttributes();
#if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL )
void AL_DLL_FAR * AL_PROTO operator new( size_t size );
#endif
/*
* Member functions
*/
public :
short unsigned int AL_PROTO PackedAttributes();
void AL_PROTO SetFromPackedAttributes( short int attributes );
/*
* Access functions, all inline. These provide readonly access to the
* individual bits. I need to add some support for C programmers for
* these functions as well.
*/
int AL_PROTO ReadOnly();
int AL_PROTO System();
int AL_PROTO Hidden();
int AL_PROTO Archive();
int AL_PROTO Directory();
/*
* All of these guys are going to be undocumented for the time being.
* If we ever add support for UNIX, these additional bits might
* be useful.
*/
int AL_PROTO UnixBitsPresent();
int AL_PROTO UserRead();
int AL_PROTO UserWrite();
int AL_PROTO UserExecute();
int AL_PROTO OtherRead();
int AL_PROTO OtherWrite();
int AL_PROTO OtherExecute();
int AL_PROTO GroupRead();
int AL_PROTO GroupWrite();
int AL_PROTO GroupExecute();
/*
* Data members
*/
protected :
/*
* The DOS attributes.
*/
int miReadOnly : 1;
int miSystem : 1;
int miHidden : 1;
int miArchive : 1;
/*
* Additional attributes that might be used for UNIX files. The
* DOS bits are applied to the UNIX user settings.
*/
int miUnixBitsPresent : 1;
int miUserRead : 1;
int miUserWrite : 1;
int miUserExecute : 1;
int miOtherRead : 1;
int miOtherWrite : 1;
int miOtherExecute : 1;
int miGroupRead : 1;
int miGroupWrite : 1;
int miGroupExecute : 1;
/*
* The directory attribute is common to UNIX and DOS
*/
int miDirectory : 1;
};
#include "fileattr.inl"
#else /* #if defined( __cplusplus ) ... */
AL_LINKAGE int AL_FUNCTION ALStorageReadOnly( hALStorage storage );
AL_LINKAGE int AL_FUNCTION ALStorageSystem( hALStorage storage );
AL_LINKAGE int AL_FUNCTION ALStorageHidden( hALStorage storage );
AL_LINKAGE int AL_FUNCTION ALStorageArchive( hALStorage storage );
AL_LINKAGE int AL_FUNCTION ALStorageDirectory( hALStorage storage );
AL_LINKAGE void AL_FUNCTION
ALStorageSetFromPackedAtts( hALStorage this_object,
unsigned short int packed_attributes );
AL_LINKAGE unsigned short int AL_FUNCTION
ALStoragePackedAttributes( hALStorage this_object );
#endif /* #if defined( __cplusplus ) ... #else ... */
/*
* Masks for accessing this stuff via the packed attributes byte.
* This isn't a nested enum, mostly because it cuts back on typing.
* This might change later.
*/
enum ALPackedAttributeBits { /* Tag public type */
ATTR_READ_ONLY = 1,
ATTR_SYSTEM = 2,
ATTR_HIDDEN = 4,
ATTR_ARCHIVE = 8,
ATTR_UNIX_BITS_PRESENT = 16,
ATTR_USER_READ = 32,
ATTR_USER_WRITE = 64,
ATTR_USER_EXECUTE = 128,
ATTR_OTHER_READ = 256,
ATTR_OTHER_WRITE = 512,
ATTR_OTHER_EXECUTE = 1024,
ATTR_GROUP_READ = 2048,
ATTR_GROUP_WRITE = 4096,
ATTR_GROUP_EXECUTE = 8192,
ATTR_DIRECTORY = 16384,
ATTR_LABEL = (int) 0x8000
};
#endif /* #ifndef _FILEATTR_H */