// fs2.h // Programat de Barboi Ioan Mihail, ANUL I, Informatica ID/IFR, FMI::UNIBUC - 2011-2012 // Copyright (C), 1996-2011-2012, AlphaX (R) Team, Romania, EU // thanks : fmi.unibuc.ro, ocw.mit.edu, elth.pub.ro, wiki,freebasic.net, ichb, sc24 //fs2.h : FileSystemD2 generation 2 ; cachec class too // Based on my previous project FileSystemD which i've posted on sourceforge.net //template portat si updatat la C++ ; functiile de cache originale le-am dezvoltat pt programul meu FS in limbajul FreeBASIC32bit. {pt tot proiectul "FS" vizitati http://filesystemd.sourceforge.net {by Mihai Barboi}} //portarea a fost din pricina ca forta de munca din Romania nu ofera joburi pt cunoscatori de freebasic32; //pt a continua cu freebasic ar trebui sa devin freelancer intr-un domeniu in care am nevoie de o echipa => o groaza de $$$ => nu imi permit //Cu toate astea limajul freebasic32 ramane pt mine fovorit si il folosesc in majoritatea proiectelor mele principale //Sigurle diferenta la ora actuala 20/martie/2012, intre C++ si FreeBasic32 este ca // freebasic32 implemeteaza absolut tot ce exista in limbajul "C" simplu dar nu in totalitate si tot ce sa implemetat in "C++" // freebasic32 face parte din grupa (middle/high)-level {"freepascal32","gcc","djgpp","mingw"}, permitand utilizarea inline a libajului de asamblare, folosind acelasi assembler/linker GNU : as/ld // este multi platforma {win32/linux/dox/xbox}, are foarte bun/mult suport; din nou singurul minus fata de "freepascal" si "gcc" este ca inca nu implementeaza official "class"ele in modul C++; deasemenea nu exista oficial si versiuni pt ARM/POWERPC ... /* diagrama de apel NOTATIE: in citirea/scrierea de structuri se intelege : citire/scriere SECTOARE; folosirea tipului [structura] permite definirea unor blocuri de lungime diferiata pt un sector(512bytesPerSector/2048bytesPerSector/etc) [sau chair a unei structuri abstracte de date] explicitare: -reader_class a. ofera: functii abstracte pt citire/scriere structuri[sectoare]; integrare in/cu driverul de sisteme de fisiere al sistmului de operare gazda b. foloseste: clasa "cache_class" pt cache de structuri c. are nevoie de [mosteneste de la] : fara mosteniri d. optional: poate folosi functiile de citire/scriere structuri[sectoare] oferite de o clasa de drivere de hardware [hardware_driver_class] -cache_class a. ofera: sistem paginat de cache optim de structuri pt sistem I/O de dimesiune mare[<=2TB]/medii[~GB]/mici[sute MB] prin functii abstarcte de citire/scriere structuri b. foloseste: clasa "reader_class" ca clasa de interfata pt citire directa de structuri[sectoare] c. are nevoie de [mosteneste de la] : fara mosteniri -filesystem_class a. ofera: un de integrare a stucturilor[sectoarelor]; pointerii la functii standard de fisiere [creare,stergere,citire,scriere] b. foloseste: clase de interfata cu tipuri de aranjare/traducere a structurilor: clasa fat32_class, clasa iso9660_class, clasa ext2_class etc... c. are nevoie de [mosteneste de la] : clasa "reader_class" d. permite neglijarea : lungimea unei structuri[sector], modul de aranjarea a structurilor -drives_class a. ofera: un sistem de integrare a mai multor clase "filesystem_class" si a unor interfete ce permit transferul de date intre doua sau mai multe clase "filesystem_class" [copyfile,recursivecopy,etc] b. foloseste: clasa "filesystem_class" c. are nevoie de [mosteneste de la] : fara mosteniri d. permite neglijarea : folosirii unui singur tip de sistem de fisiere; neglijeaza stuctura sistemelor de fisire -fat32_class / iso9660_class / etc2_class / ... etc a. ofera: functii publice pt manipulare fisiere/directoare (creeare,stergere,citire,scriere,cautare) specifice sistemului de fisiere selectat [fat32/iso/ext/...] b. foloseste: functii (pointeri la) de citire/scriere structuri de date[sectoare]; access optional printr-un adaptor de partitii[MBR_CLASS | 3G_CLASS | ???_CLASS] la o clasa "reader_class" c. are nevoie de [mosteneste de la] : fara mosteniri d. permite neglijarea : altor sisteme de structuri; -mbr_class / 3g_class / ???_class etc a. ofera: discernere intre tipuri de partii; enumera partitiile valide inclusiv partitiile extinse; selector de partitii b. foloseste: reader_class c. are nevoie de [mosteneste de la] : fara mosteniri -[optional] hardware_driver_class a. ofera: functii pt citire/scriere structuri specifice[sectoare] b. foloseste: access direct la anumite componente hardware, alte clase hardware_driver [ca de pilda un driver de ATA/IDE va folosi o clasa DMA,PCI_BUS,INTERRUPTS,...] c. are nevoie de [mosteneste de la] : depinde d. permite neglijarea : claselor de nivel superior (neglijarea drives_class, filesystem_class, etc...) se pot implementa si alte clase cu aplicatii specifice : de pilda: - clasa "check_disk_class" pt verificat corectitudinea datelor, incadrarea in constrangeri [clasa ce va folosi drives_class/filesystem_class sau direct reader_class] - clasa "drive_commander_class" o interfate IDE de navigare prin foldere/fisire [gen NC,MC,DC...] [clasa ce va folosi drives_class] - clasa "disk_defragment_or_chrunk_class" pt defragmentarea anumitor tipuri de sisteme de fisiere sau pt COMPACTAREA datelor din anumite tipuri de fisirer [clasa va folosit filesystem_class] - clasa "disk_editor_class" pt acesarea/editarea/recuperarea avansata de structuri interne ale unui anumit tip de sistem de fisier [clasa va folosi "filesystem_class" si "reader_class" si optional si "cache_class"] - clasa "virtual_driver_class" pt creare de interfere virtuale de drivere prin care se pot monta imagini de sisteme... sau cu alte scopuri[o interfata care citeste secventiale de la un port USB de pilda] - clasa "tcpip_class" pt acesarea de la distanta prin intermediul (internetului)/(retelei locala) a unui sistem de fisiere folosind protocolul TCP/IP - clasa "p2p_class" pt folosirea unei conexiuni de tip peer2peer (acelasi sistem folosit pt torrente, sistem folosit in unitatile militare/politie etc ...] - clasa "encript_class" pt folosirea encriptarii/decriptarii de structuri[sectoare] - clasa "compress_class" pt comprimarea(arhivarea) de structuri [sectoare] */ //---------------------------------------------------------------------------------------------- |