четверг, 30 июля 2015 г.

Коротко. Сделал описание части аксиоматики на Dephi, а части - на скриптах

По мотивам - Коротко. Сделал чудную штуку - переопределение слов

Коротко. Сделал описание части аксиоматики на Dephi, а части - на скриптах.

И сделал для этого обвязку генерируемую с модели.

Выглядит примерно так:

https://bitbucket.org/lulinalex/mindstream/commits/58dc1f79b8592717091c559c7cf0f8d509dbe97d

vtComboBoxWordsPack.pas:



unit vtComboBoxWordsPack;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Библиотека "ScriptEngine$VT"
// Модуль: "vtComboBoxWordsPack.pas"
// Родные Delphi интерфейсы (.pas)
// Generated from UML model, root element: ScriptKeywordsPack::Class Shared Delphi::ScriptEngine$VT::vtComboBoxWords::vtComboBoxWordsPack
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

{$Include ..\ScriptEngine\seDefine.inc}

interface

{$If not defined(NoScripts)}
uses
  StdCtrls,
  tfwScriptingInterfaces,
  tfwRegisterableWord,
  vtComboTree,
  tfwAxiomaticsResNameGetter
  ;

{$IfEnd} //not NoScripts

implementation

{$If not defined(NoScripts)}
uses
  tfwAxiomaticsResNameGetters,
  vtComboBoxQS,
  l3TreeInterfaces,
  l3Filer,
  l3Types,
  l3Interfaces,
  SysUtils,
  TypInfo,
  tfwTypeRegistrator
  ;

type
//#UC START# *D1FD416FEE23ci*
//#UC END# *D1FD416FEE23ci*
 TvtComboBoxWordsPackResNameGetter = {final} class(TtfwAxiomaticsResNameGetter)
  {* Регистрация скриптованой аксиоматики }
 public
 // realized methods
   class function ResName: AnsiString; override;
//#UC START# *D1FD416FEE23publ*
//#UC END# *D1FD416FEE23publ*
 end;//TvtComboBoxWordsPackResNameGetter

// start class TvtComboBoxWordsPackResNameGetter

class function TvtComboBoxWordsPackResNameGetter.ResName: AnsiString;
 {-}
begin
 Result := 'vtComboBoxWordsPack';
end;//TvtComboBoxWordsPackResNameGetter.ResName

 {$R vtComboBoxWordsPack.res vtComboBoxWordsPack.rc}

type
 TCustomComboBoxFriend = {abstract} class(TCustomComboBox)
  {* Друг для TCustomComboBox }
 end;//TCustomComboBoxFriend

 TkwPopComboBoxDropDown = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboBox:DropDown
*Пример:*
[code]
 aValue aComboBox pop:ComboBox:DropDown
[code]  }
 private
 // private methods
   procedure DropDown(const aCtx: TtfwContext;
    aComboBox: TCustomComboBox;
    aValue: Boolean);
     {* Реализация слова скрипта pop:ComboBox:DropDown }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboBoxDropDown

// start class TkwPopComboBoxDropDown

procedure TkwPopComboBoxDropDown.DropDown(const aCtx: TtfwContext;
  aComboBox: TCustomComboBox;
  aValue: Boolean);
//#UC START# *D4660B294082_B7676CD1AAB3_var*
//#UC END# *D4660B294082_B7676CD1AAB3_var*
begin
//#UC START# *D4660B294082_B7676CD1AAB3_impl*
 aCombobox.DroppedDown := aValue;
//#UC END# *D4660B294082_B7676CD1AAB3_impl*
end;//TkwPopComboBoxDropDown.DropDown

procedure TkwPopComboBoxDropDown.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboBox : TCustomComboBox;
 l_aValue : Boolean;
begin
 try
  l_aComboBox := TCustomComboBox(aCtx.rEngine.PopObjAs(TCustomComboBox));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboBox: TCustomComboBox : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 try
  l_aValue := (aCtx.rEngine.PopBool);
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aValue: Boolean : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 DropDown(aCtx, l_aComboBox, l_aValue);
end;//TkwPopComboBoxDropDown.DoDoIt

class function TkwPopComboBoxDropDown.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboBox:DropDown';
end;//TkwPopComboBoxDropDown.GetWordNameForRegister

function TkwPopComboBoxDropDown.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := @tfw_tiVoid;
end;//TkwPopComboBoxDropDown.GetResultTypeInfo

type
 TkwPopComboBoxGetItemIndex = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboBox:GetItemIndex
*Тип результата:* Integer
*Пример:*
[code]
INTEGER VAR l_Integer
 aComboBox pop:ComboBox:GetItemIndex >>> l_Integer
[code]  }
 private
 // private methods
   function GetItemIndex(const aCtx: TtfwContext;
    aComboBox: TCustomComboBox): Integer;
     {* Реализация слова скрипта pop:ComboBox:GetItemIndex }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboBoxGetItemIndex

// start class TkwPopComboBoxGetItemIndex

function TkwPopComboBoxGetItemIndex.GetItemIndex(const aCtx: TtfwContext;
  aComboBox: TCustomComboBox): Integer;
//#UC START# *0DE7BD329B92_731890DC5F90_var*
//#UC END# *0DE7BD329B92_731890DC5F90_var*
begin
//#UC START# *0DE7BD329B92_731890DC5F90_impl*
 Result := aCombobox.ItemIndex;
//#UC END# *0DE7BD329B92_731890DC5F90_impl*
end;//TkwPopComboBoxGetItemIndex.GetItemIndex

procedure TkwPopComboBoxGetItemIndex.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboBox : TCustomComboBox;
begin
 try
  l_aComboBox := TCustomComboBox(aCtx.rEngine.PopObjAs(TCustomComboBox));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboBox: TCustomComboBox : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 aCtx.rEngine.PushInt((GetItemIndex(aCtx, l_aComboBox)));
end;//TkwPopComboBoxGetItemIndex.DoDoIt

class function TkwPopComboBoxGetItemIndex.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboBox:GetItemIndex';
end;//TkwPopComboBoxGetItemIndex.GetWordNameForRegister

function TkwPopComboBoxGetItemIndex.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := TypeInfo(Integer);
end;//TkwPopComboBoxGetItemIndex.GetResultTypeInfo

type
 TkwPopComboBoxIndexOf = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboBox:IndexOf
*Тип результата:* Integer
*Пример:*
[code]
INTEGER VAR l_Integer
 aString aComboBox pop:ComboBox:IndexOf >>> l_Integer
[code]  }
 private
 // private methods
   function IndexOf(const aCtx: TtfwContext;
    aComboBox: TCustomComboBox;
    const aString: AnsiString): Integer;
     {* Реализация слова скрипта pop:ComboBox:IndexOf }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboBoxIndexOf

// start class TkwPopComboBoxIndexOf

function TkwPopComboBoxIndexOf.IndexOf(const aCtx: TtfwContext;
  aComboBox: TCustomComboBox;
  const aString: AnsiString): Integer;
//#UC START# *56A99D643C95_697C86093610_var*
//#UC END# *56A99D643C95_697C86093610_var*
begin
//#UC START# *56A99D643C95_697C86093610_impl*
 Result := aCombobox.Items.IndexOf(aString);
//#UC END# *56A99D643C95_697C86093610_impl*
end;//TkwPopComboBoxIndexOf.IndexOf

procedure TkwPopComboBoxIndexOf.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboBox : TCustomComboBox;
 l_aString : AnsiString;
begin
 try
  l_aComboBox := TCustomComboBox(aCtx.rEngine.PopObjAs(TCustomComboBox));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboBox: TCustomComboBox : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 try
  l_aString := (aCtx.rEngine.PopDelphiString);
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aString: AnsiString : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 aCtx.rEngine.PushInt((IndexOf(aCtx, l_aComboBox, l_aString)));
end;//TkwPopComboBoxIndexOf.DoDoIt

class function TkwPopComboBoxIndexOf.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboBox:IndexOf';
end;//TkwPopComboBoxIndexOf.GetWordNameForRegister

function TkwPopComboBoxIndexOf.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := TypeInfo(Integer);
end;//TkwPopComboBoxIndexOf.GetResultTypeInfo

type
 TkwPopComboBoxSelectItem = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboBox:SelectItem
*Пример:*
[code]
 aString aComboBox pop:ComboBox:SelectItem
[code]  }
 private
 // private methods
   procedure SelectItem(const aCtx: TtfwContext;
    aComboBox: TCustomComboBox;
    const aString: AnsiString);
     {* Реализация слова скрипта pop:ComboBox:SelectItem }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboBoxSelectItem

// start class TkwPopComboBoxSelectItem

procedure TkwPopComboBoxSelectItem.SelectItem(const aCtx: TtfwContext;
  aComboBox: TCustomComboBox;
  const aString: AnsiString);
//#UC START# *BC0BF0E96B69_E94AE4FC3D32_var*
//#UC END# *BC0BF0E96B69_E94AE4FC3D32_var*
begin
//#UC START# *BC0BF0E96B69_E94AE4FC3D32_impl*
 TCustomComboBoxFriend(aCombobox).SelectItem(aString);
//#UC END# *BC0BF0E96B69_E94AE4FC3D32_impl*
end;//TkwPopComboBoxSelectItem.SelectItem

procedure TkwPopComboBoxSelectItem.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboBox : TCustomComboBox;
 l_aString : AnsiString;
begin
 try
  l_aComboBox := TCustomComboBox(aCtx.rEngine.PopObjAs(TCustomComboBox));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboBox: TCustomComboBox : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 try
  l_aString := (aCtx.rEngine.PopDelphiString);
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aString: AnsiString : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 SelectItem(aCtx, l_aComboBox, l_aString);
end;//TkwPopComboBoxSelectItem.DoDoIt

class function TkwPopComboBoxSelectItem.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboBox:SelectItem';
end;//TkwPopComboBoxSelectItem.GetWordNameForRegister

function TkwPopComboBoxSelectItem.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := @tfw_tiVoid;
end;//TkwPopComboBoxSelectItem.GetResultTypeInfo

type
 TkwPopComboBoxSetItemIndex = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboBox:SetItemIndex
*Пример:*
[code]
 anIndex aComboBox pop:ComboBox:SetItemIndex
[code]  }
 private
 // private methods
   procedure SetItemIndex(const aCtx: TtfwContext;
    aComboBox: TCustomComboBox;
    anIndex: Integer);
     {* Реализация слова скрипта pop:ComboBox:SetItemIndex }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboBoxSetItemIndex

// start class TkwPopComboBoxSetItemIndex

procedure TkwPopComboBoxSetItemIndex.SetItemIndex(const aCtx: TtfwContext;
  aComboBox: TCustomComboBox;
  anIndex: Integer);
//#UC START# *589DC0B1C0D3_DF10F6F55A61_var*
//#UC END# *589DC0B1C0D3_DF10F6F55A61_var*
begin
//#UC START# *589DC0B1C0D3_DF10F6F55A61_impl*
 aCombobox.ItemIndex := anIndex;
 TCustomComboBoxFriend(aCombobox).Select;
//#UC END# *589DC0B1C0D3_DF10F6F55A61_impl*
end;//TkwPopComboBoxSetItemIndex.SetItemIndex

procedure TkwPopComboBoxSetItemIndex.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboBox : TCustomComboBox;
 l_anIndex : Integer;
begin
 try
  l_aComboBox := TCustomComboBox(aCtx.rEngine.PopObjAs(TCustomComboBox));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboBox: TCustomComboBox : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 try
  l_anIndex := (aCtx.rEngine.PopInt);
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра anIndex: Integer : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 SetItemIndex(aCtx, l_aComboBox, l_anIndex);
end;//TkwPopComboBoxSetItemIndex.DoDoIt

class function TkwPopComboBoxSetItemIndex.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboBox:SetItemIndex';
end;//TkwPopComboBoxSetItemIndex.GetWordNameForRegister

function TkwPopComboBoxSetItemIndex.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := @tfw_tiVoid;
end;//TkwPopComboBoxSetItemIndex.GetResultTypeInfo

type
 TkwPopComboBoxSaveItems = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboBox:SaveItems
