rendered paste body#include <iostream>using std::cin;using std::cout;using std::endl;#include "Filesystem.h"File::File(string inName, int inSize) :name(inName), size(inSize) { nextPtr = NULL; }const string File::get_name() { return name; }int File::get_size() { return size; }List::List() { headPtr = NULL; }List::~List() { cout << "Destructing List" << endl; while (headPtr) pop_front(); }void List::push_front(File *newPtr) { if (headPtr == NULL){ headPtr = newPtr; } else { newPtr->nextPtr = headPtr; headPtr = newPtr; } }void List::pop_front() { if (headPtr != NULL) { File *tempPtr = headPtr; headPtr = headPtr->nextPtr; delete tempPtr; } }void List::clear() { while (headPtr != NULL) { pop_front(); } }void List::traverse_list(void (*funcPtr)(File&)) { File *nodePtr; nodePtr = headPtr; while (nodePtr != NULL) { (*funcPtr)(*nodePtr); nodePtr = nodePtr->nextPtr; } } string Filesystem::fileName;int Filesystem::totalSize = 0;bool Filesystem::fileExist = false;Filesystem::Filesystem() { }Filesystem::~Filesystem() { }void Filesystem::accumulate_size(File &filePtr) { totalSize += filePtr.get_size(); }void Filesystem::print_file_list(File &filePtr) { cout << filePtr.get_name() << "\t"; cout << filePtr.get_size() << endl; }void Filesystem::find_same_file(File &filePtr) { if (filePtr.get_name() == fileName) fileExist = true; }void Filesystem::add_file(string inName, int inSize) { fileExist = false; fileName = inName; fileList.traverse_list(find_same_file); if (fileExist == false){ File *filePtr; filePtr = new File(inName, inSize); fileList.push_front(filePtr); cout << "File was sucessfully created." << endl; } else { cout << "A file by this name already exists, this file could not be added." << endl; } }void Filesystem::du() { totalSize = 0; //resets size before each count fileList.traverse_list(accumulate_size); cout << "\nTotal Filesystem size is " << totalSize << "\n" << endl; }void Filesystem::ls() { cout << "\n" << endl; cout << "Name \t\t" << "Size" << endl; fileList.traverse_list(print_file_list); cout << "\n" << endl; }void Filesystem::clean() { fileList.clear(); }int main(){ Filesystem myFilesystem; int choice=1; string fileName; int fileSize; while (choice <= 4 && choice >= 1){ cout << "Enter 1 to Add Files" << endl; cout << "Enter 2 to View File List" << endl; cout << "Enter 3 to View Total Size of the Filesystem" << endl; cout << "Enter 4 to Format the File System" << endl; cout << "Enter 5 to Exit" << endl; cin >> choice; while (choice > 5 || choice < 1){ cout << "Invalid Input Selection." << endl; cout << "Enter 1 to Add Files" << endl; cout << "Enter 2 to View File List" << endl; cout << "Enter 3 to View Total Size of the Filesystem" << endl; cout << "Enter 4 to Format the File System" << endl; cout << "Enter 5 to Exit" << endl; cin >> choice; } switch (choice) { case 1: cout << "Please enter the name of the file you wish to add: "; cin >> fileName; cout << "Please enter the size of " << fileName << ": "; cin >> fileSize; myFilesystem.add_file(fileName, fileSize); break; case 2: myFilesystem.ls(); break; case 3: myFilesystem.du(); break; case 4: myFilesystem.clean(); break; case 5: return 0; default: break; } }}