/*
 * FIELATTR.H
 *
 *  Header file for ArchiveLib 1.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
 *
 */

#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.
 *
 * 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.
 *  SetFromWin32Attributes()    : Sets the four member bits using as input
 *                                the attributes as returned in a Win32 call.
 *  GetWin32Attributes()        : Returns the four member bits packed into
 *                                Win 32 format.
 *  SetFromDosAttributes()      : Sets the four using as input the settings
 *                                returned from a DOS function call.
 *  GetDosAttributes()          : Returns the member bits formatted into
 *                                the short int used by a Dos function call.
 *  SetFromPackedAttributes()   : Sets the member bits using as input a
 *                                short int in proprietary ArchiveLib format.
 *
 * REVISION HISTORY
 *
 *  May 26, 1994  1.0A  : First release
 *
 */

class AL_CLASS_TYPE ALFileAttributes {
/*
 * Constructors, destructors, declarations, and friends
 */
    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();
#if defined( AL_WIN32S )
        void AL_PROTO SetFromWin32Attributes( DWORD win32_attributes );
        DWORD AL_PROTO GetWin32Attributes();
#else
        void AL_PROTO SetFromDosAttributes( unsigned dos_attributes );
        unsigned short int AL_PROTO GetDosAttributes();
#endif
        void AL_PROTO SetFromPackedAttributes( short int attributes );
/*
 * Data members
 */
    protected :
        int miReadOnly:1;
        int miSystem:1;
        int miHidden:1;
        int miArchive:1;
};

#endif /* #ifndef _FILEATTR_H */
