<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="memcntrl.xsl"?>
<CTC_Doc xmlns="x-schema:c_schema.xml">
  <Theme title="Управление памятью">
	  <Topic title="Введение" id="ВВ">
		  <Desc>
			  Управление памятью приложений на нижнем уровне реализуется через 
				иерархическую систему управляющих структур.
			  <L goto="СНУ">Структуры нижнего уровня</L> включают в себя
        <L goto="CTC_AllGroup">головную структуру</L>, 
				структуры <L goto="CTC_AllLoc">групп</L>,	
				<L goto="CTC_BlokLoc">блоков</L>, 
				<L goto="CTC_LocMem">банков</L> и пулов 
  			<L goto="CTC_ElmLoc">сегментов</L> памяти.
				Управление памятью на логическом уровне осуществляется через систему 
				классов <L goto="Handles">хэндлов</L>. 			
			</Desc>
		</Topic>
	  <Topic title="Структуры нижнего уровня" id="СНУ">
		  <Desc>
			  Структуры нижнего уровня и соответствующие им функции реализуют базовый 
				набор средств работы с памятью. 
			</Desc>
			<StructS>
			  <Struct title="Головная структура" id="CTC_AllGroup">
  		    <Desc>
            CTC_AllGroup - головная структура управления памятью на нижнем уровне.
            Структура содержит динамический массив пулов групп памяти mgAllLoc. 
						Каждый пул, в свою очередь, представляет собой массив одинакового 
						числа (<ARP>mgKolGroupInPul</ARP>) структур групп памяти <AL>CTC_AllLoc</AL>.
						<Img src="allgroup.gif"/>
    		  </Desc>
				  <FuncS>
					   <Func id="GetAllGroup" header="ctc_meml.h" category="Управление памятью">
						   <Desc spec="синтаксис">
							   struct CTC_AllGroup* GetAllGroup(void);
						   </Desc>
						   <Desc spec="функция">
                  Проверяет наличие головной управляющей структуры <AL>CTC_AllGroup</AL>. 
									При ее отсутствии заказывает память под нее и производит 
									инициализацию. 						
						   </Desc>
						   <Desc spec="возврат">
  							 Указатель на структуру <AL>CTC_AllGroup</AL>.
							 </Desc>
						   <Desc spec="примеч">
    						 Функция устанавливает число групп в пуле <AL>mgKolGroupInPul</AL>
								 равным 100.
							 </Desc>
						 </Func>
					   <Func id="FreeGroupLoc" header="ctc_meml.h" category="Управление памятью">
						   <Desc spec="синтаксис">
							   int FreeGroupLoc(struct CTC_AllGroup* AllGroup);
						   </Desc>
						   <Desc spec="описание">
                  Освобождает память, заказанную во всех имеющихся в 
									<L goto="CTC_AllGroup">головной структуре</L> AllGroup 
									<L goto="CTC_AllLoc">группах памяти</L>, память из-под самих 
									структур групп памяти и память из-под массива пулов групп. 						 
  					   </Desc>
						   <Desc spec="возврат">
  							 0
							 </Desc>
						   <Desc spec="примеч">
  							 нет.
							 </Desc>
							<ALKS title="вызываемые функции">
  							<ALS>GetAll1Group</ALS>
  							<ALS><AL>FreeAllLoc</AL></ALS>
							</ALKS>
						 </Func>
					</FuncS>
				</Struct>
				<Struct title="Группа" id="CTC_AllLoc">
  		    <Desc>
            Группа памяти представлена структурой CTC_AllLoc.
            Группа включает в себя пулы <L goto="CTC_BlokLoc">блоков</L> 
						памяти и массив <L goto="CTC_LocMem">банков</L> пулов 
						<L goto="CTC_ElmLoc">сегментов</L> памяти. Каждый элемент этого 
						массива используется для выделения сегментов памяти ограниченной 
						фиксированной длины из своих пулов.
            На физическом уровне доступ к группе памяти осуществляется по ее 
						абсолютному (<RP id="IstGroup">физическому</RP>) номеру в разделенном на пулы массиве групп. 
						Нумерация групп начинается с единицы.
            Логический доступ к группе поддерживается с помощью структуры 
						<RP id="TCtcMemGroup">логического номера группы</RP>,
						состоящей из внутреннего номера и <L goto="IstGroup">физического</L> (абсолютного) номера.
						<RP id="LocGroup">Внутренний номер группы</RP> - to be continued.    		
						<Img src="allloc.gif"/>
				  </Desc>
					<FuncS>
					  <Func id="GetAllLoc" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
						    struct CTC_AllLoc* GetAllLoc(CTC_AllGroup *AllGroup,struct TCtcMemGroup Group,int AddGroup=0);
              </Desc>								
						  <Desc spec="описание">
                Поставляет указатель на структуру группы памяти CTC_AllLoc по 
								<L goto="TCtcMemGroup">логическому номеру группы</L> Group.
								Использует <L goto="IstGroup">физический номер</L> группы в случае неактуальности 
								<L goto="LocGroup">внутреннего номера</L>.
								В противном случае использует <L goto="LocGroup">внутренний номер</L>
								для выработки <L goto="IstGroup">физического номера</L>.
								При отсутствии группы с данным <L goto="IstGroup">физическим номером</L> 
								в случае ненулевого значения AddGroup создает ее. 
              </Desc>								
						  <Desc spec="возврат">
                Указатель на структуру CTC_AllLoc или NULL.
						  </Desc>	 
						  <Desc spec="примеч">
  						  <L goto="IstGroup">Физический номер</L> группы должен находиться в пределах выделенного
								пространства номеров групп [1...mgKolDopGroup].
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS>GetAll1Group</ALS>
  							<ALS>GetIstNomGrup</ALS>
							</ALKS>
					  </Func>
					  <Func id="FreeAllLoc" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                int FreeAllLoc(struct CTC_AllLoc* AllLoc);
              </Desc>								
						  <Desc spec="описание">
                Освобождает всю память, заказанную в группе AllLoc, и обнуляет 
  						  структуру <L goto="CTC_AllLoc">группы</L>.             
              </Desc>								
						  <Desc spec="возврат">
                0
						  </Desc>	 
						  <Desc spec="примеч">
  						  При значении счетчика открытий блока больше 1 выдается сообщение
								<Mes>ОСВОБОЖДЕНИЕ НЕЗАКРЫТОГО БЛОКА</Mes>.
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetBlokLoc</AL></ALS>
  							<ALS>FreeDataBlok</ALS>
  							<ALS>GetLocMem</ALS>
  							<ALS>FreeLocMem</ALS>
							</ALKS>
					  </Func>
					  <Func id="FreeGroup" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                int FreeGroup( int Group );
              </Desc>								
						  <Desc spec="описание">
 							  Освобождает всю память, заказанную в <L goto="CTC_AllLoc">группе</L> с 
								<L goto="IstGroup">физическим номером</L> Group.
              </Desc>								
						  <Desc spec="возврат">
                0
						  </Desc>	 
						  <Desc spec="примеч">
  						  Ограничений на значение Group нет.
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetAllGroup</AL></ALS>
  							<ALS>GetAll1Group</ALS>
  							<ALS><AL>FreeAllLoc</AL></ALS>
							</ALKS>
					  </Func>
					  <Func id="FreeGroupL" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                int FreeGroupL( struct TCtcMemGroup Group );														
              </Desc>								
						  <Desc spec="описание">
                Освобождает всю память, заказанную в 
								<L goto="CTC_AllLoc">группе</L> с 
								<L goto="TCtcMemGroup">логическим номером</L> Group.							
              </Desc>								
						  <Desc spec="возврат">
                0
						  </Desc>	 
						  <Desc spec="примеч">
  						  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetAllGroup</AL></ALS>
  							<ALS><AL>GetAllLoc</AL></ALS>
  							<ALS><AL>FreeAllLoc</AL></ALS>
							</ALKS>
					  </Func>
					  <Func id="NewGroupLoc" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                int NewGroupLoc(struct CTC_AllGroup* AllGroup,
                                int KolBlokInPul=1024,
                                int MaxDlinInLocMem=1024);							
              </Desc>								
						  <Desc spec="описание">
                Поставляет <L goto="IstGroup">абсолютный номер</L> свободной
								или новой (в отсутствие свободных) <L goto="CTC_AllLoc">группы</L>
 							  в массиве групп, 
	    				  устанавливая число <L goto="CTC_BlokLoc">блоков</L> в пуле 
								KolBlokInPul и максимальную 
								длину <L goto="CTC_ElmLoc">сегмента</L> памяти MaxDlinInLocMem.							
              </Desc>								
						  <Desc spec="возврат">
                <L goto="IstGroup">Абсолютный номер</L> 
								<L goto="CTC_AllLoc">группы</L> в массиве групп.
						  </Desc>	 
						  <Desc spec="примеч">
  						  При невозможности выделения номера группы выдает сообщение
								<Mes>ОШИБКА RGROUP</Mes>.
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetAllGroup</AL></ALS>
  							<ALS>GetAll1Group</ALS>
  							<ALS><AL>FreeAllLoc</AL></ALS>
							</ALKS>
					  </Func>
					  <Func id="registerGroup" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                int  registerGroup( void );    							
              </Desc>								
						  <Desc spec="описание">
                Поставляет <L goto="IstGroup">абсолютный номер</L> свободной
								или новой (в отсутствие свободных) <L goto="CTC_AllLoc">группы</L>
 							  в массиве групп. 
              </Desc>								
						  <Desc spec="возврат">
                <L goto="IstGroup">Абсолютный номер</L> 
								<L goto="CTC_AllLoc">группы</L> в массиве групп.
						  </Desc>	 
						  <Desc spec="примеч">
  						  То же, что и <AL>NewGroupLoc</AL>.
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetAllGroup</AL></ALS>
  							<ALS><AL>NewGroupLoc</AL></ALS>
							</ALKS>
					  </Func>
					  <Func id="GetIstNomGRP" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                int GetIstNomGRP(struct TCtcMemGroup Group);
              </Desc>								
						  <Desc spec="описание">
                Поставляет <L goto="IstGroup">физический номер</L> группы по ее 
								<L goto="TCtcMemGroup">логическому номеру</L> Group.							
              </Desc>								
						  <Desc spec="возврат">
  							<L goto="IstGroup">Физический номер</L> группы.
						  </Desc>	 
						  <Desc spec="примеч">
  						  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetAllGroup</AL></ALS>
  							<ALS>GetIstNomGrup</ALS>
							</ALKS>
					  </Func>
					</FuncS>
				</Struct>
 				<Struct title="Блок" id="CTC_BlokLoc">
				  <Desc>
            Блок памяти – структура, посредством которой реализуется управление 
						единым куском оперативной памяти заданной длины.
            На физическом уровне доступ к блоку осуществляется через его 
						<RP id="NomBlok">порядковый (физический) номер</RP>
						внутри заданной <L goto="CTC_AllLoc">группы</L>.
  					Нумерация блоков начинается	с единицы.
						<RP id="mmTip">Тип блока</RP> определяется источником заказа 
						памяти для него.
						<P>Тип 0 реализуется при
            длине заказываемого куска, не меньшей <ARP>maMaxDlinInLocMem</ARP>.
						В этом случае память заказывается из общего системного пула оперативной памяти.</P>
            <P>В противном случае реализуется тип 1. Здесь  
  					память берется из определенного <L goto="CTC_LocMem">банка</L> пулов 
						<L goto="CTC_ElmLoc">сегментов</L> памяти, 
						соответствующего заданной длине.</P>
						<P>Тип 2 означает использование блоком дисковой памяти.</P>
						<P>Тип 3 означает, что
						блоку присвоена память, уже предварительно заказанная 
						до получения номера блока (т.н. &quot;чужая&quot; память).</P>					
					</Desc>
					<FuncS>
					  <Func id="NewBlokLoc" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                int NewBlokLoc(struct CTC_AllLoc* AllLoc);							
              </Desc>								
						  <Desc spec="описание">
                Поставляет <L goto="NomBloc">физический номер</L> свободного 
								<L goto="CTC_BlokLoc">блока памяти</L> из 
								<L goto="CTC_AllLoc">группы</L> AllLoc.
								Устанавливает номер следующего свободного блока группы.
								Наращивает счетчик занятых блоков группы.
								Корректирует, при необходимости, максимальный номер занятого блока.
								Устанавливает счетчик открытий блока равным 1.
              </Desc>								
						  <Desc spec="возврат">
  							<L goto="NomBlok">Физический номер</L> блока.
						  </Desc>	 
						  <Desc spec="примеч">
  						  <P>При ненулевом значении счетчика открытий свободного блока
								выдает сообщение <Mes>ПЕРВЫЙ СВОБОДНЫЙ БЛОК НЕ СВОБОДЕН</Mes></P>
								<P>При нулевом значении ссылки у найденного свободного блока на следующий
								свободный блок (это означает, что все блоки после найденного также
								свободны)и значении maMaxUsedBlok (максимальный номер занятого блока), 
								большем найденного номера блока, выдает сообщение 
								<Mes>Свободный блок без ссылки &lt;= maMaxUsedBlok</Mes></P>
								<P>При значении ссылки на следующий свободный блок, превышающем
								maMaxUsedBlok+1, выдает сообщение <Mes>Cсылкa слишком далеко</Mes></P>.      
  						  <P>При ненулевом значении счетчика открытий следующего свободного блока
								выдает сообщение <Mes>Cсылкa на занятый блок</Mes></P>
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetBlokLoc</AL></ALS>
							</ALKS>
					  </Func>
					  <Func id="GetBlokLoc" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                struct CTC_BlokLoc* GetBlokLoc(struct CTC_AllLoc* AllLoc, 
								                               int NomBlok, int AddBlok=0);							
              </Desc>								
						  <Desc spec="описание">
							  При взведенном флаге 0x40000000 номера NomBlok определяет 
								<L goto="NomBlok">физический</L> (порядковый)
								номер блока в <L goto="CTC_AllLoc">группе</L> AllLoc. 
								В противном случае порядковым номером	является NomBlok.
                Поставляет указатель <L goto="CTC_BlokLoc">структуры блока</L> 
								памяти c данным номером из 
								<L goto="CTC_AllLoc">группы</L> AllLoc. При отсутствии блока 
								с таким номером и ненулевом 
								значении AddBlok добавляет блок в группу.							
              </Desc>							
						  <Desc spec="возврат">
                Указатель <L goto="CTC_BlokLoc">структуры блока</L> памяти 
								или NULL.							
						  </Desc>	 
						  <Desc spec="примеч">
  						  <P>Два старших бита номера NomBlok - служебные.</P>
  						  <P>Нулевое значение указателя AllLoc недопустимо.</P>
  						  <P>Порядковый номер блока должен находиться в пределах выделенного
								пространства номеров [1...mgKolDopGroup].</P>
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS>IstNomBlok</ALS>
  							<ALS>AddPulBlok</ALS>
							</ALKS>
					  </Func>
						<Func id="SetLocElm" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                unsigned int SetLocElm(int Dlina,struct TCtcMemGroup Group,void *Adr=NULL);							
							</Desc>
						  <Desc spec="описание">
                Заказывает кусок памяти длиной Dlina для  
								<L goto="CTC_BlokLoc">блока</L> памяти, 
								принадлежащем <L goto="CTC_AllLoc">группе</L> с 
								<L goto="TCtcMemGroup">логическим номером</L> Group, и, 
								в случае ненулевого указателя Adr, заполняет заказанный кусок 
								содержимым памяти по указателю Adr.
								Источник памяти определяется исходя из значения Dlina 
								<L goto="maMaxDlinInLocMem">(см. выше)</L>.							
							</Desc>
						  <Desc spec="возврат">
                <L goto="NomBlok">Физический номер</L> используемого блока 
								памяти или 0 в случае неудачи.							
						  </Desc>	 
						  <Desc spec="примеч">
  						  <P>При невозможности получения структуры группы, соответствующей
								логическому номеру Group (например, нулевом 
								<L goto="IstGroup">физическом номере</L> группы),
								выдает сообщение <Mes>Незарегистрированная группа</Mes>.</P>
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetAllGroup</AL></ALS>
  							<ALS><AL>GetAllLoc</AL></ALS>
  							<ALS><AL>NewBlokLoc</AL></ALS>
  							<ALS><AL>GetBlokLoc</AL></ALS>
  							<ALS>SetElmFromBlok</ALS>
							</ALKS>
						</Func>
						<Func id="GetLocAdrFromBlok" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                void *GetLocAdrFromBlok(struct CTC_AllLoc* AllLoc,int NomBlok,
                                        struct CTC_BlokLoc* Blok,
                                        int Offs=0,int Fix=0);					
  						</Desc>
						  <Desc spec="описание">
                Поставляет указатель на участок куска памяти 
								<L goto="CTC_BlokLoc">блока</L> Blok с 
								<L goto="NomBlok">физическим номером</L> NomBlok в 
								<L goto="CTC_AllLoc">группе</L> 
								AllLoc, смещенный относительно начала куска на Offs байт. 
								При ненулевом младшем бите Fix наращивает счетчик открытий блока.					
							</Desc>
						  <Desc spec="возврат">
                Указатель участка памяти или NULL.							
						  </Desc>	 
						  <Desc spec="примеч">
  						  <P>При нулевом значении указателя Blok выдает сообщение
								<Mes>Обращение к несуществующему блоку</Mes>.</P>
								<P>При нулевом значении счетчика открытий блока выдает сообщение
								<Mes>Обращение к невыделенному блоку</Mes>.</P>
								<P>При отсутствии памяти у блока в зависимости от 
								<L goto="mmTip">типа блока</L> выдает следующие сообщения:</P>
								<P><Mes>Пустые данные при Типе 0</Mes></P>  
								<P><Mes>Нет данных в блоке</Mes> (при типе 1)</P>
								<P><Mes>Нет места для чтения</Mes> (при типе 2)</P>  
								<P><Mes>Пустые данные при Типе 3</Mes></P>
								<P><Mes>Некорректный тип блока</Mes> (при любом другом значении типа)</P>
								<P>При типе 1 и сброшенном флаге занятости <L goto="CTC_ElmLoc">сегмента</L>
								выдает сообщение <Mes>Запрос свободного элемента в блоке</Mes></P>
								<P>При значении Offs, превышающем длину куска памяти блока,
								выдает сообщение <Mes>Обращение за пределы выделенного блока</Mes></P> 
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS>GetInfoBlokFile</ALS>
  							<ALS>SetElmFromBlok</ALS>
  							<ALS><AL>GetLocAdrFromBlok</AL></ALS>
  							<ALS>ReadDataBlokFile</ALS>
  							<ALS>GetLocMem</ALS>
  							<ALS><AL>GetElmLoc</AL></ALS>
							</ALKS>   
						</Func>   
						<Func id="FreeBlokMem" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                unsigned int FreeBlokMem(int NomBlok,struct TCtcMemGroup Group);  					
							</Desc>
						  <Desc spec="описание">
							  При ненулевом значении <L goto="NomBlok">физического номера</L> 
								<L goto="CTC_BlokLoc">блока</L> NomBlok ИЛИ 
								<L goto="IstGroup">физического номера</L>
								группы освобождает всю память, заказанную в 
								<L goto="CTC_BlokLoc">блоке</L> c номером NomBlok в   
								<L goto="CTC_AllLoc">группе</L> с 
								<L goto="TCttcMemGroup">логическим номером</L> Group. 
								Помечает блок как свободный, корректирует соответствующие ссылки 
								и параметры (число занятых блоков, номер последнего занятого блока).							
							</Desc>
						  <Desc spec="возврат">
                Поданный номер блока NomBlok.							
						  </Desc>	 
						  <Desc spec="примеч">
  						  <P>При отсутствии группы, соответствующей логическому номеру Group,
								(например, при нулевом действующем значении физического номера)
								выдает сообщение <Mes>Незарегистрированная группа</Mes>.</P>
								<P>При ошибочном освобождении памяти блока выдает соответствующие сообщения
								(см. <AL>FreeElmFromBlok</AL>).</P>  
								<P>При возникновении ошибочных ситуаций с освобождением блока выдает 
								следующие сообщения (функция FreeBlokLoc):</P>
								<P>при нулевом физическом номере блока NomBlok - <Mes>Освобождение нулевого блока 0</Mes>;</P>
								<P>при нулевом значении указателя на блок - <Mes>Освобождение несуществущего блока</Mes>;</P>
								<P>при нулевом значении счетчика открытий блока - <Mes>Освобождение свободного блока</Mes>;</P>
								<P>при значении счетчика открытий блока больше 1 - <Mes>Освобождение открытого блока</Mes>;</P>
								<P>при значении NomBlok, превышающем максимальный номер занятого блока,
								- <Mes>Освобождаемый Blok > MaxUsedBlok</Mes>;</P>
								<P>при недопустимом значении <L goto="mmTip">типа блока</L> -
								<Mes>Некорректный тип блока</Mes>;</P>    
								<P>при наличии свободного блока с номером меньше NomMem и ненулевом значении
								счетчика открытий этого блока - <Mes>Free.Ссылка на занятый элемент</Mes>;</P>
								<P>при нулевом значении ссылки у найденного предшествующего свободного блока на следующий
								свободный блок (это означает, что все блоки после найденного также
								свободны) и значении maMaxUsedBlok (максимальный номер занятого блока), 
								не меньшем найденного номера блока, выдает сообщение 
								<Mes>Свободный элемент без ссылки &lt; maMaxUsedBlok</Mes>;</P>
								<P>при корректировке максимального номера занятого блока, предшествующего
								освобождаемому, и нулевом указателе на этот предшествующий блок -
								<Mes>Free.Почему-то Blok==NULL</Mes>.</P>
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetAllGroup</AL></ALS>
  							<ALS><AL>GetAllLoc</AL></ALS>
  							<ALS><AL>GetBlokLoc</AL></ALS>
  							<ALS><AL>FreeElmFromBlok</AL></ALS>
  							<ALS>FreeBlokLoc</ALS>
							</ALKS>   
						</Func>
						<Func id="FreeElmFromBlok" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                unsigned int FreeElmFromBlok(struct CTC_AllLoc* AllLoc,
                                             struct CTC_BlokLoc *Blok);							
							</Desc>
						  <Desc spec="описание">
                Освобождает всю память заказанную в 
								<L goto="CTC_BlokLoc">блоке</L> Blok 
								<L goto="CTC_AllLoc">группы</L> AllLoc.							
							</Desc>
						  <Desc spec="возврат">
							  0
						  </Desc>	 
						  <Desc spec="примеч">
								<P>При возникновении ошибочных ситуаций с освобождением памяти блока выдает 
								следующие сообщения:</P>
								<P>при нулевом значении указателя Blok - <Mes>Освобождение несуществущего блока</Mes>;</P>
								<P>при нулевом значении счетчика открытий блока - <Mes>Освобождение невыделенного блока</Mes>;</P>
								<P>при значении счетчика открытий блока больше 1 - <Mes>Освобождение незакрытого блока</Mes>;</P>
								<P>при недопустимом значении <L goto="mmTip">типа блока</L> -
								<Mes>Некорректный тип блока</Mes>.</P>    
								<P>При возникновении ошибочных ситуаций с освобождением <L goto="CTC_ElmLoc">сегмента</L> выдает 
								следующие сообщения (функция FreeElmLoc):</P>
								<P>при нулевом значении указателя на сегмент - <Mes>Освобождение несуществущего элемента</Mes>;</P>
								<P>при сброшенном флаге занятости сегмента - <Mes>Освобождение свободного элемента</Mes>;</P>
								<P>при значении номера сегмента, превышающем максимальный номер занятого сегмента,
								- <Mes>Освобождаемый элемент > MaxUsedElm</Mes>;</P>
								<P>при наличии свободного сегмента с номером меньше номера освобождаемого сегмента
							  и взведенном флаге занятости этого свободного сегмента -
								<Mes>Free.Ссылка на занятый элемент</Mes>;</P>
								<P>при нулевом значении ссылки у найденного предшествующего свободного сегмента на следующий
								свободный сегмент (это означает, что все сегменты после найденного также
								свободны) и значении максимальногономер занятого сегмента, 
								не меньшем найденного номера, выдает сообщение 
								<Mes>Свободный элемент без ссылки &lt; maMaxUsedElm</Mes>;</P>
								<P>при корректировке максимального номера занятого сегмента, предшествующего
								освобождаемому, и нулевом указателе на этот предшествующий сегмент -
								<Mes>Free.Почему-то Elm==NULL</Mes>.</P>
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS>GetLocMem</ALS>
  							<ALS>FreeElmLoc</ALS>
							</ALKS>   
						</Func>
						<Func id="LGetDlElm" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                unsigned int LGetDlElm(struct TCtcMemGroup Group,unsigned Index);							
							</Desc>
						  <Desc spec="описание">
                Поставляет длину куска памяти в 
								<L goto="CTC_BlokLoc">блоке</L> с 
								<L goto="NomBlok">физическим номером</L> Index из 
								<L goto="CTC_AllGroup">группы</L> с 
								<L goto="TCtcMemGroup">логическим номером</L> Group.							
							</Desc>
						  <Desc spec="возврат">
							  Длина куска памяти или 0 при нулевом значении Index.
						  </Desc>	 
						  <Desc spec="примеч">
  						  <P>При отсутствии группы, соответствующей логическому номеру Group,
								(например, при нулевом действующем значении физического номера)
								выдает сообщение <Mes>GetDlElm.Незарегистрированная группа</Mes>.</P>
								<P>При недопустимом значении <L goto="mmTip">типа блока</L> 
								выдает сообщение <Mes>Некорректный тип блока</Mes>(функция GetDlElmFromBlok).</P>    
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetAllGroup</AL></ALS>
  							<ALS><AL>GetAllLoc</AL></ALS>
  							<ALS><AL>GetBlokLoc</AL></ALS>
  							<ALS>GetDlElmFromBlok</ALS>
							</ALKS>   
						</Func>
						<Func id="LAddLocElm" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                unsigned int LAddLocElm(struct TCtcMemGroup &amp;Group,unsigned &amp;Index,
                                        int AddDlin,void *AdrAdd=NULL);							
							</Desc>
						  <Desc spec="описание">
                Расширяет длину куска памяти в <L goto="CTC_BlokLoc">блоке</L> 
								с номером Index из <L goto="CTC_AllLoc">группы</L> с 
								<L goto="TCtcMemGroup">логическим номером</L> Group на 
								величину AddDlin и при ненулевом значении указателя AdrAdd 
								заполняет добавленную память содержимым памяти по этому указателю.
								При отрицательном значении AddDlin добавленный участок пристыковывается
								к началу куска памяти, при положительном - к концу.  
								При нулевом значении Index генерирует новый блок в заданной группе,
								заказывая для него кусок памяти длиной AddDlin.							
							</Desc>
						  <Desc spec="возврат">
							  0
						  </Desc>	 
						  <Desc spec="примеч">
							  <P>Расширение куска памяти для блока, имеющего <L goto="mmTip">тип</L> 3 
								(&quot;чужая&quot; память), ЗАПРЕЩЕНО. При попытке сделать это выдается
								сообщение <Mes>Попытка расширить блок типа 3</Mes>.</P>
								<P>При недопустимом значении <L goto="mmTip">типа блока</L> 
								выдает сообщение <Mes>Некорректный тип блока</Mes>.</P>    
							  <P>При нулевом значении Index функция генерирует 
								новый блок и возвращает с параметром Index его 
								<L goto="NomBlok">физический номер</L>. 
  						  При этом функция может изменить значение 
								<L goto="TCtcMemGroup">логического номера</L> группы Group,
  							актуализируя в этом случае <L goto="IstGroup">физический номер</L> группы.</P>
								<P>При нулевом значении физического номера группы, входящего в Group,
								выдает сообщение <Mes>Нулевая  группа\nФАТАЛЬНО</Mes>.</P>
  						  <P>При отсутствии группы, соответствующей поданному или сгенерированному 
								логическому номеру,
								(например, при нулевом действующем значении физического номера)
								выдает сообщение <Mes>AddLocElm.Незарегистрированная группа</Mes>.</P>
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetIstNomGRP</AL></ALS>
							  <ALS><AL>SetLocElm</AL></ALS>
								<ALS><AL>GetAllGroup</AL></ALS>
								<ALS><AL>GetAllLoc</AL></ALS>
								<ALS><AL>GetBlokLoc</AL></ALS>
								<ALS>GetDlElmFromBlok</ALS>
								<ALS>ReallocMem</ALS>
								<ALS><AL>GetLocAdrFromBlok</AL></ALS>
								<ALS>FreeBlokLoc</ALS>
							</ALKS>
						</Func>
				  </FuncS>		
				</Struct>
 				<Struct title="Банк сегментов" id="CTC_LocMem">
				  <Desc>
            Банк <L goto="CTCElmLoc">сегментов</L> – структура, поддерживающая 
						выделение куска памяти 
					  фиксированной для данного банка длины (сегмента) из предварительно 
 					  заказанного массива памяти большего размера.
            Максимальная длина данных в сегменте ограничена значением 
	  			  maMaxDlinInLocMem, задаваемом функцией <AL>NewGroupLoc</AL>.					
					</Desc>
				</Struct>
 				<Struct title="Сегмент" id="CTC_ElmLoc">
				  <Desc>
            Сегмент – элементарная структура нижнего уровня, состоящая из флага 
						и следующего за ним куска памяти. Сегмент выделяется из предварительно 
						заказанного массива памяти, содержащегося в 
						<L goto="CTC_LocMem">банке</L> сегментов.
						Минимальная длина сегмента - 5 байт.					
					</Desc>
					<FuncS>
						<Func id="GetElmLoc" header="ctc_meml.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                struct CTC_ElmLoc *GetElmLoc(struct CTC_AllLoc* AllLoc,
                                             struct CTC_LocMem *LocMem,
                                             int NomElm,int AddElm=0);							
							</Desc>
						  <Desc spec="описание">
                Поставляет указатель <L goto="CTC_ElmLoc">структуры сегмента</L>
						    памяти c номером NomElm 
								из <L goto="CTC_LocMem">банка</L> сегментов LocMem 
								<L goto="CTC_AllLoc">группы</L> AllLoc. При отсутствии сегмента 
								с таким номером и ненулевом значении AddElm добавляет сегмент в банк.							
							</Desc>
						  <Desc spec="возврат">
                Указатель <L goto="CTC_ElmLoc">структуры сегмента</L> 
								памяти или NULL.							
						  </Desc>	 
						  <Desc spec="примеч">
  						  <P>Номер сегмента NomElm должен находиться в пределах выделенного
								пространства номеров [0...glKolDopElm].</P>
						  </Desc>
						</Func>
				  </FuncS>		
				</Struct>
			</StructS>
		</Topic>
		<Topic title="Хэндлы" id="Handles">
		  <Desc>
			  Хэндл - структура, представляющая собой дескриптор 
				<L goto="CTC_BlokLoc">блока</L> памяти.
				Хэндл содержит <L goto="TCtcMemGroup">логический номер</L> 
				<L goto="CTC_AllLoc">группы</L> 
				и <RP id="Index">индекс</RP> – <L goto="NomBlok">физический номер</L> 
				<L goto="CTC_BlokLoc">блока</L> в 
				<L goto="CTC_AllLoc">группе</L>.  
				Хэндлы являются инструментом
				логического доступа к памяти из приложений.
				Программно хэндлы реализованы в виде иерархической системы классов с 
				соответствующими функциями (методами) и операторами.
			</Desc>
			<ClasseS>
			  <Class title="Базовый хэндл" id="TCtcMemHandl">
				  <Desc>
					  Базовый хэндл является основой иерархической системы хэндлов.
						Через него осуществляются общие операции работы с памятью. 
						Посредством базового хэндла память адресуется с точностью до байта.  
					</Desc>
					<FuncS>
					  <Func id="SetLoc" header="locmem.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                TCtcMemHandl SetLoc(int Dlina,struct TCtcMemGroup Group,void *Adr=NULL);							
              </Desc>						
						  <Desc spec="описание">
                Заказывает кусок памяти длиной Dlina в 
								<L goto="CTC_AllLoc">группе</L> 
								памяти с <L goto="TCtcMemGroup">логическим номером</L> Group 
								и, в случае ненулевого указателя Adr, заполняет заказанный кусок 
								содержимым памяти по указателю Adr.							
              </Desc>						
						  <Desc spec="возврат">
                Хэндл <L goto="CTC_BlokLoc">блока</L> памяти.							
						  </Desc>	 
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetIstNomGRP</AL></ALS>
							  <ALS><AL>SetLocElm</AL></ALS>
							</ALKS>
						</Func>
					  <Func id="AssignLoc" header="locmem.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                TCtcMemHandl AssignLoc(void *adr,struct TCtcMemGroup Group,int Dlina=0);							
              </Desc>						
						  <Desc spec="описание">
                Выделяет <L goto="NomBlok">номер</L> <L goto="CTC_BlokLoc">блока</L> в 
								<L goto="CTC_AllLoc">группе</L> памяти с 
								<L goto="TCtcMemGroup">логическим номером</L> Group и 
								присваивает этому блоку кусок памяти по указателю adr длиной Dlina.
								Таким образом, полученный блок имеет 
								<L goto="mmTip">тип</L> 3 (&quot;чужая&quot; память). 							
              </Desc>						
						  <Desc spec="возврат">
							  Хэндл <L goto="CTC_BlokLoc">блока</L> памяти.
						  </Desc>	 
						  <Desc spec="примеч">
  						  <P>При отсутствии группы, соответствующей логическому номеру Group,
								(например, при нулевом действующем значении физического номера)
								выдает сообщение <Mes>Незарегистрированная группа</Mes>.</P>
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetAllGroup</AL></ALS>
  							<ALS><AL>GetAllLoc</AL></ALS>
  							<ALS><AL>NewBlokLoc</AL></ALS>
  							<ALS><AL>GetBlokLoc</AL></ALS>
							</ALKS>   
						</Func>
					  <Func id="FreeLoc" header="locmem.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                unsigned int FreeLoc(TCtcMemHandl &amp;Handl);							
              </Desc>						
						  <Desc spec="описание">
							  Проверяет старший бит <L goto="Index">индекса</L> хэндла.
								При нулевом значении этого бита освобождает кусок памяти, 
								представленный хэндлом Handl.							
              </Desc>						
						  <Desc spec="возврат">
                0-старший бит индекса хэндла равен нулю, память освобождена;
                1-старший бит индекса хэндла равен единице.							
						  </Desc>	 
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>FreeBlokMem</AL></ALS>
							</ALKS>   
						</Func>
					  <Func id="GetLocAdr" header="locmem.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                void *GetLocAdr(TCtcMemHandl Handl,int Offs=0,int Fix=0);							
              </Desc>						
						  <Desc spec="описание">
                Поставляет указатель на участок куска памяти, 
								представленный <L goto="TCtcMemHandl">хэндлом</L> Handl, 
								со смещением Offs от начала куска. 
								При взведенном младшем бите Fix наращивает счетчик открытий 
								соответствующего блока.							
              </Desc>						
						  <Desc spec="возврат">
                Указатель участка куска памяти хэндла или NULL (в этом случае
								выдается сообщение об обращении к несуществующему блоку памяти).							
						  </Desc>	 
						  <Desc spec="примеч">
							  <P>При отсутствии у хэндла Handl блока выдает сообщение
								<Mes>Обращение к несуществующему блоку</Mes>.</P> 
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetAllGroup</AL></ALS>
  							<ALS><AL>GetAllLoc</AL></ALS>
  							<ALS><AL>GetBlokLoc</AL></ALS>
  							<ALS><AL>GetLocAdrFromBlok</AL></ALS>
							</ALKS>   
						</Func>
					  <Func id="PutLoc" header="locmem.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                int PutLoc(TCtcMemHandl &amp;Handl,int Offs,int Dl,char *Adr);							
              </Desc>						
						  <Desc spec="описание">
							  При отсутствии у представленного <L goto="TCtcMemHandl">хэндлом</L> Handl
								<L goto="CTC_BlokLoc">блока</L> 
								участка памяти длиной Dl, смещенного от начала
								куска памяти на Offs байт, наращивает кусок до требуемой длины и  
                копирует содержимое памяти по указателю Adr в заданный участок куска 
								памяти. 
              </Desc>						
						  <Desc spec="возврат">
							  0
						  </Desc>	 
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла Handl (отсутствии блока памяти) 
								генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти длины Dl. 
								В этом случае функция изменяет значение хэндла Handl, изменив в нем
								<L goto="Index">индекс</L> хэндла и, возможно,  
								<L goto="CTC_AllLoc">логический номер</L> группы посредством 
								вызова функции <AL>LAddLocElm</AL>.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>ReallocLocElm</AL></ALS>
								<ALS><AL>GetLocAdr</AL></ALS>
							</ALKS>
						</Func>
					  <Func id="IniLocAdr" header="locmem.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                void *IniLocAdr(TCtcMemHandl Handl);							
              </Desc>						
						  <Desc spec="описание">
                Открывает <L goto="TCtcMemHandl">хэндл</L>, т.е. поставляет 
								указатель куска памяти, 
								представленный хэндлом Handl, и наращивает счетчик открытий 
								соответствующего <L goto="CTC_BlokLoc">блока</L>.              
							</Desc>						
						  <Desc spec="возврат">
                Указатель куска памяти хэндла или NULL.						 
  					  </Desc>	 
						  <Desc spec="примеч">
  						  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
								<ALS><AL>GetLocAdr</AL></ALS>
							</ALKS>
						</Func>
					  <Func id="OutLocAdr" header="locmem.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                int OutLocAdr(TCtcMemHandl Handl);            
						  </Desc>						
						  <Desc spec="описание">
                Уменьшает на единицу счетчик открытий 
								<L goto="CTC_BlokLoc">блока</L>, 
								соответствующего <L goto="TCtcMemHanle">хэндлу</L> Handl.		              
							</Desc>						
						  <Desc spec="возврат">
                Результирующее значение счетчика открытий.  					 
 						  </Desc>	 
						  <Desc spec="примеч">
  						  <P>Блок должен существовать физически, иначе выдается сообщение
								<Mes>Закрытие несуществующего блока</Mes>.</P>
								<P>Блок должен быть связан с куском памяти, иначе выдается сообщение
								<Mes>Закрытие блока без адреса</Mes>.</P>
								<P>Счетчик открытий блока должен превышать 1, иначе выдается сообщение
								<Mes>Закрытие неоткрытого блока</Mes>.</P>
						  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>GetAllGroup</AL></ALS>
  							<ALS><AL>GetAllLoc</AL></ALS>
  							<ALS><AL>GetBlokLoc</AL></ALS>
							</ALKS>   
						</Func>
					  <Func id="ReallocLocElm" header="locmem.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                unsigned int ReallocLocElm(TCtcMemHandl &amp;Handl,int DlNew,
                                           void *AdrAdd=NULL);							
						  </Desc>						
						  <Desc spec="описание">
                При значении DlNew, превышающей текущую длину куска памяти 
								<L goto="TCtcMemHandl">хэндла</L> Handl, наращивает текущую 
								длину куска до требуемой величины. 
								При ненулевом значении AdrAdd копирует содержимое памяти по 
								AdrAdd длиной DlNew в кусок памяти хэндла.							
							</Desc>						
						  <Desc spec="возврат">
							  0
 						  </Desc>	 
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла Handl  
								(т.е. отсутствии блока памяти) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти длины DlNew. 
								В этом случае функция изменяет значение хэндла Handl, изменив в нем
								индекс хэндла и, возможно,  
								<L goto="CTC_AllLoc">логический номер</L> группы посредством 
								вызова функции <AL>LAddLocElm</AL>.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>GetDlElm</AL></ALS>
								<ALS><AL>GetAllGroup</AL></ALS>
								<ALS><AL>GetAllLoc</AL></ALS>
								<ALS><AL>GetBlokLoc</AL></ALS>
								<ALS><AL>AddLocElm</AL></ALS>
								<ALS><AL>PutLoc</AL></ALS>
							</ALKS>
						</Func>
					  <Func id="ReplaceLocElm" header="locmem.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                unsigned int ReplaceLocElm(TCtcMemHandl Handl,int DlNew,void *AdrAdd);							
						  </Desc>						
						  <Desc spec="описание">
							  Выполняет те же действия, что и функция <AL>ReallocLocElm</AL>. 
							</Desc>						
						  <Desc spec="возврат">
							  0
 						  </Desc>	 
						  <Desc spec="примеч">
							  То же, что и для функции <AL>ReallocLocElm</AL>. 
						  </Desc>
						</Func>
					  <Func id="AddLocElm" header="locmem.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                unsigned int AddLocElm(TCtcMemHandl &amp;Handl,int AddDlin,void *AdrAdd=NULL);							
						  </Desc>						
						  <Desc spec="описание">
                Расширяет длину куска памяти <L goto="TCtcMemHandl">хэндла</L> 
								Handl на величину AddDlin c
								конца куска при положительном значении AddDlin или на величину
								-AddDlin с начала куска при отрицательном значении AddDlin.
								При ненулевом значении указателя AdrAdd заполняет добавленную 
								память содержимым памяти по этому указателю.
								При отсутствии <L goto="CTC_BlokLoc">блока памяти</L> у 
								поданного хэндла генерирует новый блок.							
							</Desc>						
						  <Desc spec="возврат">
							  0
 						  </Desc>	 
						  <Desc spec="примеч">
							  Функция изменяет значение хэндла Handl при генерации нового
								блока памяти. 
						  </Desc>
							<ALKS title="вызываемые функции">
                <ALS><AL>LAddLocElm</AL></ALS>							  
							</ALKS>
						</Func>
					  <Func id="GetDlElm" header="locmem.h" category="Управление памятью">
						  <Desc spec="синтаксис">
                unsigned int GetDlElm(TCtcMemHandl Handl);							
						  </Desc>						
						  <Desc spec="описание">
                Поставляет длину куска памяти <L goto="TCtcMemHandl">хэндла</L> Handl.							
							</Desc>						
						  <Desc spec="возврат">
							  Длина куска памяти хэндла Handl или 0 при нулевых значениях
								<L goto="IstGroup">физического номера</L> <L goto="CTC_AllLoc">группы</L> и 
								<L goto="Index">индекса</L> хэндла.
 						  </Desc>	 
						  <Desc spec="примеч">
							  нет.
						  </Desc>
						</Func>
					</FuncS>
					<MFuncS title="Методы">
					  <MFunc id="TCtcMemHandl::TCtcMemHandl(void)" header="locmem.h">
						  <Desc spec="синтаксис">
                TCtcMemHandl::TCtcMemHandl(void);
 						  </Desc>						
						  <Desc spec="описание">
                Конструктор по умолчанию. Создает <L goto="TCtcMemHandl">хэндл</L>
							  и инициализирует все его поля нулями.
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
						</MFunc>
					  <MFunc id="TCtcMemHandl::Ini()" header="locmem.h">
						  <Desc spec="синтаксис">
                char* TCtcMemHandl::Ini();
 						  </Desc>						
						  <Desc spec="описание">
                Открывает <L goto="TCtcMemHandl">хэндл</L>, поставляя 
								указатель на кусок его памяти и наращивая счетчик открытий.
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>IniLocAdr</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::Adr(int)" header="locmem.h">
						  <Desc spec="синтаксис">
                char* TCtcMemHandl::Adr(int Beg=0);
						  </Desc>						
						  <Desc spec="описание">
                Поставляет указатель на участок куска памяти 
								<L goto="TCtcMemHandl">хэндла</L> со смещением Beg.							
							</Desc>						
						  <Desc spec="примеч">
							  При отсутствии <L goto="CTC_BlokLoc">блока памяти</L> хэндла 
								выдает сообщение об обращении
								к несуществующему блоку памяти и возвращает NULL.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>GetLocAdr</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::Clear(void)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::Clear(void);
						  </Desc>						
						  <Desc spec="описание">
							  Обнуляет все поля <L goto="TCtcMemHandl">хэндла</L>.
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
						</MFunc>
					  <MFunc id="TCtcMemHandl::Set(int,int,void*)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::Set(int Dl,int NGroup,void *Adr=NULL);							
						  </Desc>						
						  <Desc spec="описание">
							  Генерирует для <L goto="TCtcMemHandl">хэндла</L> 
								<L goto="CTC_BlokLoc">блок</L> памяти	в
								<L goto="CTC_AllLoc">группе</L> с 
								<L goto="IstGroup">физическим номером</L> NGroup, 
								заказывает для этого блока кусок памяти длиной Dl 
								и копирует в него содержимое 
								памяти по Adr в случае его ненулевого значения. 							
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>SetLoc</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::Set(int,TCtcMemGroup,void*)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::Set(int Dl,struct TCtcMemGroup Group,void *Adr=NULL);							
						  </Desc>						
						  <Desc spec="описание">
							  Генерирует для <L goto="TCtcMemHandl">хэндла</L> 
								<L goto="CTC_BlokLoc">блок</L> памяти
        				в	<L goto="CTC_AllLoc">группе</L> с 
								<L goto="TCtcMemGroup">логическим номером</L> Group, 
								заказывает для этого блока кусок памяти длиной Dl 
								и копирует в него содержимое 
								памяти по Adr в случае его ненулевого значения. 							
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>SetLoc</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::NEW(int,int,void*)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::NEW(int NGroup,int Dl,void *Adr=NULL);							
						  </Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>TCtcMemHandl::Set(int,int,void*)</AL>. 
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::Set(int,int,void*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::NEW(TCtcMemGroup,int,void*)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::NEW(struct TCtcMemGroup Group,int Dl,void *Adr=NULL);
						  </Desc>						
						  <Desc spec="описание">
							  То же,что и TCtcMemHandl::Set(int,TCtcMemGroup,void*).
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::Set(int,TCtcMemGroup,void*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::Free(void)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::Free(void);
						  </Desc>						
						  <Desc spec="описание">
                Освобождает кусок памяти <L goto="TCtcMemHandl">хэндла</L> 
								и обнуляет его поля.
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>FreeLoc</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::KolElm(void)" header="locmem.h">
						  <Desc spec="синтаксис">
                int TCtcMemHandl::KolElm(void);
							</Desc>						
						  <Desc spec="описание">
                Поставляет длину куска памяти <L goto="TCtcMemHandl">хэндла</L>. 							
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>GetDlElm</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::Realloc(int,void*)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::Realloc(int KolElm,void *Adr);
							</Desc>						
						  <Desc spec="описание">
                 Увеличивает текущую длину куска памяти 
								 <L goto="TCtcMemHandl">хэндла</L> до значения KolElm 
								 и копирует в него содержимое памяти по указателю Adr.							
							</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла  
								(т.е. отсутствии блока памяти у хэндла) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти длины KolElm. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>ReallocLocElm</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::Replace(int,void*)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::Replace(int KolElm,void *Adr);
							</Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>TCtcMemHandl::Realloc(int,void*)</AL>.
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>TCtcMemHandl::Realloc(int,void*)</AL>.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>ReallocLocElm</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::Put(int,int,void*)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::Put(int BegElm,int KolElm,void *Adr);
							</Desc>						
						  <Desc spec="описание">
                При превышении суммой BegElm+KolElm текущей длины куска памяти 
								<L goto="TCtcMemHandl">хэндла</L> наращивает ее до значения 
								BegElm+KolElm байт и при ненулевом значении Adr копирует в  
								смещенный на BegElm байт участок содержимое памяти по Adr длиной 
								KolElm байт. 
								В противном случае обнуляет данный участок.
					  	</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении <L goto="Index">индекса</L> хэндла  
								(т.е. отсутствии связанного с хэндлом блока памяти) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти длины BegElm+KolElm байт. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::Replace(int,void*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::Add(int,void*)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::Add(int KolElm,void *Adr);
							</Desc>						
						  <Desc spec="описание">
                Расширяет текущую длину куска памяти 
								<L goto="TCtcMemHandl">хэндла</L> на величину KolElm с
                конца куска при положительном значении KolElm или на величину
								-KolElm с начала куска при отрицательном значении KolElm.
 								При ненулевом значении указателя Adr заполняет добавленную 
								память содержимым памяти по этому указателю.
								При отсутствии <L goto="CTC_BlokLoc">блока</L> памяти у 
								поданного хэндла генерирует новый блок.							
					  	</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла  
								(т.е. отсутствии блока памяти у хэндла) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти длины KolElm. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>AddLocElm</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::Insert(int,int,void*)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::Insert(int BegElm,int KolElm,void *Adr);
							</Desc>						
						  <Desc spec="описание">
							  При значении BegElm меньше текущей длины куска памяти 
								<L goto="TCtcMemHandl">хэндла</L>
                расширяет текущую длину куска памяти хэндла на KolElm байт, 
								перенося содержимое куска со смещения BegElm на KolElm байт.
								В противном случае наращивает текущую длину куска памяти хэндла 
								до значения BegElm+KolElm байт. 
                При ненулевом значении Adr вставляет в кусок памяти, начиная со 
								смещения BegElm байт, содержимое памяти по Adr длиной KolElm байт. 
								В противном случае обнуляет вставленный участок. 					  	
							</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла  
								(т.е. отсутствии блока памяти у хэндла) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти длины BegElm+KolElm. 
						  </Desc>
							<ALKS title="вызываемые функции">
   							<ALS><AL>TCtcMemHandl::Add(int,void*)</AL></ALS>
							  <ALS><AL>TCtcMemHandl::Adr(int)</AL></ALS>
								<ALS><AL>TCtcMemHandl::Put(int,int,void*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::SetReference(TCtcMemHandl,int)" header="locmem.h">
						  <Desc spec="синтаксис">
                int TCtcMemHandl::SetReference(TCtcMemHandl HAdd, int NomRef);							
							</Desc>						
						  <Desc spec="описание">
							  To be done
							</Desc>						
						  <Desc spec="примеч">
							  To be done
						  </Desc>
							<ALKS title="вызываемые функции">
                <ALS><AL>GetAllGroup</AL></ALS>
								<ALS><AL>GetAllLoc</AL></ALS>
								<ALS><AL>GetBlokLoc</AL></ALS>							
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::IsMult(TCtcMemHandl)" header="locmem.h">
						  <Desc spec="синтаксис">
                int TCtcMemHandl::IsMult(TCtcMemHandl HAdd);							
							</Desc>						
						  <Desc spec="описание">
							  Устанавливает признак <L goto="TMultMemHandl">мультихэндла</L> 
								в <L goto="CTC_BlokLoc">блоке</L> памяти 
								<L goto="TCtcMemHandl">хэндла</L> HAdd.
							</Desc>						
						  <Desc spec="примеч">
						  </Desc>
							<ALKS title="вызываемые функции">
                <ALS><AL>GetAllGroup</AL></ALS>
								<ALS><AL>GetAllLoc</AL></ALS>
								<ALS><AL>GetBlokLoc</AL></ALS>							
							</ALKS>
						</MFunc>
					</MFuncS>
					<MFuncS title="Операторы">
					  <MFunc id="TCtcMemHandl::operator=(int)" header="locmem.h">
						  <Desc spec="синтаксис">
                void TCtcMemHandl::operator=(int h);
 						  </Desc>						
						  <Desc spec="описание">
                Обнуляет <L goto="Index">индекс</L> 
								<L goto="TCtcMemHandl">хэндла</L>. 
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
						</MFunc>
					  <MFunc id="TCtcMemHandl::operator=(const TCtcMemHandl&amp;)" header="locmem.h">
						  <Desc spec="синтаксис">
                 TCtcMemHandl&amp; TCtcMemHandl::operator=(const TCtcMemHandl &amp;h);							
 						  </Desc>						
						  <Desc spec="описание">
                При действительном <L goto="IstGroup">физическом номере</L> 
								<L goto="CTC_AllLoc">группы</L> 
								<L goto="TCtcMemHandl">хэндла</L> копирует поля
								хэндла h в соответствующие поля хэндла.
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
                <ALS><AL>GetIstNomGRP</AL></ALS>
								<ALS><AL>SetInternalGroup</AL></ALS>
								<ALS><AL>GetBlokLoc</AL></ALS>							
							</ALKS>
						</MFunc>
					  <MFunc id="TCtcMemHandl::operator>(const unsigned int&amp;)" header="locmem.h">
						  <Desc spec="синтаксис">
                 bool TCtcMemHandl::operator >(const  unsigned int &amp;h  );							
 						  </Desc>						
						  <Desc spec="описание">
							При ненулевом <L goto="IstGroup">физическом номере</L> 
								<L goto="CTC_AllLoc">группы</L> 
								<L goto="TCtcMemHandl">хэндла</L>
								и значении
								<L goto="Index">индекса</L> хэндла (при сброшенном старшем бите) 
								больше h возвращает 
								значение ИСТИНА, в противном случае - ЛОЖЬ. 
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
						</MFunc>
					  <MFunc id="TCtcMemHandl::operator==(const unsigned int&amp;)" header="locmem.h">
						  <Desc spec="синтаксис">
                bool TCtcMemHandl::operator == (const unsigned int &amp;h)							
 						  </Desc>						
						  <Desc spec="описание">
                При равенстве значении <L goto="Index">индекса</L> 
								(при сброшенном старшем бите) хэндла 
								значению h возвращает значение ИСТИНА, в противном случае - ЛОЖЬ; 
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
						</MFunc>
					  <MFunc id="TCtcMemHandl::operator&lt;&lt;=(TCtcMemHandl&amp;)" header="locmem.h">
						  <Desc spec="синтаксис">
                TCtcMemHandl&amp; TCtcMemHandl::operator&lt;&lt;=(TCtcMemHandl &amp;h);							
 						  </Desc>						
						  <Desc spec="описание">
                Возвращает ссылку на <L goto="TCtcMemHandl">хэндл</L>, 
								взводя старший бит <L goto="Index">индекса</L> хэндла h.
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
						</MFunc>
					  <MFunc id="TCtcMemHandl::operator|=(const TCtcMemHandl&amp;)" header="locmem.h">
						  <Desc spec="синтаксис">
                TCtcMemHandl&amp; TCtcMemHandl::operator|=(const TCtcMemHandl &amp;h);
 						  </Desc>						
						  <Desc spec="описание">
                Возвращает ссылку на <L goto="TCtcMemHandl">хэндл</L>, 
								копируя в него поля хэндла h и 
								в случае, если операнды не являются одним и тем же хэндлом, 
								взводит старший бит первого операнда (т.е. стоящего в левой части).
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
						</MFunc>
					  <MFunc id="TCtcMemHandl::operator()(const int)" header="locmem.h">
						  <Desc spec="синтаксис">
                char* TCtcMemHandl::operator ()(const int Index);							
 						  </Desc>						
						  <Desc spec="описание">
                Поставляет указатель на кусок памяти <L goto="TCtcMemHandl">хэндла</L> 
								со смещением Index байт от начала куска без наращивания 
								счетчика открытий хэндла. 
							</Desc>						
						  <Desc spec="примеч">
							  При отсутствии <L goto="CTC_BlokLoc">блока</L> памяти хэндла 
								выдает сообщение (обращение к несуществующему блоку) и
								возвращает NULL.
						  </Desc>
							<ALKS title="вызываемые функции">
                <ALS><AL>GetLocAdr</AL></ALS>
							</ALKS>
						</MFunc>
					</MFuncS>
				</Class>
			  <Class title="Типизированные хэндлы" id="NAME_LOCCL">
				  <Desc>
					  Типизированные хэндлы наследуют все методы и операторы 
						<L goto="TCtcMemHandl">базового хэндла</L>.
						Элементом памяти, адресуемым с помощью типизированного хэндла, является
						объект определенного типа. 
						Существуют следующие классы типизированных хэндлов:
						<DefList id="NAME_LOCCLS">
						  <DefListHd> 
  						  <Desc>Класс (условный класс NAME_LOCCL)</Desc>
								<Desc>Тип элемента (условный тип <ARP>TIP_LOC</ARP>)</Desc>  
 							</DefListHd>
							<DefListEl>
  						  <Desc><ARP>TMemChar</ARP></Desc><Desc>char</Desc>  
  						  <Desc>TMemShort</Desc><Desc>short</Desc>  
  						  <Desc>TMemInt</Desc><Desc>int</Desc>  
  						  <Desc>TMemFloat</Desc><Desc>float</Desc>  
  						  <Desc>TMemDouble</Desc><Desc>double</Desc>  
  						  <Desc>TMultMemHandl</Desc><Desc><AL>TCtcMemHandl</AL></Desc>  
 							</DefListEl>
						</DefList>
						<P>
						  Класс <RP id="TMultMemHandl">TMultMemHandl или мультихэндл</RP> 
							заслуживает особого упоминания, 
							так как в этом случае	элементом памяти хэндла является не объект простого 
							стандартного типа, а <L goto="TCtcMemHandl">базовый хэндл</L>. 
							Это обстоятельство обусловливает некоторую специфику в методах 
							работы с мультихэндлом. 
						</P>    
 					</Desc>
					<MFuncS title="Методы">
					  <MFunc id="NAME_LOCCL::KolElm(void)" header="lc_head.h">
						  <Desc spec="синтаксис">
                int NAME_LOCCL::KolElm(void);							
 						  </Desc>						
						  <Desc spec="описание">
                Поставляет количество элементов соответствующего типа в хэндле. 
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::KolElm(void)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Set(int,int,TIP_LOC*)" header="lc_head.h">
						  <Desc spec="синтаксис">
                void  NAME_LOCCL::Set(int KolElm,int NGroup,TIP_LOC *Adr);							
						  </Desc>						
						  <Desc spec="описание">
							  Генерирует для <L goto="NAME_LOCCL">типизированного хэндла</L> 
								<L goto="CTC_BlokLoc">блок</L> памяти 
								в <L goto="CTC_AllLoc">группе</L> с 
								<L goto="IstGroup">физическим номером</L> NGroup,
								заказывает для этого блока кусок памяти длиной KolElm элементов типа
								<AL>TIP_LOC</AL>  
								и копирует в него содержимое 
								памяти по Adr в случае его ненулевого значения. 							
							</Desc>						
						  <Desc spec="примеч">
							   В случае <L goto="TMultMemHandl">мультихэндла</L> устанавливает
								 в структуре <L goto="CTC_BlokLoc">блока</L> памяти хэндла 
								 соответствующий признак с помощью функции 
                 <AL>TCtcMemHandl::IsMult(TCtcMemHandl)</AL>.							  
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::Set(int,int,void*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::NEW(int,int,TIP_LOC*)" header="lc_head.h">
						  <Desc spec="синтаксис">
                void NAME_LOCCL::NEW(int NGroup,int KolElm,TIP_LOC *Adr);							
						  </Desc>						
						  <Desc spec="описание">
							  To же, что и <AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>
							</Desc>						
						  <Desc spec="примеч">
							  To же, что и <AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>												
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Set(int,TCtcMemGroup,TIP_LOC*)" header="lc_head.h">
						  <Desc spec="синтаксис">
                void NAME_LOCCL::Set(int KolElm,struct TCtcMemGroup Group,TIP_LOC *Adr);							
						  </Desc>						
						  <Desc spec="описание">
							  Генерирует для <L goto="NAME_LOCCL">типизированного хэндла</L> 
								<L goto="CTC_BlokLoc">блок</L> памяти 
								в <L goto="CTC_AllLoc">группе</L> с 
								<L goto="TCtcMemGroup">логическим номером</L> Group,
								заказывает для этого блока кусок памяти длиной KolElm элементов типа
								<AL>TIP_LOC</AL>  
								и копирует в него содержимое 
								памяти по Adr в случае его ненулевого значения. 							
							</Desc>						
						  <Desc spec="примеч">
							  To же, что и <AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>																			
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::Set(int,TCtcMemGroup,void*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::NEW(TCtcMemGroup,int,TIP_LOC*)" header="lc_head.h">
						  <Desc spec="синтаксис">
                void NAME_LOCCL::NEW(struct TCtcMemGroup Group,int KolElm,TIP_LOC *Adr);							
						  </Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>NAME_LOCCL::Set(int,TCtcMemGroup,TIP_LOC*)</AL>.
							</Desc>						
						  <Desc spec="примеч">
							  To же, что и <AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>																			
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,TCtcMemGroup,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Set(int,int)" header="lc_head.h">
						  <Desc spec="синтаксис">
                void NAME_LOCCL::Set(int KolElm,int NGroup);							
						  </Desc>						
						  <Desc spec="описание">
							  Генерирует для <L goto="NAME_LOCCL">типизированного хэндла</L>
							 <L goto="CTC_BlokLoc">блок</L> памяти 
								в <L goto="CTC_AllLoc">группе</L> с 
								<L goto="IstGroup">физическим номером</L> NGroup и
								заказывает для этого блока кусок памяти длиной KolElm элементов 
								соответствующего типа.
							</Desc>						
						  <Desc spec="примеч">
							  To же, что и <AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>																										
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::Set(int,int,void*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::NEW(int,int)" header="lc_head.h">
						  <Desc spec="синтаксис">
                void NAME_LOCCL::NEW(int NGroup,int KolElm=5);							
						  </Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>NAME_LOCCL::Set(int,int)</AL>.
							</Desc>						
						  <Desc spec="примеч">
							  To же, что и <AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>
								Если не задано KolElm, оно принимается равным 5.																										
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Set(int,TCtcMemGroup)" header="lc_head.h">
						  <Desc spec="синтаксис">
                void NAME_LOCCL::Set(int KolElm,struct TCtcMemGroup Group);							
						  </Desc>						
						  <Desc spec="описание">
							  Генерирует для <L goto="NAME_LOCCL">типизированного хэндла</L>
							 <L goto="CTC_BlokLoc">блок</L> памяти 
								в <L goto="CTC_AllLoc">группе</L> с 
								<L goto="TCtcMemGroup">логическим номером</L> Group и
								заказывает для этого блока кусок памяти длиной KolElm элементов 
								соответствующего типа.
							</Desc>						
						  <Desc spec="примеч">
							  To же, что и <AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,TCtcMemGroup,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::NEW(TCtcMemGroup,int)" header="lc_head.h">
						  <Desc spec="синтаксис">
                void NAME_LOCCL::NEW(struct TCtcMemGroup Group,int KolElm=5);							
						  </Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>NAME_LOCCL::Set(int,TCtcMemGroup)</AL>.
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_LOCCL::NEW(int,int)</AL>.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,TCtcMemGroup)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Ini()" header="lc_head.h">
						  <Desc spec="синтаксис">
                TIP_LOC* NAME_LOCCL::Ini();
 						  </Desc>						
						  <Desc spec="описание">
                Открывает <L goto="NAME_LOCCL">типизированный хэндл</L>, 
								поставляя указатель на начальный (нулевой) элемент 
								типа <AL>TIP_LOC</AL> и наращивая счетчик открытий.
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::Ini()</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Adr(int)" header="lc_head.h">
						  <Desc spec="синтаксис">
                 TIP_LOC* NAME_LOCCL::Adr(int Beg);							
						  </Desc>						
						  <Desc spec="описание">
							  При значении Beg, не превышающем общее число элементов типа 
								<AL>TIP_LOC</AL> 
								в <L goto="NAME_LOCCL">типизированном хэндле</L>, 
								поставляет указатель на элемент с номером Beg. 
								В противном случае возвращает NULL.
							</Desc>						
						  <Desc spec="примеч">
							  Нет. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::Adr(int)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Adr(void)" header="lc_head.h">
						  <Desc spec="синтаксис">
                 TIP_LOC* NAME_LOCCL::Adr(void);							
						  </Desc>						
						  <Desc spec="описание">
                Поставляет указатель на нулевой элемент 
								<L goto="NAME_LOCCL">типизированного хэндла</L>.
							</Desc>						
						  <Desc spec="примеч">
							  Нет. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Adr(int)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Put(int,int,TIP_LOC*)" header="lc_head.h">
						  <Desc spec="синтаксис">
                 void NAME_LOCCL::Put(int BegElm,int KolElm,TIP_LOC *Adr);							
						  </Desc>						
						  <Desc spec="описание">
                При необходимости наращивает текущую длину куска памяти 
								<L goto="NAME_LOCCL">типизированного хэндла</L> до значения 
								BegElm+KolElm элементов памяти типа <AL>TIP_LOC</AL> и при 
								ненулевом значении Adr 
								копирует в смещенный на BegElm элементов памяти участок содержимое 
								памяти по Adr длиной KolElm элементов. 
								В противном случае обнуляет данный участок.
							</Desc>						
						  <Desc spec="примеч">
							  Нет. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::Put(int,int,void*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Insert(int,int,TIP_LOC*)" header="lc_head.h">
						  <Desc spec="синтаксис">
                 void NAME_LOCCL::Insert(int BegElm,int KolElm,TIP_LOC *Adr);							
						  </Desc>						
						  <Desc spec="описание">
							  При значении BegElm меньше текущего числа элементов памяти 
								<L goto="NAME_LOCCL">типизированного хэндла</L>
                расширяет текущую длину куска памяти хэндла на значение KolElm элементов памяти, 
								перенося содержимое куска со смещения BegElm на KolElm элементов памяти.
								В противном случае наращивает текущую длину куска памяти хэндла 
								до значения BegElm+KolElm элементов памяти. 
                При ненулевом значении Adr вставляет в кусок памяти, начиная со 
								смещения BegElm элементов памяти, содержимое памяти по Adr длиной KolElm элементов. 
								В противном случае обнуляет вставленный участок. 					  	
							</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла  
								(т.е. отсутствии блока памяти у хэндла) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти длины BegElm+KolElm
								элементов памяти. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::Insert(int,int,void*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Add(int,TIP_LOC*)" header="lc_head.h">
						  <Desc spec="синтаксис">
                 void NAME_LOCCL::Add(int KolElm,TIP_LOC *Adr);							
						  </Desc>						
						  <Desc spec="описание">
                Расширяет длину куска памяти 
								<L goto="NAME_LOCCL">типизированного хэндла</L> на величину KolElm элементов памяти c
								конца куска при положительном значении KolElm или на величину
								-KolElm с начала куска при отрицательном значении KolElm.
								При ненулевом значении указателя Adr заполняет добавленную 
								память содержимым памяти по этому указателю.
							</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла  
								(т.е. отсутствии блока памяти у хэндла) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти и выделяет для него
								кусок памяти длины KolElm элементов памяти. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>AddLocElm</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Add(int)" header="lc_head.h">
						  <Desc spec="синтаксис">
                 void NAME_LOCCL::Add(int KolElm);							
						  </Desc>						
						  <Desc spec="описание">
                Расширяет длину куска памяти 
								<L goto="NAME_LOCCL">типизированного хэндла</L> на величину 
								KolElm элементов памяти c
								конца куска при положительном значении KolElm или на величину
								-KolElm с начала куска при отрицательном значении KolElm.
								При отсутствии блока памяти у поданного хэндла генерирует новый 
								<L goto="CTC_BlokLoc">блок</L>.							
							</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла  
								(т.е. отсутствии блока памяти у хэндла) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти длины KolElm
								элементов памяти. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Add(int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Realloc(int,TIP_LOC*)" header="lc_head.h">
						  <Desc spec="синтаксис">
                 void NAME_LOCCL::Realloc(int KolElm,TIP_LOC *Adr);							
						  </Desc>						
						  <Desc spec="описание">
                При значении KolElm, превышающей текущее число элементов памяти 
								<L goto="NAME_LOCCL">типизированного хэндла</L>,
								наращивает текущее число элементов до требуемой величины. 
								При ненулевом значении Adr копирует KolElm элементов памяти по 
								Adr в кусок памяти хэндла.							
							</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла   
								(т.е. отсутствии блока памяти) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> с куском памяти длины KolElm 
								элементов. 
								В этом случае функция изменяет значение хэндла, назначив в нем
								индекс хэндла и, возможно,  
								<L goto="CTC_AllLoc">логический номер</L> группы. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>ReallocLocElm</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Realloc(int)" header="lc_head.h">
						  <Desc spec="синтаксис">
                 void NAME_LOCCL::Realloc(int KolElm);							
						  </Desc>						
						  <Desc spec="описание">
                При значении KolElm, превышающей текущее число элементов памяти 
								<L goto="NAME_LOCCL">типизированного хэндла</L>, наращивает 
								текущее число элементов до требуемой величины. 
							</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла   
								(т.е. отсутствии блока памяти) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти длины KolElm элементов. 
								В этом случае функция изменяет значение хэндла, назначив в нем
								индекс хэндла и, возможно,  
								<L goto="CTC_AllLoc">логический номер</L> группы. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Realloc(int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Replace(int,TIP_LOC*)" header="lc_head.h">
						  <Desc spec="синтаксис">
                 void NAME_LOCCL::Replace(int KolElm,TIP_LOC *Adr);							
						  </Desc>						
						  <Desc spec="описание">
							  Выполняет те же действия, что и
								<AL>NAME_LOCCL::Realloc(int,TIP_LOC*)</AL>. 
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_LOCCL::Realloc(int,TIP_LOC*)</AL>. 
 						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>ReplaceLocElm</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Replace(int)" header="lc_head.h">
						  <Desc spec="синтаксис">
                 void NAME_LOCCL::Replace(int KolElm);							
						  </Desc>						
						  <Desc spec="описание">
							  Выполняет те же действия, что и
								<AL>NAME_LOCCL::Realloc(int)</AL>. 
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_LOCCL::Realloc(int)</AL>. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Replace(int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::Free(void)" header="lc_head.h">
						  <Desc spec="синтаксис">
                 void NAME_LOCCL::Free(void);							
						  </Desc>						
						  <Desc spec="описание">
                Освобождает кусок памяти 
								<L goto="NAME_LOCCL">типизированного хэндла</L> и обнуляет 
								его поля.
							</Desc>						
						  <Desc spec="примеч">
							  В случае <L goto="TMultMemHandl">мультихэндла</L> предварительно 
								освобождает куски памяти хэндлов-элементов. 
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::Free()</AL></ALS>
							</ALKS>
						</MFunc>
          </MFuncS>
					<MFuncS title="Операторы">
					  <MFunc id="NAME_LOCCL::operator=(const TCtcMemHandl&amp;)" header="lc_head.h">
						  <Desc spec="синтаксис">
                NAME_LOCCL&amp; NAME_LOCCL::operator=(const TCtcMemHandl &amp;h);							
 						  </Desc>						
						  <Desc spec="описание">
                При действительном физическом номере группы 
								<L goto="NAME_LOCCL">типизированного хэндла</L>, копирует поля
								хэндла h в соответствующие поля типизированного хэндла.
							</Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::operator=(const TCtcMemHandl&amp;)</AL></ALS>
							</ALKS>
						</MFunc>					
					  <MFunc id="NAME_LOCCL::operator()(const int)" header="lc_head.h">
						  <Desc spec="синтаксис">
                TIP_LOC* NAME_LOCCL::operator ()(const int Index);							
 						  </Desc>						
						  <Desc spec="описание">
                Поставляет указатель на Index-ный элемент памяти 
								<L goto="NAME_LOCCL">типизированного хэндла</L> 
								без наращивания счетчика открытий хэндла. 
							</Desc>						
						  <Desc spec="примеч">
							  При отсутствии <L goto="CTC_BlokLoc">блока</L> памяти хэндла 
								выдает сообщение (обращение к несуществующему блоку) и
								возвращает NULL.
						  </Desc>
							<ALKS title="вызываемые функции">
                <ALS><AL>GetLocAdr</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::operator[](const int)" header="lc_head.h">
						  <Desc spec="синтаксис">
                TIP_LOC&amp; NAME_LOCCL::operator [](const int Index);							
 						  </Desc>						
						  <Desc spec="описание">
                Поставляет ссылку на Index-ный элемент памяти 
								<L goto="NAME_LOCCL">типизированного хэндла</L>  
								без наращивания счетчика открытий хэндла. 
							</Desc>						
						  <Desc spec="примеч">
							  При отсутствии <L goto="CTC_BlokLoc">блока</L> памяти хэндла
								выдает сообщение (обращение к несуществующему блоку).
						  </Desc>
							<ALKS title="вызываемые функции">
                <ALS><AL>GetLocAdr</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_LOCCL::operator->(void)" header="lc_head.h">
						  <Desc spec="синтаксис">
                TIP_LOC* NAME_LOCCL::operator ->(void);							
 						  </Desc>						
						  <Desc spec="описание">
                Поставляет указатель на нулевой элемент памяти 
								<L goto="NAME_LOCCL">типизированного хэндла</L>  
								без наращивания счетчика открытий хэндла. 
							</Desc>						
						  <Desc spec="примеч">
							  При отсутствии <L goto="CTC_BlokLoc">блока</L> памяти 
								<L goto="NAME_LOCCL">типизированного хэндла</L> 
								выдает сообщение (обращение к несуществующему блоку) и
								возвращает NULL.
						  </Desc>
							<ALKS title="вызываемые функции">
                <ALS><AL>GetLocAdr</AL></ALS>
							</ALKS>
						</MFunc>
					</MFuncS>
				</Class>
			  <Class title="Пулы" id="NAME_PULCL">
				  <Desc>
					  Пулы непосредственно наследуют все методы и операторы 
						<L goto="TMultMemHandl">мультихэндла</L> и фактически являются 
						типизированными мультихэндлами (хэндлами-пулами), так как здесь все хэндлы-элементы памяти 
						<L goto="NAME_LOCCL">типизированного	хэндла</L> 
						<AL>TMultMemHandl</AL>, сами, в свою очередь, 
						является <L goto="NAME_LOCCL">типизированными хэндлами</L> 
						одного <L goto="NAME_LOCCLS">определенного класса</L>.    
						Есть следующие классы пулов:
						<DefList>
						  <DefListHd>
  						  <Desc>Класс хэндла-пула (условный класс NAME_PULCL)</Desc>
								<Desc>Класс хэндла-элемента (условный тип NAME_LOCCL)</Desc>  
							</DefListHd>					 
							<DefListEl>
  						  <Desc><ARP>TPulChar</ARP></Desc><Desc>TMemChar</Desc>  
  						  <Desc>TPulStr</Desc><Desc>TMemChar</Desc>  
  						  <Desc>TPulShort</Desc><Desc>TMemShort</Desc>  
  						  <Desc>TPulInt</Desc><Desc>TMemInt</Desc>  
  						  <Desc>TPulFloat</Desc><Desc>TMemFloat</Desc>  
  						  <Desc>TPulDouble</Desc><Desc>TMemDouble</Desc>  
  						  <Desc>TPulMemHandl</Desc><Desc><AL>TMultMemHandl</AL></Desc>  
 							</DefListEl>
						</DefList>
						<P>
						  Хотя класс TPulStr и является непосредственным наследником класса TPulChar,
							он все же может быть отнесен к пулам, так как реализует
							вариант TPulChar c поддержкой средств работы с нуль-терминированными
							строками. Это нашло свое отражение в специфике его методов и операторов. 
						</P>    						
          </Desc>    				
					<MFuncS title="Методы">
					  <MFunc id="NAME_PULCL::Set(int,int,NAME_LOCCL*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void  NAME_PULCL::Set(int KolElm,int Group,NAME_LOCCL *Adr);							
						  </Desc>						
						  <Desc spec="описание">
							  Вызывает <AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL>. 
							</Desc>						
						  <Desc spec="примеч">
							   Устанавливает
								 в структуре <L goto="CTC_BlokLoc">блока</L> памяти хэндла 
								 соответствующий признак с помощью функции 
                 <AL>TCtcMemHandl::IsMult(TCtcMemHandl)</AL>.							  
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::NEW(int,int,NAME_LOCCL*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void  NAME_PULCL::NEW(int Group,int KolElm,NAME_LOCCL *Adr);							
						  </Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>NAME_PULCL::Set(int,int,NAME_LOCCL*)</AL>.
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::Set(int,int,NAME_LOCCL*)</AL>.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Set(int,TCtcMemGroup,NAME_LOCCL*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::Set(int KolElm,struct TCtcMemGroup Group,NAME_LOCCL *Adr);							
						  </Desc>						
						  <Desc spec="описание">
							  Вызывает <AL>NAME_LOCCL::Set(int,TCtcMemGroup,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL>. 
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::Set(int,int,NAME_LOCCL*)</AL>.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,TCtcMemGroup,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>	
					  <MFunc id="NAME_PULCL::NEW(TCtcMemGroup,int,NAME_LOCCL*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void  NAME_PULCL::NEW(struct TCtcMemGroup Group,int KolElm,NAME_LOCCL *Adr);							
						  </Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>NAME_PULCL::Set(int,int,NAME_LOCCL*)</AL>.
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::Set(int,int,NAME_LOCCL*)</AL>.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,TCtcMemGroup,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Set(int,int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void  NAME_PULCL::Set(int KolElm,int Group);							
						  </Desc>						
						  <Desc spec="описание">
                Генерирует для хэндла-пула <L goto="CTC_BlokLoc">блок</L> памяти 
								в <L goto="CTC_AllLoc">группе</L> с 
								<L goto="IstGroup">физическим номером</L> Group. 
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::Set(int,int,NAME_LOCCL*)</AL>.							
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::NEW(int,int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void  NAME_PULCL::NEW(int Group,int KolElm=5);							
						  </Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>NAME_PULCL::Set(int,int)</AL>.
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::Set(int,int,NAME_LOCCL*)</AL>.
								Если параметр KolElm не задан, он принимается равным 5. 							
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Set(int,TCtcMemGroup)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::Set(int KolElm,struct TCtcMemGroup Group);							
						  </Desc>						
						  <Desc spec="описание">
                Генерирует для хэндла-пула <L goto="CTC_BlokLoc">блок</L> 
								памяти в <L goto="CTC_AllLoc">группе</L> с 
								<L goto="TCtcMemGroup">логическим номером</L> Group. 
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::Set(int,int,NAME_LOCCL*)</AL>.							
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,TCtcMemGroup,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::NEW(TCtcMemGroup,int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::NEW(struct TCtcMemGroup Group, int KolElm=5);							
						  </Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>NAME_PULCL::Set(int,TCtcMemGroup)</AL>.
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::Set(int,int,NAME_LOCCL*)</AL>.
  							Если параметр KolElm не задан, он принимается равным 5. 							
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Set(int,TCtcMemGroup,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Ini()" header="pul_head.h">
						  <Desc spec="синтаксис">
                NAME_LOCCL* NAME_PULCL::Ini();							
						  </Desc>						
						  <Desc spec="описание">
                Открывает хэндл-пул, поставляя указатель на начальный (нулевой) элемент 
								типа <AL>NAME_LOCCL</AL> и наращивая счетчик открытий.
							</Desc>						
						  <Desc spec="примеч">
							  нет.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Ini()</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Adr(int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                NAME_LOCCL* NAME_PULCL::Adr(int Beg);							
						  </Desc>						
						  <Desc spec="описание">
							  При значении Beg, не превышающем общее число элементов 
								типа <AL>NAME_LOCCL</AL> в хэндле-пуле, 
                поставляет указатель на элемент с номером Beg. В противном случае
								возвращает NULL.							
							</Desc>						
						  <Desc spec="примеч">
							  нет.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Adr(int)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Adr(void)" header="pul_head.h">
						  <Desc spec="синтаксис">
                NAME_LOCCL* NAME_PULCL::Adr(void);							
						  </Desc>						
						  <Desc spec="описание">
                Поставляет указатель на нулевой элемент хэндла-пула.
							</Desc>						
						  <Desc spec="примеч">
							  нет.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Adr(void)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Put(int,int,NAME_LOCCL*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::Put(int BegElm,int KolElm,NAME_LOCCL *Adr);
						  </Desc>						
						  <Desc spec="описание">
                Пре необходимости наращивает текущую длину куска памяти хэндла-пула 
								до значения BegElm+KolElm элементов памяти типа <AL>NAME_LOCCL</AL> и при 
								ненулевом значении Adr 
								копирует в смещенный на BegElm элементов участок содержимое памяти по Adr
								длиной KolElm элементов. 
								В противном случае обнуляет данный участок.
							</Desc>						
						  <Desc spec="примеч">
							  нет.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Put(int,int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Insert(int,int,NAME_LOCCL*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::Insert(int BegElm,int KolElm,NAME_LOCCL *Adr);	
  					  </Desc>						
						  <Desc spec="описание">
							  При значении BegElm меньше текущего значения числа элементов хэндла-пула 
                расширяет текущую длину куска памяти хэндла-пула на значение KolElm элементов памяти, 
								перенося содержимое куска со смещения BegElm на KolElm элементов памяти.
								В противном случае наращивает текущую длину куска памяти хэндла-пула 
								до значения BegElm+KolElm элементов памяти. 
                При ненулевом значении Adr вставляет в кусок памяти, начиная со 
								смещения BegElm элементов памяти, содержимое памяти по Adr длиной KolElm элементов. 
								В противном случае обнуляет вставленный участок. 					  	
							</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла-пула  
								(т.е. отсутствии блока памяти у хэндла-пула) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти длины BegElm+KolElm
								элементов памяти типа <AL>NAME_LOCCL</AL>. 
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Insert(int,int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Add(int,NAME_LOCCL*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::Add(int KolElm,NAME_LOCCL *Adr);
  					  </Desc>						
						  <Desc spec="описание">
                Расширяет длину куска памяти хэндла-пула на величину KolElm элементов памяти c
								конца куска при положительном значении KolElm или на величину
								-KolElm с начала куска при отрицательном значении KolElm.
								При ненулевом значении указателя Adr заполняет добавленную 
								память содержимым памяти по этому указателю.
							</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла-пула  
								(т.е. отсутствии блока памяти у хэндла) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти и выделяет для него
								кусок памяти длины KolElm элементов памяти. 
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Add(int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Add(int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::Add(int KolElm);
  					  </Desc>						
						  <Desc spec="описание">
                Расширяет длину куска памяти хэндла-пула на величину KolElm элементов памяти c
								конца куска при положительном значении KolElm или на величину
								-KolElm с начала куска при отрицательном значении KolElm.
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::Add(int,NAME_LOCCL*)</AL>.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Add(int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Realloc(int,NAME_LOCCL*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::Realloc(int KolElm,NAME_LOCCL *Adr);
	 					  </Desc>						
						  <Desc spec="описание">
                При значении KolElm, превышающем текущее число элементов памяти 
								хэндла-пула, наращивает текущее число элементов до требуемой величины. 
								При ненулевом значении Adr копирует KolElm элементов памяти по 
								Adr в кусок памяти хэндла-пула.							
							</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса хэндла-пула   
								(т.е. отсутствии блока памяти) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> с куском памяти длины KolElm 
								элементов. 
								В этом случае функция изменяет значение хэндла-пула, назначив в нем
								индекс хэндла и, возможно,  
								<L goto="CTC_AllLoc">логический номер</L> группы. 
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Realloc(int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Realloc(int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::Realloc(int KolElm);
	 					  </Desc>						
						  <Desc spec="описание">
                При значении KolElm, превышающем текущее число элементов памяти 
								хэндла-пула, наращивает текущее число элементов до требуемой величины. 
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::Realloc(int,NAME_LOCCL*)</AL>.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Realloc(int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Replace(int,NAME_LOCCL*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::Replace(int KolElm,NAME_LOCCL *Adr);
	 					  </Desc>						
						  <Desc spec="описание">
							  Выполняет те же действия, 
								что и <AL>NAME_PULCL::Realloc(int,NAME_LOCCL*)</AL>.
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::Realloc(int,NAME_LOCCL*)</AL>.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Replace(int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::Replace(int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::Replace(int KolElm);
	 					  </Desc>						
						  <Desc spec="описание">
							  Выполняет те же действия, 
								что и <AL>NAME_PULCL::Realloc(int)</AL>.
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::Realloc(int)</AL>.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::Replace(int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL>, 
								TIP_LOC=<AL>TCtcMemHandl</AL></ALS>. 
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::KolInElm(int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                int NAME_PULCL::KolInElm(int NomPul);
	 					  </Desc>						
						  <Desc spec="описание">
							  Возвращает число элементов соответствующего типа в 
								<L goto="NAME_LOCCL">типизированном хэндле</L>, являющимся 
								NomPul-ным элементом хэндла-пула.
							</Desc>						
						  <Desc spec="примеч">
							  Если указатель NomPul-ного элемента хэндла-пула - NULL, например,
								в случае, когда NomPul не меньше общего числа элементов хэндла-пула,
								функция возвращает 0.    
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_PULCL::Adr(int)</AL></ALS>
								<ALS><AL>NAME_LOCCL::KolElm(void)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::FreeElm(int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::FreeElm(int NomPul);							
	 					  </Desc>						
						  <Desc spec="описание">
                Освобождает кусок памяти и обнуляет поля 
								<L goto="NAME_LOCCL">типизированного хэндла</L>,
                являющимся 
								NomPul-ным элементом хэндла-пула.	 							
							</Desc>						
						  <Desc spec="примеч">
							  Осуществляет проверку на непревышение NomPul общего числа элементов
								хэндла-пула и действительность указателя на NomPul-ный элемент хэндла-пула. 
  					  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>NAME_LOCCL::KolElm(void)</AL></ALS>
							  <ALS><AL>NAME_PULCL::Adr(int)</AL></ALS>
								<ALS><AL>NAME_LOCCL::Free(void)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::SetElm(int,int,TIP_LOC*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::SetElm(int NomPul,int KolElm,TIP_LOC *Adr=NULL);							
	 					  </Desc>						
						  <Desc spec="описание">
                При значении NomPul, не меньшем общего числа элементов памяти 
								хэндла-пула, наращивает число элементов до требуемой величины (NomPul+1).
								Освобождает существующий <L goto="NAME_LOCCL">типизированный хэндл</L>, 
								находящийся в позиции	NomPul хэндла-пула. 
							  Генерирует для типизированного хэндла в этой позиции 
								<L goto="CTC_BlokLoc">блок</L> памяти 
								в <L goto="CTC_AllLoc">группе</L> хэндла-пула,
								заказывает для этого блока кусок памяти длиной KolElm элементов типа
								<AL>TIP_LOC</AL>  
								и копирует в него содержимое 
								памяти по Adr в случае его ненулевого значения. 							
							</Desc>						
						  <Desc spec="примеч">
							   В случае, если типизированный хэндл является 
								 <L goto="TCtcMultHandl">мультихэндлом</L>, устанавливает
								 в структуре <L goto="CTC_BlokLoc">блока</L> памяти типизированного
								 хэндла соответствующий признак с помощью функции 
                 <AL>TCtcMemHandl::IsMult(TCtcMemHandl)</AL>.							  
  					  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>NAME_PULCL::Replace(int)</AL></ALS>
							  <ALS><AL>NAME_PULCL::Adr(int)</AL></ALS>
								<ALS><AL>NAME_PULCL::FreeElm(int)</AL></ALS>
								<ALS><AL>NAME_LOCCL::NEW(TCtcMemGroup,int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::AddElm(int,TIP_LOC*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                 void  NAME_PULCL::AddElm(int KolElm,TIP_LOC *Adr=NULL);
	 					  </Desc>						
						  <Desc spec="описание">
								Пристыковывает к концу хэндла-пула один элемент - 
								<L goto="NAME_LOCCL">типизированный хэндл</L>, 
							  генерирует для него	<L goto="CTC_BlokLoc">блок</L> памяти 
								в <L goto="CTC_AllLoc">группе</L> хэндла-пула, 
								заказывает для этого блока кусок памяти длиной KolElm элементов типа
								<AL>TIP_LOC</AL>  
								и копирует в него содержимое 
								памяти по Adr в случае его ненулевого значения. 							
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и для <AL>NAME_PULCL::SetElm(int,int,TIP_LOC*)</AL>.
  					  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>NAME_LOCCL::KolElm(void)</AL></ALS>
								<ALS><AL>NAME_PULCL::SetElm(int,int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>
					  <MFunc id="NAME_PULCL::InsertElm(int,int,TIP_LOC*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::InsertElm(int NomPul,int KolElm,TIP_LOC *Adr=NULL);
	 					  </Desc>						
						  <Desc spec="описание">
                При значении NomPul, не меньшем общего числа элементов памяти 
								хэндла-пула, наращивает число элементов до требуемой величины (NomPul+1).
								В противном случае наращивает число элементов памяти хэндла-пула на единицу
								и
								переносит значения элементов на одну позицию вперед, начиная с позиции
								NomPul.
							  Генерирует для типизированного хэндла в этой позиции 
								<L goto="CTC_BlokLoc">блок</L> памяти 
								в <L goto="CTC_AllLoc">группе</L> хэндла-пула,
								заказывает для этого блока кусок памяти длиной KolElm элементов типа
								<AL>TIP_LOC</AL>  
								и копирует в него содержимое 
								памяти по Adr в случае его ненулевого значения. 							
							</Desc>						
						  <Desc spec="примеч">
							  То же, что и для <AL>NAME_PULCL::SetElm(int,int,TIP_LOC*)</AL>.
  					  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>NAME_LOCCL::KolElm(void)</AL></ALS>
								<ALS><AL>NAME_PULCL::Add(int)</AL></ALS>
								<ALS><AL>NAME_PULCL::Adr(void)</AL></ALS>
								<ALS><AL>TCtcMemHandl::Clear(void)</AL></ALS>
								<ALS><AL>NAME_PULCL::SetElm(int,int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="NAME_PULCL::AdrElm(int,int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                TIP_LOC* NAME_PULCL::AdrElm(int NomPul,int NomElm=0);
	 					  </Desc>						
						  <Desc spec="описание">
                При ненулевом значении указателя на  
								<L goto="NAME_LOCCL">типизированный хэндл</L>, находящийся
								в позиции NomPul хэндла-пула, поставляет
								указатель на NomElm-ный элемент этого типизированного хэндла.
								В противном случае возвращает NULL. 							
							</Desc>						
						  <Desc spec="примеч">
							  нет.
  					  </Desc>
							<ALKS title="вызываемые функции">
								<ALS><AL>NAME_PULCL::Adr(int)</AL></ALS>
							  <ALS><AL>NAME_LOCCL::Adr(int)</AL></ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="NAME_PULCL::PutElm(int,int,int,TIP_LOC*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::PutElm(int NomPul,int BegElm,int KolElm,TIP_LOC *Adr=NULL);							
	 					  </Desc>						
						  <Desc spec="описание">
                При значении NomPul, не меньшем общего числа элементов памяти 
								хэндла-пула, наращивает число элементов до требуемой величины (NomPul+1).
								При нулевом физическом номере <L goto="CTC_AllLoc">группы</L>
								NomPul-ного	<L goto="NAME_LOCCL">типизированного хэндла</L>
								назаначает ему <L goto="CtcMemGroup">логический номер</L>
								группы хэндла-пула. 
                При необходимости наращивает текущую длину куска памяти NomPul-ного 
								типизированного хэндла до значения 
								BegElm+KolElm элементов памяти типа <AL>TIP_LOC</AL> и при 
								ненулевом значении Adr 
								копирует в смещенный на BegElm элементов участок содержимое памяти по Adr
								длиной KolElm элементов. 
								В противном случае обнуляет данный участок.
							</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса NomPul-ного	
								<L goto="NAME_LOCCL">типизированного хэндла</L>   
								(т.е. отсутствии блока памяти) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> с куском памяти длины (BegElm+KolElm) 
								элементов. 
								В этом случае функция изменяет значение NomPul-ного типизированного 
								хэндла, назначив в нем
								индекс хэндла и, возможно,  
								<L goto="CTC_AllLoc">логический номер</L> группы. 
  					  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>NAME_PULCL::Replace(int)</AL></ALS>
							  <ALS><AL>NAME_PULCL::Adr(int)</AL></ALS>
								<ALS><AL>NAME_LOCCL::Put(int,int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="NAME_PULCL::InsertInElm(int,int,int,TIP_LOC*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::InsertInElm(int NomPul,int BegElm,int KolElm,TIP_LOC *Adr=NULL);
	 					  </Desc>						
						  <Desc spec="описание">
                При значении NomPul, не меньшем общего числа элементов памяти 
								хэндла-пула, наращивает число элементов до требуемой величины (NomPul+1).
								При нулевом физическом номере <L goto="CTC_AllLoc">группы</L>
								NomPul-ного	<L goto="NAME_LOCCL">типизированного хэндла</L>
								назаначает ему <L goto="CtcMemGroup">логический номер</L>
								группы хэндла-пула.
							  При значении BegElm меньше текущего числа элементов памяти NomPul-ного 
								типизированного хэндла расширяет текущую длину куска памяти этого хэндла 
								на значение KolElm элементов памяти типа <AL>TIP_LOC</AL>, 
								перенося содержимое куска со смещения BegElm на KolElm элементов памяти.
								В противном случае наращивает текущую длину куска памяти типизированного хэндла 
								до значения BegElm+KolElm элементов памяти типа <AL>TIP_LOC</AL>. 
                При ненулевом значении Adr вставляет в кусок памяти, начиная со 
								смещения BegElm элементов памяти, содержимое памяти по Adr длиной KolElm элементов. 
  							В противном случае обнуляет вставленный участок. 					  	
	 						</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса NomPul-ного типизированного хэндла  
								(т.е. отсутствии блока памяти у хэндла) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти длины BegElm+KolElm
								элементов памяти типа <AL>TIP_LOC</AL>. 
  					  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>NAME_PULCL::Replace(int)</AL></ALS>
							  <ALS><AL>NAME_PULCL::Adr(int)</AL></ALS>
								<ALS><AL>NAME_LOCCL::Insert(int,int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="NAME_PULCL::AddInElm(int,int,TIP_LOC*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::AddInElm(int NomPul,int KolElm,TIP_LOC *Adr=NULL);
	 					  </Desc>						
						  <Desc spec="описание">
                При значении NomPul, не меньшем общего числа элементов памяти 
								хэндла-пула, наращивает число элементов до требуемой величины (NomPul+1).
								При нулевом физическом номере <L goto="CTC_AllLoc">группы</L>
								NomPul-ного	<L goto="NAME_LOCCL">типизированного хэндла</L>
								назаначает ему <L goto="CtcMemGroup">логический номер</L>
								группы хэндла-пула. 
                Наращивает текущую длину куска памяти NomPul-ного типизированного 
								хэндла с конца на KolElm элементов памяти типа <AL>TIP_LOC</AL> 
								и при ненулевом значении Adr 
								копирует в добавленный участок содержимое памяти по Adr. 
								В противном случае обнуляет добавленный участок.
	 						</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса NomPul-ного	
								<L goto="NAME_LOCCL">типизированного хэндла</L>   
								(т.е. отсутствии блока памяти) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> с куском памяти длины KolElm 
								элементов. 
								В этом случае функция изменяет значение NomPul-ного типизированного 
								хэндла, назначив в нем
								индекс хэндла и, возможно,  
								<L goto="CTC_AllLoc">логический номер</L> группы. 
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_PULCL::KolInElm(int)</AL></ALS>
                <ALS><AL>NAME_PULCL::PutElm(int,int,int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="NAME_PULCL::ReallocElm(int,int,TIP_LOC*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::ReallocElm(int NomPul,int KolElm,TIP_LOC *Adr=NULL);							
	 					  </Desc>						
						  <Desc spec="описание">
                При значении NomPul, не меньшем общего числа элементов памяти 
								хэндла-пула, наращивает число элементов до требуемой величины (NomPul+1).
								При нулевом физическом номере <L goto="CTC_AllLoc">группы</L>
								NomPul-ного	<L goto="NAME_LOCCL">типизированного хэндла</L>
								назаначает ему <L goto="CtcMemGroup">логический номер</L>
								группы хэндла-пула.
                При значении KolElm, превышающей текущее число элементов памяти 
								NomPul-ного <L goto="NAME_LOCCL">типизированного	хэндла</L>, 
								наращивает текущее число элементов до требуемой величины. 
								При ненулевом значении Adr копирует KolElm элементов памяти по 
								Adr в кусок памяти типизированного хэндла.							
	 						</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса NomPul-ного	
								<L goto="NAME_LOCCL">типизированного хэндла</L>   
								(т.е. отсутствии блока памяти) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> с куском памяти длины KolElm 
								элементов. 
								В этом случае функция изменяет значение NomPul-ного типизированного 
								хэндла, назначив в нем
								индекс хэндла и, возможно,  
								<L goto="CTC_AllLoc">логический номер</L> группы. 
  					  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>NAME_PULCL::Replace(int)</AL></ALS>
							  <ALS><AL>NAME_PULCL::Adr(int)</AL></ALS>
								<ALS><AL>NAME_LOCCL::Realloc(int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="NAME_PULCL::ReplaceElm(int,int,TIP_LOC*)" header="pul_head.h">
						  <Desc spec="синтаксис">
                void NAME_PULCL::ReplaceElm(int NomPul,int KolElm,TIP_LOC *Adr=NULL);							
	 					  </Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>NAME_PULCL::ReallocElm(int,int,TIP_LOC*)</AL>.
	 						</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::ReallocElm(int,int,TIP_LOC*)</AL>.
  					  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL>NAME_PULCL::Replace(int)</AL></ALS>
							  <ALS><AL>NAME_PULCL::Adr(int)</AL></ALS>
								<ALS><AL>NAME_LOCCL::Replace(int,TIP_LOC*)</AL></ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="TPulStr::AdrStr(int)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
                char* TPulStr::AdrStr(int NomPul);							
	 					  </Desc>						
						  <Desc spec="описание">
                При ненулевом значении указателя на типизированный хэндл 
								<AL>TMemChar</AL>, находящийся
								в позиции NomPul хэндла-пула, поставляет
								указатель на строку, содержащуюся в этом типизированном хэндле.
								В противном случае возвращает NULL. 							
	 						</Desc>						
						  <Desc spec="примеч">
							  нет.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_PULCL::Adr(int)</AL>,
								где NAME_PULCL=<AL>TPulChar</AL></ALS>
							  <ALS><AL>NAME_LOCCL::Adr(void)</AL>,
								где NAME_LOCCL=<AL>TMemChar</AL></ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="TPulStr::StrLen(int)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
                int TPulStr::StrLen(int NomPul);							
	 					  </Desc>						
						  <Desc spec="описание">
                При ненулевом значении указателя на типизированный хэндл  
								<AL>TMemChar</AL>, находящийся
								в позиции NomPul текущего хэндла-пула, и ненулевом
								значении указателя на содержимое этого типизированного хэндла поставляет
								длину строки, содержащуюся в этом типизированном хэндле.
								В противном случае возвращает 0. 							
	 						</Desc>						
						  <Desc spec="примеч">
							  нет.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TPulStr::AdrStr(int)</AL></ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="TPulStr::GetStr(int)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
                char* TPulStr::GetStr(int NomPul);							
	 					  </Desc>						
						  <Desc spec="описание">
                При ненулевом значении указателя на типизированный хэндл
								<AL>TMemChar</AL>, находящийся
								в позиции NomPul текущего хэндла-пула, заказывает 
								память под содержащуюся в типизированном хэндле строку, копирует ее
								в заказанную память и	возвращает указатель на эту память. 
								В противном случае возвращает NULL. 							
	 						</Desc>						
						  <Desc spec="примеч">
							  Память по поставляемому функцией указателю подлежит возврату по
								ее использовании.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_PULCL::Adr(int)</AL>,
								где NAME_PULCL=<AL>TPulChar</AL></ALS>
							  <ALS><AL>NAME_LOCCL::Adr(void)</AL>,
								где NAME_LOCCL=<AL>TMemChar</AL></ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="TPulStr::AddStr(char*)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
								void TPulStr::AddStr(char *Adr);							
	 					  </Desc>						
						  <Desc spec="описание">
								Пристыковывает к концу хэндла-пула типизированный хэндл 
								<AL>TMemChar</AL>, 
							  генерирует для него	<L goto="CTC_BlokLoc">блок</L> памяти 
								в <L goto="CTC_AllLoc">группе</L> хэндла-пула, 
								заказывает для этого блока кусок памяти, достаточный для размещения 
								в нем строки Adr в случае ненулевого значения указателя Adr или длиной
								1 байт в противном случае.
								Копирует строку Adr (если Adr - не NULL) в пристыкованный  
								типизированный хэндл <AL>TMemChar</AL>.								
	 						</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении Adr заносит в пристыкованный хэндл нуль-терминатор.
  					  </Desc>
							<ALKS title="вызываемые функции">
   							<ALS><AL>NAME_PULCL::AddElm(int,TIP_LOC*)</AL>,
								где NAME_PULCL=<AL>TPulChar</AL>,
								<AL>TIP_LOC</AL>=char</ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="TPulStr::SetStr(int,char*)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
							  void TPulStr::SetStr(int NomPul,char *Adr);
	 					  </Desc>						
						  <Desc spec="описание">
                При значении NomPul, не меньшем общего числа элементов памяти 
								хэндла-пула, наращивает число элементов до требуемой величины (NomPul+1).
								Освобождает существующий NomPul-ный типизированный хэндл
								<AL>TMemChar</AL>. 
							  Генерирует для типизированного хэндла <AL>TMemChar</AL> в позиции NomPul 
								<L goto="CTC_BlokLoc">блок</L> памяти 
								в <L goto="CTC_AllLoc">группе</L> текущего хэндла-пула,
                достаточный для размещения 
								в нем строки Adr в случае ненулевого значения указателя Adr или длиной
								1 байт в противном случае. 
								Копирует строку Adr (если Adr - не NULL) в созданный типизированный хэндл  
								<AL>TMemChar</AL>.
	 						</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении Adr заносит в NomPul-ный хэндл нуль-терминатор.
  					  </Desc>
							<ALKS title="вызываемые функции">
   							<ALS><AL>NAME_PULCL::SetElm(int,int,TIP_LOC*)</AL>,
								где NAME_PULCL=<AL>TPulChar</AL>,
								<AL>TIP_LOC</AL>=char</ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="TPulStr::InsertStr(int,char*)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
							  void TPulStr::InsertStr(int NomPul,char *Adr);
	 					  </Desc>						
						  <Desc spec="описание">
							  При значении NomPul, не меньшем общего числа элементов памяти 
								хэндла-пула, наращивает число элементов до требуемой величины (NomPul+1).
								В противном случае наращивает число элементов памяти хэндла-пула на единицу
								и
								переносит значения элементов на одну позицию вперед, начиная с позиции
								NomPul.
							  Генерирует для типизированного хэндла TMemChar этой позиции 
								<L goto="CTC_BlokLoc">блок</L> памяти 
								в <L goto="CTC_AllLoc">группе</L> хэндла-пула,
								заказывает для этого блока кусок памяти, 
								                достаточный для размещения 
								в нем строки Adr в случае ненулевого значения указателя Adr или длиной
								1 байт в противном случае. 
								Копирует строку Adr (если Adr - не NULL) в NomPul-ный типизированный хэндл 
								<AL>TMemChar</AL>.							
	 						</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении Adr заносит в NomPul-ный хэндл нуль-терминатор.
  					  </Desc>
							<ALKS title="вызываемые функции">
   							<ALS><AL>NAME_PULCL::InsertElm(int,int,TIP_LOC*)</AL>,
								где NAME_PULCL=<AL>TPulChar</AL>,
								<AL>TIP_LOC</AL>=char</ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="TPulStr::DelStr(int)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
							  void TPulStr::DelStr(int NomPul);
	 					  </Desc>						
						  <Desc spec="описание">
							  При значении NomPul, меньшем общего числа элементов памяти 
								хэндла-пула, и 
                при положительных физическом номере <L goto="CTC_AllLoc">группы</L> 
								и значении индекса (при сброшенном старшем бите) NomPul-ного типизированного хэндла 
								<AL>TMemChar</AL> 								
								заносит в этот хэндл специальную <RP id="DF_DELSIGN">сигнатуру</RP>,
								состоящую из четырех байт: {0 1 255 0}.
	 						</Desc>						
						  <Desc spec="примеч">
							  нет.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::KolElm(void)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL></ALS>
								<ALS><AL>TCtcMemHandl::operator>(const unsigned int&amp;)</AL></ALS>
								<ALS><AL>NAME_PULCL::operator[](const int)</AL>,
								где NAME_PULCL=<AL>TPulChar</AL></ALS>
								<ALS><AL>NAME_LOCCL::Replace(int,TIP_LOC*)</AL>,
								где NAME_LOCCL=<AL>TMemChar</AL>,
								    <AL>TIP_LOC</AL>=char</ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="TPulStr::PutStr(int,char*)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
  							void TPulStr::PutStr(int NomPul,char *Adr=NULL);
	 					  </Desc>						
						  <Desc spec="описание">
                При значении NomPul, не меньшем общего числа элементов памяти 
								хэндла-пула, наращивает число элементов до требуемой величины (NomPul+1).
								При нулевом физическом номере <L goto="CTC_AllLoc">группы</L>
								NomPul-ного	типизированного хэндла <AL>TMemChar</AL>
								назаначает ему <L goto="CtcMemGroup">логический номер</L>
								группы хэндла-пула.
								В качестве требуемой длины NomPul-ного типизированного хэндла 
								<AL>TMemChar</AL>
								принимается длина строки Adr c учетом нуль-терминатора при ненулевом
								значении Adr или 1 байт в противном случае.   
                Если эта длина превышает длину уже содержащейся в NomPul-ном 
								типизированном хэндле <AL>TMemChar</AL>
								строки (с учетом нуль-терминатора), 
								наращивает число его элементов до требуемой величины и 
								при ненулевом значении Adr копирует в него строку по Adr.
								При нулевом значении Adr и отсутствии строки в NomPul-ном типизированном 
								хэндле заносит в него нуль-терминатор. 
	 						</Desc>						
						  <Desc spec="примеч">
							  То же, что и <AL>NAME_PULCL::ReallocElm(int,int,TIP_LOC*)</AL>.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_PULCL::ReplaceElm(int,int,TIP_LOC*)</AL>,
								где NAME_PULCL=<AL>TPulChar</AL>,
								    <AL>TIP_LOC</AL>=char</ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="TPulStr::StrCat(int,char*)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
                void TPulStr::StrCat(int NomPul,char *Adr=NULL);
	 					  </Desc>						
						  <Desc spec="описание">
							  При ненулевом значении указателя строки Adr и ненулевой длине
								этой строки производит следующие действия.
                При значении NomPul, не меньшем общего числа элементов памяти 
								хэндла-пула, наращивает число элементов до требуемой величины (NomPul+1).
								При нулевом физическом номере <L goto="CTC_AllLoc">группы</L>
								NomPul-ного	<L goto="NAME_LOCCL">типизированного хэндла TMemChar</L>
								назаначает ему <L goto="CtcMemGroup">логический номер</L>
								группы хэндла-пула.
								Наращивает текущую длину куска памяти этого хэндла 
								на длину строки Adr и пристыковывает эту строку к имеющейся там
								строке, перенося нуль-терминатор в конец объединенной строки.
	 						</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении индекса NomPul-ного типизированного хэндла  
								(т.е. отсутствии блока памяти у хэндла) генерирует новый 
								<L goto="CTC_BlokLoc">блок</L> памяти размером с длину
								строки Adr (а надо на единицу больше ???!!!).							
  					  </Desc>
							<ALKS title="вызываемые функции">
 							  <ALS><AL>TPulStr::StrLen(int)</AL></ALS>
                <ALS><AL>NAME_PULCL::InsertInElm(int,int,int,TIP_LOC*)</AL>,							
								где NAME_PULCL=<AL>TPulChar</AL>,
								    <AL>TIP_LOC</AL>=char</ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="TPulStr::FreeStr(int)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
                void TPulStr::FreeStr(int NomPul);
	 					  </Desc>						
						  <Desc spec="описание">
                Освобождает кусок памяти и обнуляет поля типизированного хэндла 
								<AL>TMemChar</AL>,
                являющимся 
								NomPul-ным элементом хэндла-пула.	 							
	 						</Desc>						
						  <Desc spec="примеч">
							  Осуществляет проверку на непревышение NomPul общего числа элементов
								хэндла-пула и действительность указателя на NomPul-ный элемент хэндла-пула. 
  					  </Desc>
							<ALKS title="вызываемые функции">
  							<ALS><AL> NAME_PULCL::FreeElm(int)</AL></ALS>
							</ALKS>
						</MFunc>						
					  <MFunc id="TPulStr::AddContext(char*,int)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
                int TPulStr::AddContext(char *Adr,int Regim=0);
	 					  </Desc>						
						  <Desc spec="описание">
							  <P>При ненулевом значении указателя строки Adr и ненулевой длине
								этой строки в
								зависимости от значения параметра Regim производит следующие действия.</P>
																
								<P>Если Regim равен 0, и строка Adr отсутствует в пуле, заносит 
								строку Adr в 
								первую свободную позицию пула (с пустым хэндлом TMemChar или содержащим
								<L goto="DF_DELSIGN">сигнатуру</L> удаленной строки).
								В отсутствие свободных позиций наращивает число элементов пула на единицу
								и заносит строку Adr в добавленную позицию.</P>
								
								<P>При значении Regim, равном 1, заносит строку Adr в первую свободную
								позицию пула или добавленную позицию независимо от наличия строки
								Adr в пуле.</P>
                <P>В обоих случаях возвращает номер позиции пула с внесенной строкой.</P>								
								
								<P>Если Regim равен 2, просто сканирует пул в поисках строки Adr
								и возвращает номер позиции со строкой, если она найдена, или -1
								в противном случае.</P>  
  						</Desc>						
						  <Desc spec="примеч">
							  При нулевом значении указателя строки Adr и нулевой длине
								этой строки выдает сообщение ПУСТАЯ СТРОКА.
  					  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::KolElm(void)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL> и
								    NAME_LOCCL=<AL>TMemChar</AL></ALS>
								<ALS><AL>TCtcMemHandl::operator>(const unsigned int&amp;)</AL></ALS>
								<ALS><AL>NAME_PULCL::operator[](const int)</AL>,
								где NAME_PULCL=<AL>TPulChar</AL></ALS>
								<ALS><AL>NAME_LOCCL::Adr(void)</AL>,
								где NAME_LOCCL=<AL>TMemChar</AL></ALS>
								<ALS><AL>TPulStr::PutStr(int,char*)</AL></ALS>
  						</ALKS>
						</MFunc>						
					</MFuncS>
					<MFuncS title="Операторы">
					  <MFunc id="NAME_PULCL::operator=(const TCtcMemHandl&amp;)" header="pul_head.h">
						  <Desc spec="синтаксис">
                NAME_PULCL&amp; NAME_PULCL::operator =(const TCtcMemHandl &amp;h);
	 					  </Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>NAME_LOCCL::operator=(const TCtcMemHandl &amp;)</AL>
	 					  </Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::operator=(const TCtcMemHandl&amp;)</AL></ALS>
							</ALKS>
            </MFunc> 						
					  <MFunc id="NAME_PULCL::operator[](const int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                NAME_LOCCL&amp; NAME_PULCL::operator [](const int Index);
	 					  </Desc>						
						  <Desc spec="описание">
                Поставляет ссылку на Index-ный 
								<L goto="NAME_LOCCL">типизированный хэндл</L> хэндла-пула  
								без наращивания счетчика открытий типизированного хэндла. 
	 					  </Desc>						
						  <Desc spec="примеч">
							  При отсутствии <L goto="CTC_BlokLoc">блока</L> памяти типизированного хэндла
								выдает сообщение (обращение к несуществующему блоку).
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::operator[](const int)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL></ALS>.
							</ALKS>
            </MFunc> 						
					  <MFunc id="NAME_PULCL::operator()(const int)" header="pul_head.h">
						  <Desc spec="синтаксис">
                NAME_LOCCL* NAME_PULCL::operator ()(const int Index);
	 					  </Desc>						
						  <Desc spec="описание">
                Поставляет указатель на Index-ный 
								<L goto="NAME_LOCCL">типизированный хэндл</L> хэндла-пула  								  
								без наращивания счетчика открытий типизированного хэндла. 							
	 					  </Desc>						
						  <Desc spec="примеч">
							  При отсутствии <L goto="CTC_BlokLoc">блока</L> памяти 
								типизированного хэндла 
								выдает сообщение (обращение к несуществующему блоку) и
								возвращает NULL.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>NAME_LOCCL::operator()(const int)</AL>,
								где NAME_LOCCL=<AL>TMultMemHandl</AL></ALS>.
							</ALKS>
            </MFunc> 						
					  <MFunc id="TPulStr::operator=(const TCtcMemHandl&amp;)" header="pul_stnd.h">
						  <Desc spec="синтаксис">
                TPulStr&amp; TPulStr::operator =(const TCtcMemHandl &amp;h);
	 					  </Desc>						
						  <Desc spec="описание">
							  То же, что и <AL>NAME_LOCCL::operator=(const TCtcMemHandl &amp;)</AL>
	 					  </Desc>						
						  <Desc spec="примеч">
							  нет.
						  </Desc>
							<ALKS title="вызываемые функции">
							  <ALS><AL>TCtcMemHandl::operator=(const TCtcMemHandl&amp;)</AL></ALS>
							</ALKS>
            </MFunc> 						
					</MFuncS>
				</Class>
			  <Class title="Матричные пулы" id="NAME_PLСCL">
				  <Desc>
					  <P>
						Матричный пул - это <L goto="NAME_PULCL">пул</L> с внутренним 
						механизмом доступа к элементам составляющих его 
						<L goto="NAME_LOCCL">типизированных хэндлов</L> как к элементам 
						линейной матрицы. Внешний логический доступ к элементам матричного пула 
						осуществляется по номеру элемента в матричном пуле.
						В отличие от пула, где все элементы хэндла-пула однородны, т.е. являются
						типизированными хэндлами одного определенного типа, в матричном пуле
						нулевой элемент является <L goto="TCtcMemHandl">базовым хэндлом</L>,
						содержащим <RP id="LPC_Head">специальную структуру</RP> со 
						служебной информацией, в частности,
						<RP id="lpcKolInP