חזור לתיקייה: גליון 4

FileSystem

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה

    FileSystem

    02340124

    מבוא לתכנות מערכות

    רשימות הרצאה לקריאה בשבת

    FileSystem

    הופק מתוך תקיית התואר של שקד

    uni-folder.vercel.app

    filesystem.h

    הערה (קובץ קוד)

    קובץ זה הוא קובץ קוד מסוג C.

    #pragma once
    
    #include <memory>
    #include <string>
    #include <vector>
    
    #include "Action.h"
    #include "Directory.h"
    #include "TextFile.h"
    
    /**
     * @class FileSystem
     * Singleton that manages the file system operations and executions.
     */
    class FileSystem {
        std::vector<std::string> history;
        std::unique_ptr<Directory> root;
    
        FileSystem();
    
        FileSystem(const FileSystem&) = delete;
        FileSystem& operator=(const FileSystem&) = delete;
    
        // handlers to handle the different types of actions
        std::unique_ptr<Action> handleHelp(const std::vector<std::string>& args) const;
        std::unique_ptr<Action> handleCreate(const std::vector<std::string>& args) const;
        std::unique_ptr<Action> handleDelete(const std::vector<std::string>& args) const;
        std::unique_ptr<Action> handleList(const std::vector<std::string>& args) const;
        std::unique_ptr<Action> handleRead(const std::vector<std::string>& args) const;
        std::unique_ptr<Action> handleWrite(const std::vector<std::string>& args) const;
        std::unique_ptr<Action> handleSearch(const std::vector<std::string>& args) const;
        std::unique_ptr<Action> handleImport(const std::vector<std::string>& args) const;
        std::unique_ptr<Action> handleExport(const std::vector<std::string>& args) const;
        std::unique_ptr<Action> handleHistory(const std::vector<std::string>& args) const;
    
        // helper functions for the handlers
        enum ActionType { HELP, CREATE, DELETE, LIST, READ, WRITE, SEARCH, IMPORT, EXPORT, HISTORY };
        static void checkAmountOfArgs(ActionType action, unsigned int num, const std::string& type = "");
        Directory& getDirectoryFromPath(const std::vector<std::string>& pathVector,
            const std::string& errorMessage) const;
        TextFile& getTextFileFromPath(const std::vector<std::string>& pathVector) const;
    
    public:
        ~FileSystem() = default;
    
        /**
         * @return The instance of the FileSystem used by the program.
         */
        static FileSystem& getInstance();
    
        /**
         * Runs the file system cli.
         */
        void run();
    };