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 */
 |