root/headers/os/storage/Volume.h
/*
 * Copyright 2002-2009, Haiku Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef _VOLUME_H
#define _VOLUME_H


#include <sys/types.h>

#include <fs_info.h>
#include <Mime.h>
#include <StorageDefs.h>
#include <SupportDefs.h>


class BDirectory;
class BBitmap;


class BVolume {
public:
                                                        BVolume();
                                                        BVolume(dev_t device);
                                                        BVolume(const BVolume& volume);
        virtual                                 ~BVolume();

                        status_t                InitCheck() const;
                        status_t                SetTo(dev_t device);
                        void                    Unset();

                        dev_t                   Device() const;

                        status_t                GetRootDirectory(BDirectory* directory) const;

                        off_t                   Capacity() const;
                        off_t                   FreeBytes() const;
                        off_t                   BlockSize() const;

                        status_t                GetName(char* name) const;
                        status_t                SetName(const char* name);

                        status_t                GetIcon(BBitmap* icon, icon_size which) const;
                        status_t                GetIcon(uint8** _data, size_t* _size,
                                                                type_code* _type) const;

                        bool                    IsRemovable() const;
                        bool                    IsReadOnly() const;
                        bool                    IsPersistent() const;
                        bool                    IsShared() const;
                        bool                    KnowsMime() const;
                        bool                    KnowsAttr() const;
                        bool                    KnowsQuery() const;

                        bool                    operator==(const BVolume& volume) const;
                        bool                    operator!=(const BVolume& volume) const;
                        BVolume&                operator=(const BVolume& volume);

private:
        virtual void                    _TurnUpTheVolume1();
        virtual void                    _TurnUpTheVolume2();
        virtual void                    _TurnUpTheVolume3();
        virtual void                    _TurnUpTheVolume4();
        virtual void                    _TurnUpTheVolume5();
        virtual void                    _TurnUpTheVolume6();
        virtual void                    _TurnUpTheVolume7();
        virtual void                    _TurnUpTheVolume8();

                        dev_t                   fDevice;
                                                                // The device ID of the volume.
                        status_t                fCStatus;
                                                                // The initialization status of the object.
                        int32                   _reserved[8];
                                                                // FBC
};


#endif  // _VOLUME_H