Класс Pzl
Материал из wikiru.visual-prolog.com
Назначение
Класс pzl предназначен для обеспечения работы с pzl-компонентами и получения информации о состоянии pzl-системы. Этот класс обязательно должен включаться в проект любой pzl-компоненты и главного приложения, генерирующего исполняемый (.EXE) файл, даже если нет необходимости обращения к предикатам этого класса.
Обращения к предикатам этого класса возможны из любого класса, включенного в проект, использующий pzl-технологию.
Имплементация класса pzl содержится:
- в случае pzl-контейнера (DLL) в библиотеке pzlContainer_YY.lib
- в случае главного приложения в библиотеке pzlPort_XX.lib
здесь YY и XX - уровень лицензии.
Список предикатов класса
Информация о контейнере |
classInfo. Получение информации о классе |
getContainerName:()->string ThisContainerName procedure (). Получить имя файла-контейнера, в котором находится данная компонента |
getContainerVersion:()->string ThisContainerVersion procedure (). Получить идентификатор версии контейнера, в котором находится данная компонента |
getLicenseLevel:()->string PZLUserLicenseLevel procedure (). Получить значение уровня лицензии контейнера, в котором находится данная компонента |
getComponentRegisterFileName:()->pzlDomains::pzlComponentsRegisterFileName_D ComponentRegisterFileName procedure (). Получить имя файла-реестра компонент, назначенного для данного приложения |
getContainerContentList:(string PZLContainerFileName)->pzlDomains::pzlContainerContentInfo_D ContentInfo procedure (i). Получить список компонент, содержащихся в контейнере с заданным именем |
Управление компонентами |
newByID:(pzlDomains::entityUID_D,object InObject)->object OutObject. Создать новый объект, используя уникальный идентификатор компоненты |
newByName:(string Name,object InObject)->object OutObject procedure (i,i). Создать новый объект, используя имя компоненты |
setStdOutputStream:(outputStream OutputStream). Назначить заданный выходной поток в качестве стандартного выходного потока для всех компонент, используемых данным приложением |
Cостояние pzl-системы. Служебные. Не документируются |
releaseInactiveContainers:(). |
getContainerActivity_nd:(string FileName,unsigned RefCounter) nondeterm (o,o). |
getContainerToBeUnloaded_nd:(string FileName) nondeterm (o). |
subscribe:(notificationAgency::notificationListener NotificationListener). |
unSubscribe:(notificationAgency::notificationListener NotificationListener). |
Служебные предикаты, используемые самой pzl-системой. Не докментируются |
newInstance:(). |
release:(). |
Используемые дополнительные ресурсы
Обязательно:
- использование библиотеки pzlPort_XX.lib, где XX - квалификатор лицензии. Библиотека фактически содержит имплементацию класса pzlPort и включает имплементацию свойств pzl-Контейнера главного исполняемого приложения.
- наличие пакета pzlConfig, который участвует в процессе инициализации.
Описание предикатов
predicates classInfo : core::classInfo. % @short Class information predicate. % @detail This predicate represents information predicate of this class. % @end /* ************************************************************************* The two predicates below new(),can not be invoked by Users. The only PZL can use these predicates ***************************************************************************/ predicates newInstance:(). predicates release:(). /* The end of system-privilaged predicates*/ predicates newByID:(pzlDomains::entityUID_D,object InObject)->object OutObject. predicates % Creation Object By Name newByName:(string Name,object InObject)->object OutObject procedure (i,i). % @short The class constructor, which creates the new instance of the PzlComponent with the given name % @detail Creates the new instance of the pzlComponent with the name Name. % The pzlComponent with the name Name must be registered in one of % the registration domains - in the Windows Registry or in the local registration file *.pzr. % The InObject may be the object pointer of any class instance. And the pzlComponent must % know the domain of this Object, if the conversion in the pzlComponent is to be performed.<br> %<br> % The returned object OutObject is the pointer to the requested object. To invoke the % predicate of the named pzlComponent the OutObject must be converted to the domain of % this class, for example:<br> % ...<br> % Object=newByName("MyComponent",This),<br> % MyComponentInstance=tryConvert(iMyComponent,Object),<br> % MyComponentInstance:myPredicate(...),<br> % ... % % @exception The exception is rized if the pzlSystem can not perform the constructor by reasons:<br> % - the PzlSystem has no access to the registry store.<br> % - the pzlComponent with the given name is not found in the registry Store.<br> % - the pzlContainer, which contains the given pzlComponent can not be loaded<br> % - the lodaded pzlContainer doesn't contain the given pzlComponent<br> % - the constructor of the given pzlComponent can not create the instance<br> % The last exception desription contains the text: <br> % 'New2. newByName failured for the Component 'Name' '<br> % @end predicates getContainerName:()->string ThisContainerName procedure (). % @short get the file name of the pzlContainer, in which the given class is placed % @detail Returnes the name (full path) of the file, where the given pzlComponent is placed.<br> % example:<br> % ...<br> % ContainerName=pzl:getContainerName(),<br> % stdIO::writef("The component "MyComponent" placed in the Container %",ContainerName),<br> % ... % @exception No special exception generated by the PzlSystem<br> % @end predicates getContainerVersion:()->string ThisContainerVersion procedure (). % @short get the version of the current pzlContainer, in which the given class is placed % @detail Returnes the version of the pzlContainer, where the given pzlComponent is placed.<br> % The version of the pzlContainer is of string type and is defined by the constant "pzlContainerVersion_C" in the file iPzlConfig.i % of the pzlContainer's Project<br> % example:<br> % the file iPzlCongig.i of the given pzlContainer contains the declaration of the constant<br> % constants<br> % pzlContainerVersion_C="1.0;001".<br> % the code below can obtain the version of the current pzlContainer<br> % ContainerVersion=pzl::getContainerVersion(),<br> % stdIO::writef("The version of the Container is %",ContainerVersion),<br> % ... % @exception No special exception generated by the PzlSystem<br> % @end predicates getLicenseLevel:()->string PZLUserLicenseLevel procedure (). % @short get the license level of the given pzlContainer, in which the given class is placed % @detail Returnes the license level of the pzlContainer, where the given pzlComponent is placed.<br> % The License Level is defined by the company, which produces the pzlContainer<br> % and may have one of the following string values<br> % "Public"<br> % "Commercial"<br> % "Exclusive"<br> % "SuperExclusive"<br> % "Unknown"<br> % if the current pzlContainer is the application, then the LicenseLevel returns the License % level of the PzlPort % % example:<br> % the code below can obtain the license level of the current pzlContainer<br> % ...<br> % LicenseLevel=pzl:getLicenseLevel(),<br> % stdIO::writef("The License Level of the current pzlContainer is %",LicenseLevel),<br> % ... % @exception No special exception generated by the PzlSystem<br> % @end predicates setStdOutputStream:(outputStream OutputStream). predicates getComponentRegisterFileName:()->pzlDomains::pzlComponentsRegisterFileName_D ComponentRegisterFileName procedure (). getContainerContentList:(string PZLContainerFileName)->pzlDomains::pzlContainerContentInfo_D ContentInfo procedure (i). releaseInactiveContainers:(). getContainerActivity_nd:(string FileName,unsigned RefCounter) nondeterm (o,o). getContainerToBeUnloaded_nd:(string FileName) nondeterm (o). subscribe:(notificationAgency::notificationListener NotificationListener). unSubscribe:(notificationAgency::notificationListener NotificationListener). predicates % Object registration register:(string ObjectName,object Object) procedure (i,i). registerMulti:(string ObjectName,object Object) procedure (i,i). getObjectByName_nd:(string ObjectName)->object Object nondeterm (i). getNameByObject_nd:(object Object)->string ObjectNameLow nondeterm (i). getNameAndObject_nd:(string ObjectName,object Object) nondeterm (o,o). unRegister:(string ObjectName,object Object) procedure (i,i). unRegisterByName:(string ObjectName) procedure (i). unRegisterByObject:(object Object) procedure (i). unRegisterAll:() procedure ().