[panel]*Формат:* имя_файла  контрол pop:ComboBox:SaveItems 
*Описание:* Сохраняет все пункты выпадающего списка (задается параметром контрол) в файл (задается параметром имя_файла)  и сравнивает с эталоном.
*Пример:*
[code]
'MyList.cmbx' 'StyleComboBox' byname:control:push pop:ComboBox:SaveItems
[code] 
*Результат:* Сохраняет содержимое комбобокса 'StyleComboBox' в  файл  'MyList.cmbx' и сравнивает с эталоном.[panel]
*Пример:*
[code]
 aFileName aComboBox pop:ComboBox:SaveItems
[code]  }
 private
 // private methods
   procedure SaveItems(const aCtx: TtfwContext;
    aComboBox: TCustomComboBox;
    const aFileName: AnsiString);
     {* Реализация слова скрипта pop:ComboBox:SaveItems }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboBoxSaveItems

// start class TkwPopComboBoxSaveItems

procedure TkwPopComboBoxSaveItems.SaveItems(const aCtx: TtfwContext;
  aComboBox: TCustomComboBox;
  const aFileName: AnsiString);
//#UC START# *414096239FD4_F4F78563FAA5_var*
var
 l_S: AnsiString;
 l_Filer : Tl3CustomDosFiler;
 I: Integer;
 l_Count: Integer;
//#UC END# *414096239FD4_F4F78563FAA5_var*
begin
//#UC START# *414096239FD4_F4F78563FAA5_impl*
 l_S := aCtx.rCaller.ResolveOutputFilePath(aFileName);
 l_S := ChangeFileExt(l_S, '.cmbx');
 l_Filer := Tl3CustomDosFiler.Make(l_S, l3_fmWrite, false);
 try
  l_Filer.Open;
  try
   l_Count := aCombobox.Items.Count;
   for I := 0 to l_Count - 1 do
    l_Filer.WriteLn(aCombobox.Items[I]);
  finally
   l_Filer.Close;
  end;
 finally
  FreeAndNil(l_Filer);
 end;//try..finally
//#UC END# *414096239FD4_F4F78563FAA5_impl*
end;//TkwPopComboBoxSaveItems.SaveItems

procedure TkwPopComboBoxSaveItems.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboBox : TCustomComboBox;
 l_aFileName : AnsiString;
begin
 try
  l_aComboBox := TCustomComboBox(aCtx.rEngine.PopObjAs(TCustomComboBox));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboBox: TCustomComboBox : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 try
  l_aFileName := (aCtx.rEngine.PopDelphiString);
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aFileName: AnsiString : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 SaveItems(aCtx, l_aComboBox, l_aFileName);
end;//TkwPopComboBoxSaveItems.DoDoIt

class function TkwPopComboBoxSaveItems.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboBox:SaveItems';
end;//TkwPopComboBoxSaveItems.GetWordNameForRegister

function TkwPopComboBoxSaveItems.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := @tfw_tiVoid;
end;//TkwPopComboBoxSaveItems.GetResultTypeInfo

type
 TkwPopComboTreeDropDown = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboTree:DropDown
*Пример:*
[code]
 aValue aComboTree pop:ComboTree:DropDown
[code]  }
 private
 // private methods
   procedure DropDown(const aCtx: TtfwContext;
    aComboTree: TvtComboTree;
    aValue: Boolean);
     {* Реализация слова скрипта pop:ComboTree:DropDown }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboTreeDropDown

// start class TkwPopComboTreeDropDown

procedure TkwPopComboTreeDropDown.DropDown(const aCtx: TtfwContext;
  aComboTree: TvtComboTree;
  aValue: Boolean);
//#UC START# *BB9DD9C656EE_CBB40EABEDB6_var*
//#UC END# *BB9DD9C656EE_CBB40EABEDB6_var*
begin
//#UC START# *BB9DD9C656EE_CBB40EABEDB6_impl*
 aComboTree.Dropped := aValue;
//#UC END# *BB9DD9C656EE_CBB40EABEDB6_impl*
end;//TkwPopComboTreeDropDown.DropDown

procedure TkwPopComboTreeDropDown.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboTree : TvtComboTree;
 l_aValue : Boolean;
begin
 try
  l_aComboTree := TvtComboTree(aCtx.rEngine.PopObjAs(TvtComboTree));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboTree: TvtComboTree : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 try
  l_aValue := (aCtx.rEngine.PopBool);
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aValue: Boolean : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 DropDown(aCtx, l_aComboTree, l_aValue);
end;//TkwPopComboTreeDropDown.DoDoIt

class function TkwPopComboTreeDropDown.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboTree:DropDown';
end;//TkwPopComboTreeDropDown.GetWordNameForRegister

function TkwPopComboTreeDropDown.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := @tfw_tiVoid;
end;//TkwPopComboTreeDropDown.GetResultTypeInfo

type
 TkwPopComboTreeGetItemIndex = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboTree:GetItemIndex
*Тип результата:* Integer
*Пример:*
[code]
INTEGER VAR l_Integer
 aComboTree pop:ComboTree:GetItemIndex >>> l_Integer
[code]  }
 private
 // private methods
   function GetItemIndex(const aCtx: TtfwContext;
    aComboTree: TvtComboTree): Integer;
     {* Реализация слова скрипта pop:ComboTree:GetItemIndex }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboTreeGetItemIndex

// start class TkwPopComboTreeGetItemIndex

function TkwPopComboTreeGetItemIndex.GetItemIndex(const aCtx: TtfwContext;
  aComboTree: TvtComboTree): Integer;
//#UC START# *1C4FCF6402FE_FDB2008A1DAA_var*
//#UC END# *1C4FCF6402FE_FDB2008A1DAA_var*
begin
//#UC START# *1C4FCF6402FE_FDB2008A1DAA_impl*
 if Assigned(aComboTree.ChoosenValue) then
  Result := aComboTree.FindIndexOf(aComboTree.ChoosenValue)
 else
  Result := aComboTree.ItemIndex;
//#UC END# *1C4FCF6402FE_FDB2008A1DAA_impl*
end;//TkwPopComboTreeGetItemIndex.GetItemIndex

procedure TkwPopComboTreeGetItemIndex.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboTree : TvtComboTree;
begin
 try
  l_aComboTree := TvtComboTree(aCtx.rEngine.PopObjAs(TvtComboTree));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboTree: TvtComboTree : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 aCtx.rEngine.PushInt((GetItemIndex(aCtx, l_aComboTree)));
end;//TkwPopComboTreeGetItemIndex.DoDoIt

class function TkwPopComboTreeGetItemIndex.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboTree:GetItemIndex';
end;//TkwPopComboTreeGetItemIndex.GetWordNameForRegister

function TkwPopComboTreeGetItemIndex.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := TypeInfo(Integer);
end;//TkwPopComboTreeGetItemIndex.GetResultTypeInfo

type
 TkwPopComboTreeIndexOf = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboTree:IndexOf
*Тип результата:* Integer
*Пример:*
[code]
INTEGER VAR l_Integer
 aString aComboTree pop:ComboTree:IndexOf >>> l_Integer
[code]  }
 private
 // private methods
   function IndexOf(const aCtx: TtfwContext;
    aComboTree: TvtComboTree;
    const aString: AnsiString): Integer;
     {* Реализация слова скрипта pop:ComboTree:IndexOf }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboTreeIndexOf

// start class TkwPopComboTreeIndexOf

function TkwPopComboTreeIndexOf.IndexOf(const aCtx: TtfwContext;
  aComboTree: TvtComboTree;
  const aString: AnsiString): Integer;
//#UC START# *6E676C6B7B53_C0C842FB1A8C_var*
//#UC END# *6E676C6B7B53_C0C842FB1A8C_var*
begin
//#UC START# *6E676C6B7B53_C0C842FB1A8C_impl*
 Result := aComboTree.Items.IndexOf(aString);
//#UC END# *6E676C6B7B53_C0C842FB1A8C_impl*
end;//TkwPopComboTreeIndexOf.IndexOf

procedure TkwPopComboTreeIndexOf.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboTree : TvtComboTree;
 l_aString : AnsiString;
begin
 try
  l_aComboTree := TvtComboTree(aCtx.rEngine.PopObjAs(TvtComboTree));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboTree: TvtComboTree : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 try
  l_aString := (aCtx.rEngine.PopDelphiString);
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aString: AnsiString : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 aCtx.rEngine.PushInt((IndexOf(aCtx, l_aComboTree, l_aString)));
end;//TkwPopComboTreeIndexOf.DoDoIt

class function TkwPopComboTreeIndexOf.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboTree:IndexOf';
end;//TkwPopComboTreeIndexOf.GetWordNameForRegister

function TkwPopComboTreeIndexOf.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := TypeInfo(Integer);
end;//TkwPopComboTreeIndexOf.GetResultTypeInfo

type
 TkwPopComboTreeSelectItem = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboTree:SelectItem
*Пример:*
[code]
 aString aComboTree pop:ComboTree:SelectItem
[code]  }
 private
 // private methods
   procedure SelectItem(const aCtx: TtfwContext;
    aComboTree: TvtComboTree;
    const aString: AnsiString);
     {* Реализация слова скрипта pop:ComboTree:SelectItem }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboTreeSelectItem

// start class TkwPopComboTreeSelectItem

procedure TkwPopComboTreeSelectItem.SelectItem(const aCtx: TtfwContext;
  aComboTree: TvtComboTree;
  const aString: AnsiString);
//#UC START# *8E1C1B564723_B5A21C7BEE37_var*
//#UC END# *8E1C1B564723_B5A21C7BEE37_var*
begin
//#UC START# *8E1C1B564723_B5A21C7BEE37_impl*
 aComboTree.ItemIndex := aComboTree.Items.IndexOf(aString);
//#UC END# *8E1C1B564723_B5A21C7BEE37_impl*
end;//TkwPopComboTreeSelectItem.SelectItem

procedure TkwPopComboTreeSelectItem.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboTree : TvtComboTree;
 l_aString : AnsiString;
begin
 try
  l_aComboTree := TvtComboTree(aCtx.rEngine.PopObjAs(TvtComboTree));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboTree: TvtComboTree : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 try
  l_aString := (aCtx.rEngine.PopDelphiString);
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aString: AnsiString : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 SelectItem(aCtx, l_aComboTree, l_aString);
end;//TkwPopComboTreeSelectItem.DoDoIt

class function TkwPopComboTreeSelectItem.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboTree:SelectItem';
end;//TkwPopComboTreeSelectItem.GetWordNameForRegister

function TkwPopComboTreeSelectItem.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := @tfw_tiVoid;
end;//TkwPopComboTreeSelectItem.GetResultTypeInfo

type
 TkwPopComboTreeSetItemIndex = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboTree:SetItemIndex
*Пример:*
[code]
 anIndex aComboTree pop:ComboTree:SetItemIndex
[code]  }
 private
 // private methods
   procedure SetItemIndex(const aCtx: TtfwContext;
    aComboTree: TvtComboTree;
    anIndex: Integer);
     {* Реализация слова скрипта pop:ComboTree:SetItemIndex }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboTreeSetItemIndex

// start class TkwPopComboTreeSetItemIndex

procedure TkwPopComboTreeSetItemIndex.SetItemIndex(const aCtx: TtfwContext;
  aComboTree: TvtComboTree;
  anIndex: Integer);
//#UC START# *6A72CBA7686D_8C448529271A_var*
var
 l_Node: Il3SimpleNode;
//#UC END# *6A72CBA7686D_8C448529271A_var*
begin
//#UC START# *6A72CBA7686D_8C448529271A_impl*
 if (aComboTree is TvtComboBoxQS) then //561950536
  aComboTree.ItemIndex := anIndex
 else
 begin
  l_Node := aComboTree.Tree.GetNode(anIndex);
  aComboTree.Tree.GotoOnNode(l_Node);
  aComboTree.ShowNode(l_Node, True);
 end;//aComboTree is TvtComboBoxQS
//#UC END# *6A72CBA7686D_8C448529271A_impl*
end;//TkwPopComboTreeSetItemIndex.SetItemIndex

