198 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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 */
 |