From e111975e7b5e9caeaa8155dc10ce7849db528f03 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Eckl=2C=20M=C3=A1t=C3=A9?= <ecklm@sch.bme.hu>
Date: Tue, 14 Apr 2015 07:02:26 +0200
Subject: [PATCH] =?UTF-8?q?Apr=C3=B3s=C3=A1gok=20+=20kis=20komment.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 NHF/include/mem_block.h | 26 +++++++++++++++++++++++---
 NHF/src/heap.cpp        | 14 +++++++++++---
 2 files changed, 34 insertions(+), 6 deletions(-)

diff --git a/NHF/include/mem_block.h b/NHF/include/mem_block.h
index a6b9647..c09287d 100644
--- a/NHF/include/mem_block.h
+++ b/NHF/include/mem_block.h
@@ -1,6 +1,9 @@
 #ifndef MEM_BLOCK_H
 #define MEM_BLOCK_H
 
+/** \brief A memória megvalósítása során használt típus.
+  * Mindenhol ez a typedef alkalmazandó.
+ */
 typedef unsigned int memnum;
 
 /** \brief Egyetlen byte.
@@ -10,16 +13,33 @@ typedef unsigned int memnum;
 struct mem_block
 {
 		memnum block_size;/**< Annak a blokknak a mérete, aminek az elején ez a byte áll */
-		bool filled;/**< Jelzi, hogy az adott byte épp foglalt-e */
+		bool filled;/**< Jelzi, hogy az adott byte épp foglalt-e. true=folgalt, false=szabad.*/
+
         /** \brief Beállítja a byte adatait töltetlenre, és 0 blokkméretre
          * \param false
          */
 		mem_block():block_size(0),filled(false){}
-		void set(bool fill=false, memnum block_size=0)
+
+        /** \brief Beállítja egy byte értékét a paraméterek által megadott értékre.
+         * Paraméterek nélkül megadva alapértelmezett (false,0) értéket állít be.
+         *
+         * \param filled=false bool A töltöttség értéke.
+         * \param block_size=0 memnum Foglalt blokk esetén, az elkezdett blokk mérete.
+         * \return void
+         *
+         */
+		void set(bool filled=false, memnum block_size=0)
 		{
-			filled=fill;
+			this->filled=filled;
 			this->block_size=block_size;
 		}
+
+        /** \brief Meghívja set() függvényt paraméterek nélkül.
+         * Más szóval alapértelmezett értékre állítja egy memóriablokk tagjait.
+         *
+         * \return void
+         *
+         */
 		void reset(){set();}//Csak kényelemből, nem biztos, hogy érdemes bennehagyni.
 };
 
diff --git a/NHF/src/heap.cpp b/NHF/src/heap.cpp
index a6c6fe8..c29e9d8 100644
--- a/NHF/src/heap.cpp
+++ b/NHF/src/heap.cpp
@@ -49,6 +49,8 @@ void heap::free(const memnum pid)
 {
 	if(pid<0 || pid>size)
 		throw "Kivétel";//hibakezelés jobban
+	if(!blocks[pid].filled)
+		throw "Érvénytelen pid.";//hibakezelés jobban
 	memnum next_block_idx=pid+blocks[pid].block_size;
 	for(memnum i=pid+1; i<next_block_idx; i++)
 		blocks[i].reset();
@@ -56,8 +58,11 @@ void heap::free(const memnum pid)
 	 * Az új üres blokk méreténél figyelembe kell venni,
 	 * hogy az utána következő blokk telített, illetve,
 	 * hogy az előtte lévő blokk telített-e.
+	 * Ezeket adott esetben össze kell vonni.
+	 * ....====.... -> ............ (Ez a legrosszabb eset.)
 	*/
-	memnum before=0,after=next_block_idx;
+	//Meg kell keresni az éppen kezelt blokk előtti és utáni blok elejét.
+	memnum before=0,&after=next_block_idx;//after úgyis egyenlő nex_block_idx-szel
 	for(memnum i=0; i<size; i+=blocks[i].block_size)
 	{
 		if(i+blocks[i].block_size==pid)
@@ -66,15 +71,18 @@ void heap::free(const memnum pid)
 			break;
 		}
 	}
+	/*
+	 * Meg kell vizsgálni, hogy a kettő közül melyik telítetlen,
+	 * majd a kiválasztott blokk legelejét beállítani egy new_empty_block_size értékére.
+	*/
 	if(!blocks[before].filled)//ha előtte is van üres memóroaterület
 	{
 
 	}
-	blocks[pid].set(false,blocks[pid].block_size+blocks[next_block_idx].block_size);
-	blocks[next_block_idx].reset();
 }
 
 std::ostream& operator<<(std::ostream& os,heap& mem)
+//Még csak teszt jelleggel, a későbbiekben ez a függvény teljesen más funkcíiót fog ellátni.
 {
 	for(memnum i=0; i<mem.size;i++)
 	{
-- 
GitLab