procedure TkwPopComboTreeSetItemIndex.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboTree : TvtComboTree;
 l_anIndex : Integer;
begin
 try
  l_aComboTree := TvtComboTree(aCtx.rEngine.PopObjAs(TvtComboTree));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboTree: TvtComboTree : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 try
  l_anIndex := (aCtx.rEngine.PopInt);
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра anIndex: Integer : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 SetItemIndex(aCtx, l_aComboTree, l_anIndex);
end;//TkwPopComboTreeSetItemIndex.DoDoIt

class function TkwPopComboTreeSetItemIndex.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboTree:SetItemIndex';
end;//TkwPopComboTreeSetItemIndex.GetWordNameForRegister

function TkwPopComboTreeSetItemIndex.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := @tfw_tiVoid;
end;//TkwPopComboTreeSetItemIndex.GetResultTypeInfo

type
 TkwPopComboTreeSaveItems = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboTree:SaveItems
[panel]*Формат:* имя_файла  контрол pop:ComboBox:SaveItems 
*Описание:* Сохраняет все пункты выпадающего списка (задается параметром контрол) в файл (задается параметром имя_файла)  и сравнивает с эталоном.
*Пример:*
[code]
'MyList.cmbx' 'StyleComboBox' byname:control:push pop:ComboBox:SaveItems
[code] 
*Результат:* Сохраняет содержимое комбобокса 'StyleComboBox' в  файл  'MyList.cmbx' и сравнивает с эталоном.[panel]
*Пример:*
[code]
 aFileName aComboTree pop:ComboTree:SaveItems
[code]  }
 private
 // private methods
   procedure SaveItems(const aCtx: TtfwContext;
    aComboTree: TvtComboTree;
    const aFileName: AnsiString);
     {* Реализация слова скрипта pop:ComboTree:SaveItems }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboTreeSaveItems

// start class TkwPopComboTreeSaveItems

procedure TkwPopComboTreeSaveItems.SaveItems(const aCtx: TtfwContext;
  aComboTree: TvtComboTree;
  const aFileName: AnsiString);
//#UC START# *1F4D33D465E4_957FA5E0E3AB_var*
var
 l_S: AnsiString;
 l_Filer : Tl3CustomDosFiler;
//#UC END# *1F4D33D465E4_957FA5E0E3AB_var*
begin
//#UC START# *1F4D33D465E4_957FA5E0E3AB_impl*
 l_S := aCtx.rCaller.ResolveOutputFilePath(aFileName);
 l_S := ChangeFileExt(l_S, '.cmbx');
 l_Filer := Tl3CustomDosFiler.Make(l_S, l3_fmWrite, false);
 try
  l_Filer.Open;
  try
   l_Filer.WriteLn((aComboTree.Items as Il3Strings).Items.Text);
  finally
   l_Filer.Close;
  end;
 finally
  FreeAndNil(l_Filer);
 end;//try..finally
//#UC END# *1F4D33D465E4_957FA5E0E3AB_impl*
end;//TkwPopComboTreeSaveItems.SaveItems

procedure TkwPopComboTreeSaveItems.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboTree : TvtComboTree;
 l_aFileName : AnsiString;
begin
 try
  l_aComboTree := TvtComboTree(aCtx.rEngine.PopObjAs(TvtComboTree));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboTree: TvtComboTree : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 try
  l_aFileName := (aCtx.rEngine.PopDelphiString);
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aFileName: AnsiString : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 SaveItems(aCtx, l_aComboTree, l_aFileName);
end;//TkwPopComboTreeSaveItems.DoDoIt

class function TkwPopComboTreeSaveItems.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboTree:SaveItems';
end;//TkwPopComboTreeSaveItems.GetWordNameForRegister

function TkwPopComboTreeSaveItems.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := @tfw_tiVoid;
end;//TkwPopComboTreeSaveItems.GetResultTypeInfo
{$IfEnd} //not NoScripts

initialization
{$If not defined(NoScripts)}
// Регистрация скриптованой аксиоматики
 TvtComboBoxWordsPackResNameGetter.Register;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboBox_DropDown
 TkwPopComboBoxDropDown.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboBox_GetItemIndex
 TkwPopComboBoxGetItemIndex.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboBox_IndexOf
 TkwPopComboBoxIndexOf.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboBox_SelectItem
 TkwPopComboBoxSelectItem.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboBox_SetItemIndex
 TkwPopComboBoxSetItemIndex.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboBox_SaveItems
 TkwPopComboBoxSaveItems.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboTree_DropDown
 TkwPopComboTreeDropDown.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboTree_GetItemIndex
 TkwPopComboTreeGetItemIndex.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboTree_IndexOf
 TkwPopComboTreeIndexOf.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboTree_SelectItem
 TkwPopComboTreeSelectItem.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboTree_SetItemIndex
 TkwPopComboTreeSetItemIndex.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация pop_ComboTree_SaveItems
 TkwPopComboTreeSaveItems.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация типа TtfwContext
 TtfwTypeRegistrator.RegisterType(@tfw_tiStruct);
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация типа TCustomComboBox
 TtfwTypeRegistrator.RegisterType(TypeInfo(TCustomComboBox));
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация типа Boolean
 TtfwTypeRegistrator.RegisterType(TypeInfo(Boolean));
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация типа Integer
 TtfwTypeRegistrator.RegisterType(TypeInfo(Integer));
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация типа String
 TtfwTypeRegistrator.RegisterType(TypeInfo(AnsiString));
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация типа TvtComboTree
 TtfwTypeRegistrator.RegisterType(TypeInfo(TvtComboTree));
{$IfEnd} //not NoScripts

end.

vtComboBoxWordsPack.rc:

vtComboBoxWordsPack RCDATA LOADONCALL MOVEABLE DISCARDABLE vtComboBoxWordsPack.rc.script

vtComboBoxWordsPack.rc.script:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Библиотека "ScriptEngine$VT"
// Модуль: "vtComboBoxWordsPack.rc.script"
// Скрипты в ресурсах (.rc.script)
// Generated from UML model, root element: ScriptKeywordsPack::Class Shared Delphi::ScriptEngine$VT::vtComboBoxWords::vtComboBoxWordsPack
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//#UC START# *54EC8C7C011Eimpl*

// Декораторы для слов работающих с комбо

USES
 axiom:ComboBox
 axiom:ComboTree
;

REDEFINITION
 : pop:ComboBox:DropDown
  OBJECT IN aCombo
  if ( aCombo Is class::TvtComboTree ) then
   ( aCombo pop:ComboTree:DropDown )
  else 
   ( aCombo inherited )
 ; // pop:ComboBox:DropDown
 
REDEFINITION
 : pop:ComboBox:GetItemIndex
  OBJECT IN aCombo
  if ( aCombo Is class::TvtComboTree ) then
   ( aCombo pop:ComboTree:GetItemIndex )
  else 
   ( aCombo inherited )
 ; // pop:ComboBox:DropDown
 
REDEFINITION
 : pop:ComboBox:IndexOf
  OBJECT IN aCombo
  if ( aCombo Is class::TvtComboTree ) then
   ( aCombo pop:ComboTree:IndexOf )
  else 
   ( aCombo inherited )
 ; // pop:ComboBox:DropDown
 
REDEFINITION
 : pop:ComboBox:SaveItems
  OBJECT IN aCombo
  if ( aCombo Is class::TvtComboTree ) then
   ( aCombo pop:ComboTree:SaveItems )
  else 
   ( aCombo inherited )
 ; // pop:ComboBox:SelectItem
 
REDEFINITION
 : pop:ComboBox:SelectItem
  OBJECT IN aCombo
  if ( aCombo Is class::TvtComboTree ) then
   ( aCombo pop:ComboTree:SelectItem )
  else 
   ( aCombo inherited )
 ; // pop:ComboBox:SelectItem
 
REDEFINITION
 : pop:ComboBox:SetItemIndex
  OBJECT IN aCombo
  if ( aCombo Is class::TvtComboTree ) then
   ( aCombo pop:ComboTree:SetItemIndex )
  else 
   ( aCombo inherited )
 ; // pop:ComboBox:SetItemIndex
 
//#UC END# *54EC8C7C011Eimpl*


vtComboBoxWordsPack.res.cmd:

brcc32 vtComboBoxWordsPack.rc

vtComboTreeWordsPack.pas:

unit vtComboTreeWordsPack;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Библиотека "ScriptEngine$Everest"
// Модуль: "vtComboTreeWordsPack.pas"
// Родные Delphi интерфейсы (.pas)
// Generated from UML model, root element: ScriptKeywordsPack::Class Shared Delphi::ScriptEngine$Everest::EditorFromStackKeyWords::vtComboTreeWordsPack
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

{$Include ..\ScriptEngine\seDefine.inc}

interface

{$If not defined(NoScripts)}
uses
  l3TreeInterfaces,
  tfwScriptingInterfaces,
  tfwRegisterableWord,
  vtComboTree
  ;

{$IfEnd} //not NoScripts

implementation

{$If not defined(NoScripts)}
uses
  TypInfo,
  SysUtils,
  tfwTypeRegistrator
  ;

type
 TkwPopComboTreeCurrentNode = {final scriptword} class(TtfwRegisterableWord)
  {* Слово скрипта pop:ComboTree:CurrentNode
*Тип результата:* Il3SimpleNode
*Пример:*
[code]
INTERFACE VAR l_Il3SimpleNode
 aComboTree pop:ComboTree:CurrentNode >>> l_Il3SimpleNode
[code]  }
 private
 // private methods
   function CurrentNode(const aCtx: TtfwContext;
    aComboTree: TvtComboTree): Il3SimpleNode;
     {* Реализация слова скрипта pop:ComboTree:CurrentNode }
 protected
 // realized methods
   procedure DoDoIt(const aCtx: TtfwContext); override;
 protected
 // overridden protected methods
   class function GetWordNameForRegister: AnsiString; override;
 public
 // overridden public methods
   function GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo; override;
 end;//TkwPopComboTreeCurrentNode

// start class TkwPopComboTreeCurrentNode

function TkwPopComboTreeCurrentNode.CurrentNode(const aCtx: TtfwContext;
  aComboTree: TvtComboTree): Il3SimpleNode;
//#UC START# *E52B39199FD5_9F9FF0616B3E_var*
//#UC END# *E52B39199FD5_9F9FF0616B3E_var*
begin
//#UC START# *E52B39199FD5_9F9FF0616B3E_impl*
 Result := aComboTree.Tree.GetCurrentNode;
//#UC END# *E52B39199FD5_9F9FF0616B3E_impl*
end;//TkwPopComboTreeCurrentNode.CurrentNode

procedure TkwPopComboTreeCurrentNode.DoDoIt(const aCtx: TtfwContext);
 {-}
var
 l_aComboTree : TvtComboTree;
begin
 try
  l_aComboTree := TvtComboTree(aCtx.rEngine.PopObjAs(TvtComboTree));
 except
  on E: Exception do
  begin
   RunnerError('Ошибка при получении параметра aComboTree: TvtComboTree : ' + E.Message, aCtx);
   Exit;
  end;//on E: Exception
 end;//try..except
 aCtx.rEngine.PushIntf((CurrentNode(aCtx, l_aComboTree)));
end;//TkwPopComboTreeCurrentNode.DoDoIt

class function TkwPopComboTreeCurrentNode.GetWordNameForRegister: AnsiString;
 {-}
begin
 Result := 'pop:ComboTree:CurrentNode';
end;//TkwPopComboTreeCurrentNode.GetWordNameForRegister

function TkwPopComboTreeCurrentNode.GetResultTypeInfo(const aCtx: TtfwContext): PTypeInfo;
 {-}
begin
 Result := TypeInfo(Il3SimpleNode);
end;//TkwPopComboTreeCurrentNode.GetResultTypeInfo
{$IfEnd} //not NoScripts

