2 * (c) Oleg Puchinin 2006
3 * graycardinalster@gmail.com
10 ëÒÁÔËÏÅ ÏÐÉÓÁÎÉÅ ÔÅÈÎÏÌÏÇÉÉ.
11 ëÌÁÓÓ ÐÒÅÄÎÁÚÎÁÞÅÎ ÄÌÑ ÄÉÎÁÍÉÞÅÓËÏÇÏ ×ÙÄÅÌÅÎÉÑ ÐÁÍÑÔÉ ÉÚ ÓÔÁÔÉÞÅÓËÏÇÏ ÂÕÆÅÒÁ.
14 int init (int size, int count, char * buf, int buf_size);
15 éÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ count "ËÕÓËÏ×" ÐÁÍÑÔÉ ÒÁÚÍÅÒÏÍ size ËÁÖÄÙÊ × ÂÕÆÅÒÅ buf. òÁÚÍÅÒ ÂÕÆÅÒÁ - buf_size.
16 åÓÌÉ buf==NULL, ÂÕÆÅÒ ×ÙÄÅÌÑÅÔÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ, buf_size ÉÇÎÏÒÉÒÕÅÔÓÑ. éÎÁÞÅ buf_size ÄÏÌÖÅÎ ÂÙÔØ ÒÁ×ÅÎ (size * count).
17 ðÁÍÑÔØ ÐÏÄ ÍÅÔÁÄÁÎÎÙÅ (chunks) ×ÙÄÅÌÑÅÔÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ É ×ÎÅ buf;
18 int get_requiredspace (int chunk_size, int count);
19 ÷ÅÒÎÕÔØ ËÏÌÉÞÅÓÔ×Ï ÂÁÊÔ ÎÅÏÂÈÏÄÉÍÏÅ ÄÌÑ ÉÎÉÃÉÁÌÉÚÁÃÉÉ count ËÕÓËÏ× ÒÁÚÍÅÒÏÍ chunk_size.
20 int init_simple (char * heap, int size, int count);
21 áÎÁÌÏÇÉÞÎÏ init, heap ÄÏÌÖÅÎ ÂÙÔØ ÐÒÏÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎ (ÒÁÚÍÅÒÏÍ get_requiredspace).
22 çÌÁ×ÎÏÅ ÏÔÌÉÞÉÅ ÏÔ init - ×ÓÅ ÄÁÎÎÙÅ É ÍÅÔÁÄÁÎÎÙÅ
23 ÎÁÈÏÄÑÔÓÑ × ÏÄÎÏÍ ÂÕÆÅÒÅ. ðÒÅÄÐÏÌÁÇÁÅÔ × ÄÁÌØÎÅÊÛÅÍ ÍÅÔÏÄ load.
26 ÷ÙÄÅÌÉÔØ É ÏÓ×ÏÂÏÄÉÔØ ËÕÓÏË ÐÁÍÑÔÉ ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ. ÷ÙÄÅÌÅÎÉÅ Ó×ÏÄÉÔÓÑ Ë ÕÄÁÌÅÎÉÀ ÜÌÅÍÅÎÔÁ ÓÐÉÓËÁ. ïÓ×ÏÂÏÖÄÅÎÉÅ -
27 ÄÏÂÁ×ÌÅÎÉÅ Ë ÓÐÉÓËÕ Ó×ÏÂÏÄÎÙÈ ÜÌÅÍÅÎÔÏ×.
30 ðÒÏ×ÅÒÉÔØ, ÐÒÉÎÁÄÌÅÖÉÔ ÌÉ ÕËÁÚÁÔÅÌØ ÄÁÎÎÏÍÕ ËÌÁÓÓÕ.
34 áÄÒÅÓ ÎÁ Ó×ÏÂÏÄÎÕÀ ×ÓÀ ×ÙÄÅÌÅÎÎÕÀ ÐÁÍÑÔØ.
36 ïÓ×ÏÂÏÖÄÁÔØ ÌÉ ÂÕÆÅÒ × ÄÅÓÔÒÕËÔÏÒÅ.
38 óÐÉÓÏË ×ÓÅÈ ÜÌÅÍÅÎÔÏ×.
43 __dlist_entry_t * chunks;
44 íÁÓÓÉ× ÚÁÐÉÓÅÊ ×ÉÄÁ __dlist_entry_t6 ÐÏ ÒÁÚÍÅÒÕ ÒÁ×ÅÎ count, ÉÓÐÏØÌÚÕÅÔÓÑ × entries ÓÐÉÓËÅ.