initialization
{$If not defined(NoScripts)}
// Регистрация pop_ComboTree_CurrentNode
 TkwPopComboTreeCurrentNode.RegisterInEngine;
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация типа TtfwContext
 TtfwTypeRegistrator.RegisterType(@tfw_tiStruct);
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация типа TvtComboTree
 TtfwTypeRegistrator.RegisterType(TypeInfo(TvtComboTree));
{$IfEnd} //not NoScripts
{$If not defined(NoScripts)}
// Регистрация типа Il3SimpleNode
 TtfwTypeRegistrator.RegisterType(TypeInfo(Il3SimpleNode));
{$IfEnd} //not NoScripts

end.

ScriptKeywordsPack.tpi:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Модуль: "w:/MDProcess/DelphiSpecific/DelphiLang/Implementation/ScriptKeywordsPack.tpi"
// Генерация мета-шаблонов
// Generated from UML model, root element: <<MDAClass::Class>> MDProcess$ForDelphi::DelphiSpecific::DelphiLang::Implementation::ScriptKeywordsPack
//
// Набор слов скрипта
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

: ScriptKeywordsPack::Class
? Набор слов скрипта
> ScriptKeyword::Class

= UtilityPack::Class

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Параметры стереотипа
// Параметры визуализации
$ C 147,168,174

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Пользовательские свойства

p no_pop:tribool=undefined ? 
p no class name:tribool=undefined ? 
p needs script:tribool=undefined ? Нужна скриптовая обвязка

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Функции стереотипа

%f _st_space_key
 SHD

%f _wiki_up_print
 %S#[inherited][{"%S{no_pop}"!="%S{!no_pop}"}%f_up_prefix(%S) *no_pop* = *%S{no_pop}*
 ][{"%S{no class name}"!="%S{!no class name}"}%f_up_prefix(%S) *no class name* = *%S{no class name}*
 ][{"%S{needs script}"!="%S{!needs script}"}%f_up_prefix(%S) *needs script* = *%S{needs script}* - Нужна скриптовая обвязка
 ]


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Унаследованная реализация

// перекрытие базового стереотипа Delphi интерфейсы и реализация::MDAGenerator
%f _DoSpell
//#UC START# *4B2A19E3038Bfor4F2C15C90252*
// %S%f_set_implement_select_type(include)\

 [{%S{needs script}=true}\
 %S%f_add_class(%SU_ResNameGetter,SimpleClass,T%f_pas_UnitName(%S)ResNameGetter,Class_Inst)\
 %{Class_Inst}%f_set_documentation(Регистрация скриптованой аксиоматики)\
 %{Class_Inst}%f_set_abstraction_type(final)\
 %{Class_Inst}%f_set_visibility_type(PrivateAccess)\
 [{"%{TtfwAxiomaticsResNameGetter}N"=""}%f_find_element(TtfwAxiomaticsResNameGetter,TtfwAxiomaticsResNameGetter)]\
 %f_addG(%{Class_Inst},%{TtfwAxiomaticsResNameGetter})\
 %{Class_Inst}%f_set_up(need UC,true)\

 %{Class_Inst}%f_set_uc_content(intf.pas,impl,\
  \{$R %f_pas_UnitName(%S).res %f_pas_UnitName(%S).rc\}\
 )\

 %{Class_Inst}%f_add_operation(%{Class_Inst}U_Reg,ini,RegAxiom (),Reg_Instance)\
 %{Reg_Instance}%f_set_documentation(Регистрация скриптованой аксиоматики)\
 %{Reg_Instance}%f_set_abstraction_type(final)\
 %{Reg_Instance}%f_set_visibility_type(PrivateAccess)\

 %{Reg_Instance}%f_set_uc_content(intf.pas,,\
  %f_pas_TypeName(%{Class_Inst}).Register;\
 )\

 [{"%{TtfwAxiomaticsResNameGetter.ResName}N"=""}%f_find_element(55B7A3AF0359,TtfwAxiomaticsResNameGetter.ResName)]\

 %{TtfwAxiomaticsResNameGetter.ResName}%f_set_uc_content(intf.pas,_%f_pas_MethodOwnerID(%{TtfwAxiomaticsResNameGetter.ResName},%{Class_Inst})_var,\
  {-}\
 )\

 %{TtfwAxiomaticsResNameGetter.ResName}%f_set_uc_content(intf.pas,_%f_pas_MethodOwnerID(%{TtfwAxiomaticsResNameGetter.ResName},%{Class_Inst})_impl,\
  Result := '%f_pas_UnitName(%S)';\
 )\

 ]\

 %f_clear_list(PROPS)\

 <{}{%CS=property|%CS=readonly}\
 %f_add_to_list(PROPS,C)\
 >\

 %{PROPS}<{}{}{%C}\

 %1%f_add_operation(%1U_%CU_get,keyword,[{%CS!=readonly}Get]%CN (): %C%TU,Op_Instance)\
 %{Op_Instance}%f_set_up(NameForScript,%C{NameForScript})\

 %f_TuneGS(%{Op_Instance},%C)\
 %{Op_Instance}%f_set_up(is_setter,false)\

 [{%CS!=readonly}\
 %1%f_add_operation(%1U_%CU_set,keyword,Set%CN (aValue : %C%TU),Op_Instance)\
 %f_TuneGS(%{Op_Instance},%C)\
 %{Op_Instance}%f_set_up(is_setter,true)\
 ]\

 >\

 %f_clear_list(PROPS)\

 %f_SpellFriends(%S)\

 %f_clear_list(PARAMS)\

 <{}{%t_isAcceptableForScripts(%G)=true}\
 %f_SpellWordsForParent(%S,%G,"true")\
 >\

 <{}{%t_isAcceptableForScripts(%R)=true}\
 %f_SpellWordsForParent(%S,%R,"false")\
 >\

 %f_clear_list(KEYS)\

 %S<{}{%C#f_IsGlobalKeyword()=true}\
 %f_add_to_list(KEYS,C)\
 >\

 %f_set_var(GEN,"")\
 %{KEYS}<{}{}{%C}\
 %f_SpellWordByOp(%1,%C)\
 >\

 %f_clear_list(KEYS)\

 [{%f_is_empty(PARAMS)=false}\

 [{"%{TtfwTypeRegistrator}N"=""}%f_find_element(TtfwTypeRegistrator,TtfwTypeRegistrator)]\
 %f_addCDep(%S,%{TtfwTypeRegistrator})\

 %{PARAMS}<{}{}{%C}\

 %1%f_add_operation(%1U_%CU_RegType,ini,Reg_%CN (),Reg_Instance)\
 %{Reg_Instance}%f_set_documentation(Регистрация типа %CN)\
 %{Reg_Instance}%f_set_abstraction_type(final)\
 %{Reg_Instance}%f_set_visibility_type(PrivateAccess)\

// %f_warning(%CN)\

 %{Reg_Instance}%f_set_uc_content(intf.pas,,\
  TtfwTypeRegistrator.RegisterType(%t_TypeInfo(%C));\
 )\
 >\
 ]\

 %f_clear_list(PARAMS)\

 %S%[inherited]

f _TuneGS
 %S%f_set_documentation(%1D)\
 %S%f_set_up(prop_stereo,%1S)\
 %S%f_set_up(prop_name,%1N)\
 %S%f_set_up(mapped,%1{mapped})\
 %S%f_set_up(is immediate,%1{is immediate})\
 %S%f_set_up(ifdef,%1{ifdef})\
 %S%f_set_up(ifndef,%1{ifndef})

f _SpellWordsForParent
 [{%2N=true}\
 %f_addCDep(%S,%1,"injects")\
// - иньекция
// [{%t_simple_class(%1)=true&%S{noRegistrator}!=true}\
// %S%f_add_class(%SU_%1U_Reg,SimpleClass,%f_pas_TypeName(%1)RegistratorFor%f_N(%S),Reg_Inst)\
// %f_addG(%{Reg_Inst},%1)\
// %{Reg_Inst}%f_set_documentation(Регистратор для %f_pas_TypeName(%1))\
// %{Reg_Inst}%f_set_abstraction_type(abstract)\
// %{Reg_Inst}%f_set_visibility_type(PrivateAccess)\
// %{Reg_Inst}%f_set_up(register in scripts,true)\
// %{Reg_Inst}%f_set_up(is_friend,true)\
// %{Reg_Inst}%f_set_implement_select_type(include)\
// ]\
// - регистратор
 ]\

 %f_clear_list(KEYS)\

 %S<{}{%C#f_IsKeyword()=true}\
 %f_add_to_list(KEYS,C)\
 >\

 %f_set_var(GEN,1)\
 %{KEYS}<{}{}{%C}\
 %f_SpellWordByOp(%1,%C)\
 >\

 %f_clear_list(KEYS)

f _AddParamToRegister
 [{%SN!=void}\
// %f_warning(%SN)\
 [{%f_exists_in_list(PARAMS,S)!=true}\
 %f_add_to_list(PARAMS,S)\
 ]\
 ]

f _SpellWordByOp
 %S%f_add_class(%SU_%{GEN}U_%1U_Word,ScriptKeyword,\
 [{"%{GEN}N"!=""}\
 [{%S{no_pop}!=true&%1#f_IsCreator()!=true}pop_]\
 [{%S{no class name}!=true&%t_SelfName(%{GEN})!=SV}%t_SelfName(%{GEN})_]\
 ]\
 %1N,\
 Class_Inst)\

 %{Class_Inst}%f_set_up(is immediate,%1{is immediate})\
 %{Class_Inst}%f_set_up(ifdef,%1{ifdef})\
 %{Class_Inst}%f_set_up(ifndef,%1{ifndef})\

 [{%1#f_IsVarWorker()=true}\
 [{%1#f_IsWordWorker()=true}{\
 [{"%{TtfwVarWorker}N"=""}%f_find_element(TtfwVarWorker,TtfwVarWorker)]\
 %f_addG(%{Class_Inst},%{TtfwVarWorker})\
 }\
 [{"%{TtfwWordWorkerEx}N"=""}%f_find_element(TtfwWordWorkerEx,TtfwWordWorkerEx)]\
 %f_addG(%{Class_Inst},%{TtfwWordWorkerEx})\
 ]\
 ]\

 [{"%1{NameForScript}"=""}{\
 %{Class_Inst}%f_set_up(NameForScript,%1{NameForScript})\
 }\
 %{Class_Inst}%f_set_up(NameForScript,%f_str_replace(%{Class_Inst}N,_,:))\
 ]\

 %{Class_Inst}%f_set_documentation(Слово скрипта %f_loc_GetNameForScript(%{Class_Inst})[\n\{panel\}%1D\{panel\}]

 %f_set_var(RES,"")\
 [{%1%TN!=void}%f_set_var(RES,1%T)]\
 [{%1#f_IsCreator()=true&"%{GEN}N"!=""}%f_set_var(RES,{GEN})]\

 [{"%{RES}N"!=""}*Тип результата:* %{RES}N\n]\
 *Пример:*
 \{code\}
 %1<{}{%CS=out}{%C}[%t_EngineType(%C%T) ]VAR l_%CN\n>\
 [{"%{RES}N"!=""}[%t_EngineType(%{RES}) ]VAR l_%{RES}N\n]\

  %1<{}{%CS!=out}{%Cr}%CN >[{%1#f_IsCreator()!=true&"%{GEN}N"!=""}a%t_SelfName(%{GEN}) ]%f_loc_GetNameForScript(%{Class_Inst})\

 [{%1#f_IsVarWorker()=true}\
  [{%1#f_IsWordWorker()=true}{aVar}aWord]\
 ]\

 %1<{}{%CS=out}{%C} \>\>\> l_%CN>\
 [{"%{RES}N"!=""} \>\>\> l_%{RES}N]\
 \n\
 \{code\} \
 )\
 %{Class_Inst}%f_set_abstraction_type(final)\
 %{Class_Inst}%f_set_visibility_type(PrivateAccess)\

 [{"%{TtfwContext}N"=""}%f_find_element(TtfwContext,TtfwContext)]\

 %{Class_Inst}%f_make_accessable(%{TtfwContext}U)\
 %f_addCDep(%{Class_Inst},%{TtfwContext})\

 [{%1{SupressNextImmediate}!=None&"%1{SupressNextImmediate}"!=""}\
 [{"%{TtfwCompilingWord.SupressNextImmediate}N"=""}%f_find_element(4F3AB3B101FC,TtfwCompilingWord.SupressNextImmediate)]\
 %{Class_Inst}%f_add_override(%{TtfwCompilingWord.SupressNextImmediate}U)\

 %{TtfwCompilingWord.SupressNextImmediate}%f_set_uc_content(intf.pas,_%f_pas_MethodOwnerID(%{TtfwCompilingWord.SupressNextImmediate},%{Class_Inst})_var,\
  {-}\
 )\

 %{TtfwCompilingWord.SupressNextImmediate}%f_set_uc_content(intf.pas,_%f_pas_MethodOwnerID(%{TtfwCompilingWord.SupressNextImmediate},%{Class_Inst})_impl,\
  Result := tfw_sni%1{SupressNextImmediate};\
 )\

 ]\

 [{"%{TTypeInfo}N"=""}%f_find_element(4767748503B5,TTypeInfo)]\
 %f_addCDep(%{Class_Inst},%{TTypeInfo})\

 [{"%{TtfwWord.GetResultTypeInfo}N"=""}%f_find_element(551544E2001A,TtfwWord.GetResultTypeInfo)]\
 %{Class_Inst}%f_add_override(%{TtfwWord.GetResultTypeInfo}U)\

 %{TtfwWord.GetResultTypeInfo}%f_set_uc_content(intf.pas,_%f_pas_MethodOwnerID(%{TtfwWord.GetResultTypeInfo},%{Class_Inst})_var,\
  {-}\
 )\

 %{TtfwWord.GetResultTypeInfo}%f_set_uc_content(intf.pas,_%f_pas_MethodOwnerID(%{TtfwWord.GetResultTypeInfo},%{Class_Inst})_impl,\
 [{%1#f_IsCreator()=true&"%{GEN}N"!=""}{\
  Result := %t_TypeInfo(%1%T);\
 }\
  Result := %t_TypeInfo(%{GEN});\
 ]\
 )\

 %f_set_var(Op_Instance,"")\

 %f_set_var(NeedOp,"false")\

 [{%1{mapped}=true}\
 %f_set_var(NeedOp,"true")\
 ]\

 [{"%{GEN}N"!=""}\
 %f_set_var(NeedOp,"true")\
 ]\

 [{%1#f_IsVarWorker()=true}\
 %f_set_var(NeedOp,"true")\
 ]\

 [{%1<{}{}{%CC}>!=0}\
 %f_set_var(NeedOp,"true")\
 ]\

 [{%1%TN!=void}\
 %f_set_var(NeedOp,"true")\
 ]\

 [{%{NeedOp}N=true}\
 %{Class_Inst}%f_add_operation(%{Class_Inst}U_%1U_op,,\
 %f_N(%1) (\
 aCtx: %{TtfwContext}U\
 [{%1#f_IsVarWorker()=true}\
 [{"%{TtfwWord}N"=""}%f_find_element(TtfwWord,TtfwWord)]\
 , [{%1#f_IsWordWorker()=true}{aVar}aWord]: %{TtfwWord}U \
 ]\
 [{%1#f_IsCreator()!=true&"%{GEN}N"!=""}, \
 a%t_SelfName(%{GEN}): %{GEN}U \
 ]\
 %1<{}{}{%C},%CS %CN:%C%TU>)\
 [{%1#f_IsCreator()=true&"%{GEN}N"!=""}{\
 [{%1%TN!=void} : %1%TU]\
 }\
  : %{GEN}U\
 ]\
 ,Op_Instance)\

 %{Op_Instance}%f_set_documentation(Реализация слова скрипта %f_loc_GetNameForScript(%{Class_Inst}))\
 %{Op_Instance}%f_set_abstraction_type(final)\
 %{Op_Instance}%f_set_visibility_type(PrivateAccess)\

 %{Op_Instance}<{}{}{%C}%f_AddParamToRegister(%C%T)>\
 %f_AddParamToRegister(%{Op_Instance}%T)\

 ]\

 [{%1#f_IsVarWorker()=true}{\
 [{"%{TtfwWord.DoDoIt}N"=""}%f_find_element(4DAEEDE10285,TtfwWord.DoDoIt)]\
 %f_set_var(MyDo,{TtfwWord.DoDoIt})\
 }\
 [{"%{TtfwVarWorker.DoRun}N"=""}%f_find_element(5512949D0048,TtfwVarWorker.DoRun)]\
 %f_set_var(MyDo,{TtfwVarWorker.DoRun})\
 ]\

 [{"%{SysUtils}N"=""}%f_find_element(47877EB202FB,SysUtils)]\

 %{Class_Inst}%f_make_accessable(%{SysUtils}U)\
 %f_addCDep(%{Class_Inst},%{SysUtils})\

 %{Class_Inst}%f_add_override(%{MyDo}U)\

 [{%{NeedOp}N=true}{\
 }\
 %{MyDo}%f_set_uc_content(intf.pas,_%f_pas_MethodOwnerID(%{MyDo},%{Class_Inst})_var,\
  {-}\
 [{%{Op_Instance}<{}{}{+%CC}>!=0}\
 \n\
 var\
 %{Op_Instance}<{}{}{+%C}\n l_%CN : %f_pas_TypeName(%C%T);>\
 ]\
 )\

 %{MyDo}%f_set_uc_content(intf.pas,_%f_pas_MethodOwnerID(%{MyDo},%{Class_Inst})_impl,\
 %{Op_Instance}<{}{}{+%C}\
 [{%CS!=out}\
  try
   l_%CN := \
 %t_CastSig(%C%T)\
 (aCtx.rEngine.%t_PopSig(%C%T));
  except
   on E: Exception do
   begin
    RunnerError('Ошибка при получении параметра %CN: %f_pas_TypeName(%C%T) : ' + E.Message, aCtx);
    Exit;
   end;//on E: Exception
  end;//try..except
 ]\
 >\
  \
 [{%{Op_Instance}%TN!=void}\
 aCtx.rEngine.%t_PushSig(%{Op_Instance}%T)\
 (%t_UnCastSig(%{Op_Instance}%T)(\
 ]\
 %f_to_borland(%{Op_Instance}N)(aCtx%{Op_Instance}<{}{}{+%C}, l_%CN>)\
 [{%{Op_Instance}%TN!=void}\
 ))\
 ]\
 ;\
 %{Op_Instance}<{}{}{%Cr}\
// %f_warning(%CS %CN)\
 [{%CS=out}\
 \n aCtx.rEngine.%t_PushSig(%C%T)(l_%CN);\
 ]\
 >\
 )\

 [{%1{mapped}=true}\

 %{Op_Instance}%f_set_uc_content(intf.pas,_%f_pas_MethodOwnerID(%{Op_Instance},%{Class_Inst})_var,\
  {-}\
 )\

 %{Op_Instance}%f_set_uc_content(intf.pas,_%f_pas_MethodOwnerID(%{Op_Instance},%{Class_Inst})_impl,\
  [{%{Op_Instance}%TN!=void}Result := ]\
 a%t_SelfName(%{GEN}).\
 [{}{%{Op_Instance}N}%1{prop_name}]\
 [{%1{is_setter}=true}{\
 [{%1<{}{}{C%C}>!=0}\
 (%1<{, }{}%CN>)\
 ]\
 }\
  := aValue\
 ]\
 ;\
 )\
 ]\
 ]

t _TypeInfo
@ %SU
c {}
r {%SN=void}: {@tfw_tiVoid}
r {%f_pas_TypeName(%S)=Tl3PCharLen}: {@tfw_tiWString}
r {%t_isString(%S)=true}: {@tfw_tiString}
r {%t_isStruct(%S)=true}: {@tfw_tiStruct}
r {%t_isClassRef(%S)=true}: {@tfw_tiClassRef}
r {""=""}: {TypeInfo(%f_pas_TypeName(%S))}

t _SelfNamePrim
@ %SU
c {}
r {%t_interface(%S)=true}: {%f_cut_prefix(%f_pas_TypeName(%S),I)}
r {%S#f_IsStaticObject()=true}: {%f_cut_prefix(%f_pas_TypeName(%S),T)}
r {%t_simple_class(%S)=true}: {%f_cut_prefix(%f_pas_TypeName(%S),T)}
r {""=""}: {%f_pas_TypeName(%S)}

t _SelfNameEx
@ %SU
c {}
r {%f_substr_from_begin(%t_SelfNamePrim(%S),9)=nevCustom}: {%f_cut_prefix(%t_SelfNamePrim(%S),nevCustom)}
r {%f_substr_from_begin(%t_SelfNamePrim(%S),8)=evCustom}: {%f_cut_prefix(%t_SelfNamePrim(%S),evCustom)}
r {%f_substr_from_begin(%t_SelfNamePrim(%S),3)=nsc}: {%f_cut_prefix(%t_SelfNamePrim(%S),nsc)}
r {%f_substr_from_begin(%t_SelfNamePrim(%S),3)=tfw}: {%f_cut_prefix(%t_SelfNamePrim(%S),tfw)}
r {%f_substr_from_begin(%t_SelfNamePrim(%S),2)=kw}: {%f_cut_prefix(%t_SelfNamePrim(%S),kw)}
r {%f_substr_from_begin(%t_SelfNamePrim(%S),3)=nev}: {%f_cut_prefix(%t_SelfNamePrim(%S),nev)}
r {%f_substr_from_begin(%t_SelfNamePrim(%S),2)=vg}: {%f_cut_prefix(%t_SelfNamePrim(%S),vg)}
r {%f_substr_from_begin(%t_SelfNamePrim(%S),2)=vt}: {%f_cut_prefix(%t_SelfNamePrim(%S),vt)}
r {%f_substr_from_begin(%t_SelfNamePrim(%S),2)=k2}: {%f_cut_prefix(%t_SelfNamePrim(%S),k2)}
r {%f_substr_from_begin(%t_SelfNamePrim(%S),2)=ns}: {%f_cut_prefix(%t_SelfNamePrim(%S),ns)}
r {%f_substr_from_begin(%t_SelfNamePrim(%S),2)=l3}: {%f_cut_prefix(%t_SelfNamePrim(%S),l3)}
r {""=""}: {%t_SelfNamePrim(%S)}

t _SelfName
@ %SU
c {}
r {%t_SelfNameEx(%S)=StackValue}: {SV}
r {%t_SelfNameEx(%S)=FontInfo}: {Font}
r {%t_SelfNameEx(%S)=ValueList}: {Array}
r {%t_SelfNameEx(%S)=FileName}: {File}
r {%t_SelfNameEx(%S)=SimpleTree}: {Tree}
r {%t_SelfNameEx(%S)=SimpleNode}: {Node}
r {%t_SelfNameEx(%S)=vcmEntityForm}: {Form}
r {%t_SelfNameEx(%S)=WinControl}: {Control}
r {%t_SelfNameEx(%S)=ElCustomPageControl}: {PageControl}
r {%t_SelfNameEx(%S)=ShockwaveFlashEx}: {Flash}
r {%t_SelfNameEx(%S)=TasksPanelView}: {TaskPanel}
r {%t_SelfNameEx(%S)=CustomToolbarButton97}: {TB97Button}
r {%t_SelfNameEx(%S)=ToolbarButton97}: {TB97Button}
r {%t_SelfNameEx(%S)=CustomOutliner}: {Tree}
r {%t_SelfNameEx(%S)=Outliner}: {Tree}
r {%t_SelfNameEx(%S)=CString}: {String}
r {%f_substr_from_begin(%t_SelfNameEx(%S),9)=Customize}: {%t_SelfNameEx(%S)}
r {""=""}: {%f_cut_prefix(%t_SelfNameEx(%S),Custom)}

t _isEnum
@ %SU
c {}
r {%SS=Enum}: {true}
r {%SS=Typedef}: {%t_isEnum(%G)}
r {""=""}: {false}

t _isClassRef
@ %SU
c {}
r {%f_pas_TypeName(%S)=TClass}: {true}
r {%SS=Typedef&%S{isClassRef}=true}: {true}
r {%SS=Typedef}: {%t_isClassRef(%G)}
r {""=""}: {false}

t _isString
@ %SU
c {}
r {%f_pas_TypeName(%S)=Tl3WString|%f_pas_TypeName(%S)=Tl3PCharLenPrim|%f_pas_TypeName(%S)=Tl3PCharLen}: {true}
r {%f_pas_TypeName(%S)=Il3CString}: {true}
r {%SS=Typedef}: {%t_isString(%G)}
r {""=""}: {false}

t _isAcceptableForScripts
@ %SU
c {}
r {%f_pas_TypeName(%S)=TClass}: {true}
r {%f_pas_TypeName(%S)=TtfwStackValue}: {true}
r {%f_pas_TypeName(%S)=ItfwValueList}: {true}
r {%f_pas_TypeName(%S)=ItfwFile}: {true}
r {%SS=Typedef&%S{isClassRef}=true}: {true}
r {%f_pas_TypeName(%S)=Tl3WString|%f_pas_TypeName(%S)=Tl3PCharLenPrim|%f_pas_TypeName(%S)=Tl3PCharLen}: {true}
r {%f_pas_TypeName(%S)=Il3CString}: {true}
r {%t_simple_class(%S)=true}: {true}
r {%t_interface(%S)=true}: {true}
r {%f_pas_TypeName(%S)=String}: {true}
r {%f_pas_TypeName(%S)=Char|%f_pas_TypeName(%S)=AnsiChar}: {true}
r {%f_pas_TypeName(%S)=TPoint}: {true}
r {%f_pas_TypeName(%S)=WideString}: {true}
r {%f_pas_TypeName(%S)=AnsiString}: {true}
r {%f_pas_TypeName(%S)=Integer}: {true}
r {%f_pas_TypeName(%S)=TColor}: {true}
r {%f_pas_TypeName(%S)=Cardinal}: {true}
r {%t_isEnum(%S)=true}: {true}
r {%f_pas_TypeName(%S)=THandle}: {true}
r {%f_pas_TypeName(%S)=Boolean}: {true}
r {%SS=Typedef}: {%t_isAcceptableForScripts(%G)}
r {""=""}: {false}

t _CastSig
@ %SU
c {}
r {%f_pas_TypeName(%S)=TClass}: {}
r {%f_pas_TypeName(%S)=TtfwStackValue}: {}
r {%f_pas_TypeName(%S)=ItfwValueList}: {}
r {%f_pas_TypeName(%S)=ItfwFile}: {}
r {%SS=Typedef&%S{isClassRef}=true}: {%f_pas_TypeName(%S)}
r {%f_pas_TypeName(%S)=Tl3PCharLen}: {%f_pas_TypeName(%S)}
r {%f_pas_TypeName(%S)=Tl3WString|%f_pas_TypeName(%S)=Tl3PCharLenPrim}: {}
r {%f_pas_TypeName(%S)=Il3CString}: {}
r {%t_simple_class(%S)=true}: {%f_pas_TypeName(%S)}
r {%t_interface(%S)=true}: {%f_pas_TypeName(%S)}
r {%f_pas_TypeName(%S)=String}: {}
r {%f_pas_TypeName(%S)=Char|%f_pas_TypeName(%S)=AnsiChar}: {}
r {%f_pas_TypeName(%S)=TPoint}: {}
r {%f_pas_TypeName(%S)=WideString}: {}
r {%f_pas_TypeName(%S)=AnsiString}: {}
r {%f_pas_TypeName(%S)=Integer}: {}
r {%f_pas_TypeName(%S)=TColor}: {%f_pas_TypeName(%S)}
r {%f_pas_TypeName(%S)=Cardinal}: {%f_pas_TypeName(%S)}
r {%t_isEnum(%S)=true}: {%f_pas_TypeName(%S)}
r {%f_pas_TypeName(%S)=THandle}: {%f_pas_TypeName(%S)}
r {%f_pas_TypeName(%S)=Boolean}: {}
r {%SS=Typedef}: {%f_pas_TypeName(%S)}
r {""=""}: {"Не знаем как приводить значение типа %f_pas_TypeName(%S)"}

t _EngineType
@ %SU
c {}
r {%SN=void}: {VOID}
r {%f_pas_TypeName(%S)=TClass}: {CLASS}
r {%f_pas_TypeName(%S)=TtfwStackValue}: {}
r {%f_pas_TypeName(%S)=ItfwValueList}: {ARRAY}
r {%f_pas_TypeName(%S)=ItfwFile}: {FILE}
r {%SS=Typedef&%S{isClassRef}=true}: {CLASS}
r {%f_pas_TypeName(%S)=Tl3PCharLen}: {W-STRING}
r {%f_pas_TypeName(%S)=Tl3WString|%f_pas_TypeName(%S)=Tl3PCharLenPrim}: {STRING}
r {%f_pas_TypeName(%S)=Il3CString}: {STRING}
r {%t_simple_class(%S)=true}: {OBJECT}
r {%t_interface(%S)=true}: {INTERFACE}
r {%f_pas_TypeName(%S)=String}: {STRING}
r {%f_pas_TypeName(%S)=Char|%f_pas_TypeName(%S)=AnsiChar}: {CHAR}
r {%f_pas_TypeName(%S)=TPoint}: {}
r {%f_pas_TypeName(%S)=WideString}: {STRING}
r {%f_pas_TypeName(%S)=AnsiString}: {STRING}
r {%f_pas_TypeName(%S)=Integer}: {INTEGER}
r {%f_pas_TypeName(%S)=TColor}: {INTEGER}
r {%f_pas_TypeName(%S)=Cardinal}: {CARDINAL}
r {%t_isEnum(%S)=true}: {INTEGER}
r {%f_pas_TypeName(%S)=THandle}: {CARDINAL}
r {%f_pas_TypeName(%S)=Boolean}: {BOOLEAN}
r {%SS=Typedef}: {%t_EngineType(%G)}
r {""=""}: {}

t _UnCastSig
@ %SU
c {}
r {%SN=void}: {}
r {%f_pas_TypeName(%S)=TClass}: {}
r {%f_pas_TypeName(%S)=TtfwStackValue}: {}
r {%f_pas_TypeName(%S)=ItfwValueList}: {}
r {%f_pas_TypeName(%S)=ItfwFile}: {}
r {%SS=Typedef&%S{isClassRef}=true}: {}
r {%f_pas_TypeName(%S)=Tl3WString|%f_pas_TypeName(%S)=Tl3PCharLenPrim|%f_pas_TypeName(%S)=Tl3PCharLen}: {}
r {%f_pas_TypeName(%S)=Il3CString}: {}
r {%t_simple_class(%S)=true}: {}
r {%t_interface(%S)=true}: {}
r {%f_pas_TypeName(%S)=String}: {}
r {%f_pas_TypeName(%S)=Char|%f_pas_TypeName(%S)=AnsiChar}: {}
r {%f_pas_TypeName(%S)=TPoint}: {}
r {%f_pas_TypeName(%S)=WideString}: {}
r {%f_pas_TypeName(%S)=AnsiString}: {}
r {%f_pas_TypeName(%S)=Integer}: {}
r {%f_pas_TypeName(%S)=TColor}: {Integer}
r {%f_pas_TypeName(%S)=Cardinal}: {Integer}
r {%t_isEnum(%S)=true}: {Ord}
r {%f_pas_TypeName(%S)=THandle}: {Integer}
r {%f_pas_TypeName(%S)=Boolean}: {}
r {%SS=Typedef}: {%t_UnCastSig(%G)}
r {""=""}: {"Не знаем как приводить значение типа %f_pas_TypeName(%S)"}

t _PopSig
@ %SU
c {}
r {%f_pas_TypeName(%S)=TClass}: {PopClass}
r {%f_pas_TypeName(%S)=TtfwStackValue}: {Pop}
r {%f_pas_TypeName(%S)=ItfwValueList}: {PopList}
r {%f_pas_TypeName(%S)=ItfwFile}: {PopFile}
r {%SS=Typedef&%S{isClassRef}=true}: {PopClassAs(%f_pas_TypeName(%S))}
r {%f_pas_TypeName(%S)=Tl3WString|%f_pas_TypeName(%S)=Tl3PCharLenPrim|%f_pas_TypeName(%S)=Tl3PCharLen}: {PopWStr}
r {%f_pas_TypeName(%S)=Il3CString}: {PopString}
r {%t_simple_class(%S)=true}: {PopObjAs(%f_pas_TypeName(%S))}
r {%t_interface(%S)=true}: {PopIntf(%f_pas_TypeName(%S))}
r {%f_pas_TypeName(%S)=String}: {PopDelphiString}
r {%f_pas_TypeName(%S)=Char|%f_pas_TypeName(%S)=AnsiChar}: {PopChar}
r {%f_pas_TypeName(%S)=TPoint}: {PopPoint}
r {%f_pas_TypeName(%S)=WideString}: {PopWideString}
r {%f_pas_TypeName(%S)=AnsiString}: {PopDelphiString}
r {%f_pas_TypeName(%S)=Integer}: {PopInt}
r {%f_pas_TypeName(%S)=TColor}: {PopInt}
r {%f_pas_TypeName(%S)=Cardinal}: {PopInt}
r {%t_isEnum(%S)=true}: {PopInt}
r {%f_pas_TypeName(%S)=THandle}: {PopInt}
r {%f_pas_TypeName(%S)=Boolean}: {PopBool}
r {%SS=Typedef}: {%t_PopSig(%G)}
r {""=""}: {"Не знаем как снять со стека : %f_pas_TypeName(%S)"}

t _PushSig
@ %SU
c {}
r {%f_pas_TypeName(%S)=TClass}: {PushClass}
r {%f_pas_TypeName(%S)=TtfwStackValue}: {Push}
r {%f_pas_TypeName(%S)=ItfwValueList}: {PushList}
r {%f_pas_TypeName(%S)=ItfwFile}: {PushFile}
r {%SS=Typedef&%S{isClassRef}=true}: {PushClass}
r {%f_pas_TypeName(%S)=Tl3PCharLen}: {PushWStr}
r {%f_pas_TypeName(%S)=Tl3WString|%f_pas_TypeName(%S)=Tl3PCharLenPrim}: {PushString}
r {%f_pas_TypeName(%S)=Il3CString}: {PushString}
r {%t_simple_class(%S)=true}: {PushObj}
r {%t_interface(%S)=true}: {PushIntf}
r {%f_pas_TypeName(%S)=String}: {PushString}
r {%f_pas_TypeName(%S)=Char|%f_pas_TypeName(%S)=AnsiChar}: {PushChar}
r {%f_pas_TypeName(%S)=TPoint}: {PushPoint}
r {%f_pas_TypeName(%S)=WideString}: {PushWideString}
r {%f_pas_TypeName(%S)=AnsiString}: {PushString}
r {%f_pas_TypeName(%S)=Integer}: {PushInt}
r {%f_pas_TypeName(%S)=TColor}: {PushInt}
r {%f_pas_TypeName(%S)=Cardinal}: {PushInt}
r {%t_isEnum(%S)=true}: {PushInt}
r {%f_pas_TypeName(%S)=THandle}: {PushInt}
r {%f_pas_TypeName(%S)=Boolean}: {PushBool}
r {%SS=Typedef}: {%t_PushSig(%G)}
r {""=""}: {"Не знаем как положить на стек : %f_pas_TypeName(%S)"}
//#UC END# *4B2A19E3038Bfor4F2C15C90252*

// реализация абстрактного стереотипа Delphi интерфейсы и реализация::MDAGenerator
// Генератор файлов форм (.dfm)
+ dfm
R  
//#UC START# *49F5795900ECfor4F2C15C90252*
//#UC END# *49F5795900ECfor4F2C15C90252*

// реализация абстрактного стереотипа Delphi интерфейсы и реализация::MDAGenerator
// Вторая интерфейсная секция стереотипа. Например реализация свойств класса.
+ intf2.pas
R  
//#UC START# *477398E501C0for4F2C15C90252*
//#UC END# *477398E501C0for4F2C15C90252*

// реализация абстрактного стереотипа Delphi интерфейсы и реализация::MDAGenerator
// 3-я секция интерфейса. Например поле для свойства.
+ intf3.pas
R  
//#UC START# *4774D2A20372for4F2C15C90252*
//#UC END# *4774D2A20372for4F2C15C90252*

// реализация абстрактного стереотипа Delphi интерфейсы и реализация::MDAGenerator
// Ресурсы (.rc)
+ rc.pas
R  
//#UC START# *55B8D28B0157for4F2C15C90252*
O [{%S{needs script}=true}%f_pas_UnitName(%S).rc]
 [{"%SO"!=""}\
 %f_pas_UnitName(%S) RCDATA LOADONCALL MOVEABLE DISCARDABLE %f_pas_UnitName(%S).rc.script\
 %f_end_new_file(%S)\
 ]
//#UC END# *55B8D28B0157for4F2C15C90252*

// реализация абстрактного стереотипа Delphi интерфейсы и реализация::MDAGenerator
// Скрипты в ресурсах (.rc.script)
+ rc.script.pas
R  
//#UC START# *55B8D2F80145for4F2C15C90252*
O [{%S{needs script}=true}%f_pas_UnitName(%S).rc.script]
 [{"%SO"!=""}\
 %f_header(%S)
 
 %U[{impl}\n]\n
 %f_end_new_file(%S)\
 ]
//#UC END# *55B8D2F80145for4F2C15C90252*

// реализация абстрактного стереотипа Delphi интерфейсы и реализация::MDAGenerator
// Компилятор ресурса (.res.cmd)
+ res.cmd.pas
R  
//#UC START# *55B8DD9C0301for4F2C15C90252*
O [{%S{needs script}=true}%f_pas_UnitName(%S).res.cmd]
 [{"%SO"!=""}\
 brcc32 %f_pas_UnitName(%S).rc\
 %f_end_new_file(%S)\
 ]
//#UC END# *55B8DD9C0301for4F2C15C90252*

// реализация абстрактного стереотипа Delphi интерфейсы и реализация::MDAGenerator
// Скрипты TC (.sd)
+ sd
R  
//#UC START# *4DE79AFC0030for4F2C15C90252*
//#UC END# *4DE79AFC0030for4F2C15C90252*

// реализация абстрактного стереотипа Java::MDAGenerator
// генератор реализации фабрик интерфейсов на java (.java)
+ fctr.java
//#UC START# *470321C1038Afor4F2C15C90252*
//#UC END# *470321C1038Afor4F2C15C90252*

// реализация абстрактного стереотипа Документация::MDAGenerator
// Хак для [$281531116]
+ link_to_requests_hack
//#UC START# *4E65F581015Afor4F2C15C90252*
//#UC END# *4E65F581015Afor4F2C15C90252*

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Вложенные стереотипы

: ScriptKeywordsPack::Class::injects::ClassDependency
? Внедрение зависимости
= Delphi интерфейсы и реализация::MDAGenerator

// Генераторы
// генератор реализации фабрик интерфейсов на java (.java)
+ fctr.java
//#UC START# *470321C1038Afor54D4A61F00BA*
//#UC END# *470321C1038Afor54D4A61F00BA*

// Вторая интерфейсная секция стереотипа. Например реализация свойств класса.
+ intf2.pas
R  
//#UC START# *477398E501C0for54D4A61F00BA*
//#UC END# *477398E501C0for54D4A61F00BA*

// 3-я секция интерфейса. Например поле для свойства.
+ intf3.pas
R  
//#UC START# *4774D2A20372for54D4A61F00BA*
//#UC END# *4774D2A20372for54D4A61F00BA*

// Генератор файлов форм (.dfm)
+ dfm
R  
//#UC START# *49F5795900ECfor54D4A61F00BA*
//#UC END# *49F5795900ECfor54D4A61F00BA*

// Скрипты TC (.sd)
+ sd
R  
//#UC START# *4DE79AFC0030for54D4A61F00BA*
//#UC END# *4DE79AFC0030for54D4A61F00BA*

// Хак для [$281531116]
+ link_to_requests_hack
//#UC START# *4E65F581015Afor54D4A61F00BA*
//#UC END# *4E65F581015Afor54D4A61F00BA*

// Ресурсы (.rc)
+ rc.pas
R  
//#UC START# *55B8D28B0157for54D4A61F00BA*
//#UC END# *55B8D28B0157for54D4A61F00BA*

// Скрипты в ресурсах (.rc.script)
+ rc.script.pas
R  
//#UC START# *55B8D2F80145for54D4A61F00BA*
//#UC END# *55B8D2F80145for54D4A61F00BA*

// Компилятор ресурса (.res.cmd)
+ res.cmd.pas
R  
//#UC START# *55B8DD9C0301for54D4A61F00BA*
//#UC END# *55B8DD9C0301for54D4A61F00BA*

// Генерация модели в MDKnow
+ wiki
//#UC START# *46E6D4BB0339for54D4A61F00BA*
//#UC END# *46E6D4BB0339for54D4A61F00BA*

// Родные Delphi интерфейсы (.pas)
+ intf.pas
R  
//#UC START# *470F1571031Cfor54D4A61F00BA*
//#UC END# *470F1571031Cfor54D4A61F00BA*

// Реализация на Delphi(.pas)
+ impl.pas
R  
//#UC START# *470F15B800CBfor54D4A61F00BA*
//#UC END# *470F15B800CBfor54D4A61F00BA*

// Функции стереотипа
%f _st_space_key
 SHD


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Унаследованная реализация

// реализация абстрактного стереотипа Документация::MDAGenerator
// проверка ограничений накладываемых на элемент
%t _constraint
//#UC START# *4704C0E30186for54D4A61F00BA*
c          {}
r {""=""}: {}
//#UC END# *4704C0E30186for54D4A61F00BA*

// реализация абстрактного стереотипа Документация::MDAGenerator
// выводит описание элемента (операция, атрибут) в wiki
%f _wiki_child_kind
//#UC START# *4705CBD6003Efor54D4A61F00BA*
//#UC END# *4705CBD6003Efor54D4A61F00BA*

// реализация абстрактного стереотипа Документация::MDAGenerator
// вывод описание авто-генерируемых методов в wiki
%f _wiki_up_add_gen
//#UC START# *470484D50138for54D4A61F00BA*
//#UC END# *470484D50138for54D4A61F00BA*

: ScriptKeywordsPack::Class::keyword::Operation
? Слово скрипта
= UtilityPack::Class::Operation

// Параметры стереотипа
v -
/ - типы видимости
a f
/ - тип абстракции
T 
/ - может не иметь "цели" (типа/результата)

// Пользовательские свойства
p NameForScript:s ? 
p is immediate:tribool=undefined ? 
p mapped:tribool=undefined ? 

// Генераторы
// Генерация модели в MDKnow
+ wiki
//#UC START# *46E6D4BB0339for54F734BC0087*
//#UC END# *46E6D4BB0339for54F734BC0087*

// генератор реализации фабрик интерфейсов на java (.java)
+ fctr.java
//#UC START# *470321C1038Afor54F734BC0087*
//#UC END# *470321C1038Afor54F734BC0087*

// Вторая интерфейсная секция стереотипа. Например реализация свойств класса.
+ intf2.pas
R  
//#UC START# *477398E501C0for54F734BC0087*
//#UC END# *477398E501C0for54F734BC0087*

// 3-я секция интерфейса. Например поле для свойства.
+ intf3.pas
R  
//#UC START# *4774D2A20372for54F734BC0087*
//#UC END# *4774D2A20372for54F734BC0087*

// Генератор файлов форм (.dfm)
+ dfm
R  
//#UC START# *49F5795900ECfor54F734BC0087*
//#UC END# *49F5795900ECfor54F734BC0087*

// Скрипты TC (.sd)
+ sd
R  
//#UC START# *4DE79AFC0030for54F734BC0087*
//#UC END# *4DE79AFC0030for54F734BC0087*

// Хак для [$281531116]
+ link_to_requests_hack
//#UC START# *4E65F581015Afor54F734BC0087*
//#UC END# *4E65F581015Afor54F734BC0087*

// Ресурсы (.rc)
+ rc.pas
R  
//#UC START# *55B8D28B0157for54F734BC0087*
//#UC END# *55B8D28B0157for54F734BC0087*

// Скрипты в ресурсах (.rc.script)
+ rc.script.pas
R  
//#UC START# *55B8D2F80145for54F734BC0087*
//#UC END# *55B8D2F80145for54F734BC0087*

// Компилятор ресурса (.res.cmd)
+ res.cmd.pas
R  
//#UC START# *55B8DD9C0301for54F734BC0087*
//#UC END# *55B8DD9C0301for54F734BC0087*

// Родные Delphi интерфейсы (.pas)
+ intf.pas
R  
//#UC START# *470F1571031Cfor54F734BC0087*
//#UC END# *470F1571031Cfor54F734BC0087*

// Реализация на Delphi(.pas)
+ impl.pas
R  
//#UC START# *470F15B800CBfor54F734BC0087*
//#UC END# *470F15B800CBfor54F734BC0087*

// Функции стереотипа
%f _st_space_key
 SHD

%f _wiki_up_print
 %S#[inherited][{"%S{mapped}"!="%S{!mapped}"}%f_up_prefix(%S) *mapped* = *%S{mapped}*
 ][{"%S{NameForScript}"!="%S{!NameForScript}"}%f_up_prefix(%S) *NameForScript* = *%S{NameForScript}*
 ][{"%S{is immediate}"!="%S{!is immediate}"}%f_up_prefix(%S) *is immediate* = *%S{is immediate}*
 ]

%f _IsKeyword
// возвращаемый результат: boolean
//#UC START# *5510356E00AEfor54F734BC0087*
 true
//#UC END# *5510356E00AEfor54F734BC0087*

%f _NoForward
// возвращаемый результат: boolean
//#UC START# *55115A470301for54F734BC0087*
 true
//#UC END# *55115A470301for54F734BC0087*

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Унаследованная реализация

// реализация абстрактного стереотипа Документация::MDAGenerator
// вывод описание авто-генерируемых методов в wiki
%f _wiki_up_add_gen
//#UC START# *470484D50138for54F734BC0087*
//#UC END# *470484D50138for54F734BC0087*

: ScriptKeywordsPack::Class::property::Attribute
= UtilityPack::Class::Attribute

// Параметры стереотипа
v -
/ - типы видимости
a f
/ - тип абстракции

// Пользовательские свойства
p NameForScript:s ? 
p mapped:tribool=undefined ? 

// Генераторы
// Генерация модели в MDKnow
+ wiki
//#UC START# *46E6D4BB0339for54F861670034*
//#UC END# *46E6D4BB0339for54F861670034*

// генератор inline файлов реализации C++ (.i.h)
+ i.h
//#UC START# *47022CCF00EAfor54F861670034*
//#UC END# *47022CCF00EAfor54F861670034*

// генератор реализации фабрик интерфейсов на java (.java)
+ fctr.java
//#UC START# *470321C1038Afor54F861670034*
//#UC END# *470321C1038Afor54F861670034*

// Вторая интерфейсная секция стереотипа. Например реализация свойств класса.
+ intf2.pas
R  
//#UC START# *477398E501C0for54F861670034*
//#UC END# *477398E501C0for54F861670034*

// 3-я секция интерфейса. Например поле для свойства.
+ intf3.pas
R  
//#UC START# *4774D2A20372for54F861670034*
//#UC END# *4774D2A20372for54F861670034*

// Генератор файлов форм (.dfm)
+ dfm
R  
//#UC START# *49F5795900ECfor54F861670034*
//#UC END# *49F5795900ECfor54F861670034*

// Скрипты TC (.sd)
+ sd
R  
//#UC START# *4DE79AFC0030for54F861670034*
//#UC END# *4DE79AFC0030for54F861670034*

// Хак для [$281531116]
+ link_to_requests_hack
//#UC START# *4E65F581015Afor54F861670034*
//#UC END# *4E65F581015Afor54F861670034*

// Ресурсы (.rc)
+ rc.pas
R  
//#UC START# *55B8D28B0157for54F861670034*
//#UC END# *55B8D28B0157for54F861670034*

// Скрипты в ресурсах (.rc.script)
+ rc.script.pas
R  
//#UC START# *55B8D2F80145for54F861670034*
//#UC END# *55B8D2F80145for54F861670034*

// Компилятор ресурса (.res.cmd)
+ res.cmd.pas
R  
//#UC START# *55B8DD9C0301for54F861670034*
//#UC END# *55B8DD9C0301for54F861670034*

// Родные Delphi интерфейсы (.pas)
+ intf.pas
R  
//#UC START# *470F1571031Cfor54F861670034*
//#UC END# *470F1571031Cfor54F861670034*

// Реализация на Delphi(.pas)
+ impl.pas
R  
//#UC START# *470F15B800CBfor54F861670034*
//#UC END# *470F15B800CBfor54F861670034*

// Функции стереотипа
%f _st_space_key
 SHD

%f _wiki_up_print
 %S#[inherited][{"%S{mapped}"!="%S{!mapped}"}%f_up_prefix(%S) *mapped* = *%S{mapped}*
 ][{"%S{NameForScript}"!="%S{!NameForScript}"}%f_up_prefix(%S) *NameForScript* = *%S{NameForScript}*
 ]


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Унаследованная реализация

// реализация абстрактного стереотипа Документация::MDAGenerator
// проверка ограничений накладываемых на элемент
%t _constraint
//#UC START# *4704C0E30186for54F861670034*
c          {}
r {""=""}: {}
//#UC END# *4704C0E30186for54F861670034*

// реализация абстрактного стереотипа Документация::MDAGenerator
// вывод описание авто-генерируемых методов в wiki
%f _wiki_up_add_gen
//#UC START# *470484D50138for54F861670034*
//#UC END# *470484D50138for54F861670034*

: ScriptKeywordsPack::Class::readonly::Attribute
= ScriptKeywordsPack::Class::property::Attribute

// Функции стереотипа
%f _st_space_key
 SHD


: ScriptKeywordsPack::Class::friend::ClassDependency
= ClassBase::Class::friend::ClassDependency

// Генераторы
// Генерация модели в MDKnow
+ wiki
//#UC START# *46E6D4BB0339for54FECA940175*
//#UC END# *46E6D4BB0339for54FECA940175*

// генератор заголовочных файлов C++ (.h)
+ h
//#UC START# *47022C88029Ffor54FECA940175*
//#UC END# *47022C88029Ffor54FECA940175*

// генератор файлов реализации C++ (.cpp)
+ cpp
//#UC START# *47022CB8034Bfor54FECA940175*
//#UC END# *47022CB8034Bfor54FECA940175*

// генератор inline файлов реализации C++ (.i.h)
+ i.h
//#UC START# *47022CCF00EAfor54FECA940175*
//#UC END# *47022CCF00EAfor54FECA940175*

// генератор классов, интерфейсов на java (.java)
+ java
//#UC START# *470321950119for54FECA940175*
//#UC END# *470321950119for54FECA940175*

// генератор реализации фабрик интерфейсов на java (.java)
+ fctr.java
//#UC START# *470321C1038Afor54FECA940175*
//#UC END# *470321C1038Afor54FECA940175*

// Родные Delphi интерфейсы (.pas)
+ intf.pas
R  
//#UC START# *470F1571031Cfor54FECA940175*
//#UC END# *470F1571031Cfor54FECA940175*

// Реализация на Delphi(.pas)
+ impl.pas
R  
//#UC START# *470F15B800CBfor54FECA940175*
//#UC END# *470F15B800CBfor54FECA940175*

// Вторая интерфейсная секция стереотипа. Например реализация свойств класса.
+ intf2.pas
R  
//#UC START# *477398E501C0for54FECA940175*
//#UC END# *477398E501C0for54FECA940175*

// 3-я секция интерфейса. Например поле для свойства.
+ intf3.pas
R  
//#UC START# *4774D2A20372for54FECA940175*
//#UC END# *4774D2A20372for54FECA940175*

// Генератор файлов форм (.dfm)
+ dfm
R  
//#UC START# *49F5795900ECfor54FECA940175*
//#UC END# *49F5795900ECfor54FECA940175*

// Скрипты TC (.sd)
+ sd
R  
//#UC START# *4DE79AFC0030for54FECA940175*
//#UC END# *4DE79AFC0030for54FECA940175*

// Хак для [$281531116]
+ link_to_requests_hack
//#UC START# *4E65F581015Afor54FECA940175*
//#UC END# *4E65F581015Afor54FECA940175*

// Ресурсы (.rc)
+ rc.pas
R  
//#UC START# *55B8D28B0157for54FECA940175*
//#UC END# *55B8D28B0157for54FECA940175*

// Скрипты в ресурсах (.rc.script)
+ rc.script.pas
R  
//#UC START# *55B8D2F80145for54FECA940175*
//#UC END# *55B8D2F80145for54FECA940175*

// Компилятор ресурса (.res.cmd)
+ res.cmd.pas
R  
//#UC START# *55B8DD9C0301for54FECA940175*
//#UC END# *55B8DD9C0301for54FECA940175*

// Функции стереотипа
%f _st_space_key
 SHD


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Унаследованная реализация

// реализация абстрактного стереотипа Документация::MDAGenerator
// проверка ограничений накладываемых на элемент
%t _constraint
//#UC START# *4704C0E30186for54FECA940175*
c          {}
r {""=""}: {}
//#UC END# *4704C0E30186for54FECA940175*

// реализация абстрактного стереотипа Документация::MDAGenerator
// вывод описание авто-генерируемых методов в wiki
%f _wiki_up_add_gen
//#UC START# *470484D50138for54FECA940175*
//#UC END# *470484D50138for54FECA940175*

: ScriptKeywordsPack::Class::creator::Operation
= ScriptKeywordsPack::Class::keyword::Operation

// Функции стереотипа
%f _st_space_key
 SHD

%f _IsCreator
// возвращаемый результат: boolean
//#UC START# *5510359500FCfor5510358803BD*
 true
//#UC END# *5510359500FCfor5510358803BD*

: ScriptKeywordsPack::Class::globalkeyword::Operation
? Глобальное слово скрипта
= UtilityPack::Class::Operation

// Пользовательские свойства
p NameForScript:s ? 
p is immediate:tribool=undefined ? 

// Генераторы
// Генерация модели в MDKnow
+ wiki
//#UC START# *46E6D4BB0339for55115A7D0330*
//#UC END# *46E6D4BB0339for55115A7D0330*

// генератор реализации фабрик интерфейсов на java (.java)
+ fctr.java
//#UC START# *470321C1038Afor55115A7D0330*
//#UC END# *470321C1038Afor55115A7D0330*

// Вторая интерфейсная секция стереотипа. Например реализация свойств класса.
+ intf2.pas
R  
//#UC START# *477398E501C0for55115A7D0330*
//#UC END# *477398E501C0for55115A7D0330*

// 3-я секция интерфейса. Например поле для свойства.
+ intf3.pas
R  
//#UC START# *4774D2A20372for55115A7D0330*
//#UC END# *4774D2A20372for55115A7D0330*

// Генератор файлов форм (.dfm)
+ dfm
R  
//#UC START# *49F5795900ECfor55115A7D0330*
//#UC END# *49F5795900ECfor55115A7D0330*

// Скрипты TC (.sd)
+ sd
R  
//#UC START# *4DE79AFC0030for55115A7D0330*
//#UC END# *4DE79AFC0030for55115A7D0330*

// Хак для [$281531116]
+ link_to_requests_hack
//#UC START# *4E65F581015Afor55115A7D0330*
//#UC END# *4E65F581015Afor55115A7D0330*

// Ресурсы (.rc)
+ rc.pas
R  
//#UC START# *55B8D28B0157for55115A7D0330*
//#UC END# *55B8D28B0157for55115A7D0330*

// Скрипты в ресурсах (.rc.script)
+ rc.script.pas
R  
//#UC START# *55B8D2F80145for55115A7D0330*
//#UC END# *55B8D2F80145for55115A7D0330*

// Компилятор ресурса (.res.cmd)
+ res.cmd.pas
R  
//#UC START# *55B8DD9C0301for55115A7D0330*
//#UC END# *55B8DD9C0301for55115A7D0330*

// Родные Delphi интерфейсы (.pas)
+ intf.pas
R  
//#UC START# *470F1571031Cfor55115A7D0330*
//#UC END# *470F1571031Cfor55115A7D0330*

// Реализация на Delphi(.pas)
+ impl.pas
R  
//#UC START# *470F15B800CBfor55115A7D0330*
//#UC END# *470F15B800CBfor55115A7D0330*

// Функции стереотипа
%f _st_space_key
 SHD

%f _wiki_up_print
 %S#[inherited][{"%S{NameForScript}"!="%S{!NameForScript}"}%f_up_prefix(%S) *NameForScript* = *%S{NameForScript}*
 ][{"%S{is immediate}"!="%S{!is immediate}"}%f_up_prefix(%S) *is immediate* = *%S{is immediate}*
 ]

%f _IsGlobalKeyword
// возвращаемый результат: boolean
//#UC START# *55115AD200D8for55115A7D0330*
 true
//#UC END# *55115AD200D8for55115A7D0330*

%f _NoForward
// возвращаемый результат: boolean
//#UC START# *55115FF8009Efor55115A7D0330*
 true
//#UC END# *55115FF8009Efor55115A7D0330*

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Унаследованная реализация

// реализация абстрактного стереотипа Документация::MDAGenerator
// вывод описание авто-генерируемых методов в wiki
%f _wiki_up_add_gen
//#UC START# *470484D50138for55115A7D0330*
//#UC END# *470484D50138for55115A7D0330*

: ScriptKeywordsPack::Class::varworker::Operation
= ScriptKeywordsPack::Class::keyword::Operation

// Функции стереотипа
%f _st_space_key
 SHD

%f _IsVarWorker
// возвращаемый результат: boolean
//#UC START# *55128EF4009Cfor55128EAF022E*
 true
//#UC END# *55128EF4009Cfor55128EAF022E*

: ScriptKeywordsPack::Class::globalvarworker::Operation
= ScriptKeywordsPack::Class::globalkeyword::Operation

// Функции стереотипа
%f _st_space_key
 SHD

%f _IsVarWorker
// возвращаемый результат: boolean
//#UC START# *55128F060331for55128EDC028D*
 true
//#UC END# *55128F060331for55128EDC028D*

: ScriptKeywordsPack::Class::wordworker::Operation
= ScriptKeywordsPack::Class::varworker::Operation
= SupressNextImmediateHolder::Class

// Функции стереотипа
%f _st_space_key
 SHD

%f _wiki_up_print
 %S%[ScriptKeywordsPack::Class::varworker::Operation]f_wiki_up_print()[{"%S{SupressNextImmediate}"!="%S{!SupressNextImmediate}"}%f_up_prefix(%S) *SupressNextImmediate* = *%S{SupressNextImmediate}*
 ]

%f _IsWordWorker
// возвращаемый результат: boolean
//#UC START# *5513DB4402E0for5513DB34012F*
 true
//#UC END# *5513DB4402E0for5513DB34012F*

: ScriptKeywordsPack::Class::globalwordworker::Operation
= ScriptKeywordsPack::Class::globalvarworker::Operation
= SupressNextImmediateHolder::Class

// Функции стереотипа
%f _st_space_key
 SHD

%f _wiki_up_print
 %S%[ScriptKeywordsPack::Class::globalvarworker::Operation]f_wiki_up_print()[{"%S{SupressNextImmediate}"!="%S{!SupressNextImmediate}"}%f_up_prefix(%S) *SupressNextImmediate* = *%S{SupressNextImmediate}*
 ]

%f _IsWordWorker
// возвращаемый результат: boolean
//#UC START# *5513DB6C026Ffor5513DB5502C7*
 true
//#UC END# *5513DB6C026Ffor5513DB5502C7*


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



Комментариев нет:

Отправить комментарий