function schema
%SCHEMA   Define the hdledas class.

%   Author(s): P. Costa, J. Sun
%   Copyright 2005-2023 The MathWorks, Inc.
%     

% store persistent variables
mlock;

pk = findpackage('hdlcoderui');
parentcls = findclass(pk, 'abstracthdledas');
c  = schema.class(pk, 'hdledas',parentcls);

% property for the listbox
p = schema.prop(c, 'ScriptSelection', 'mxArray');
p.FactoryValue = 0;

m = schema.method(c, 'edahelp');
s = m.Signature;
s.varargin = 'off';
s.InputTypes = {'handle'};
s.OutputTypes = {};

m = schema.method(c, 'dialogCallback');
s = m.Signature;
s.varargin = 'off';
s.InputTypes = {'handle', 'handle', 'string'};
s.OutputTypes = {'bool', 'string'};

if isempty(findtype('SynToolType'))
    schema.EnumType( ...
        'SynToolType', {'None', 'Vivado', 'ISE', 'Libero', 'Precision', 'Quartus', 'Synplify'});
end

p = schema.prop(c,'SynToolOption','SynToolType'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

%none
p = schema.prop(c,'SynScriptPostFix','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptInit','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptCmd','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptTerm','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

%ISE
p = schema.prop(c,'SynScriptPostFix_I','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptInit_I','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptCmd_I','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptTerm_I','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 



%Vivado
p = schema.prop(c,'SynScriptPostFix_V','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptInit_V','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptCmd_V','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptTerm_V','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 


%Libero
p = schema.prop(c,'SynScriptPostFix_L','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptInit_L','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptCmd_L','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptTerm_L','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 


%Precision
p = schema.prop(c,'SynScriptPostFix_P','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptInit_P','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptCmd_P','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptTerm_P','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

%Quartus
p = schema.prop(c,'SynScriptPostFix_Q','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptInit_Q','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptCmd_Q','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptTerm_Q','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

%Synplify
p = schema.prop(c,'SynScriptPostFix_S','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptInit_S','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptCmd_S','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

p = schema.prop(c,'SynScriptTerm_S','string'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

%%%%%%%%%% Lint Tool stuff %%%%%%%%%%%%%%%%%%%
LintType = {'Cmd','Init','Term'};
LintTools = {'None','SpyGlass','Leda','AscentLint','HDLDesigner','Custom'};
for itx = 1:length(LintType)
    type = LintType{itx};
    for itr = 1:length(LintTools)    
        toolname = LintTools{itr}; 
        toolname = upper(toolname(1));
        p = schema.prop(c,['HDLLint',type,'_',toolname],'string'); 
        p.AccessFlags.PublicSet = 'on';
        p.AccessFlags.PublicGet = 'on';
        set(p, 'Visible','off'); 
    end
end

if isempty(findtype('LintToolType'))
    schema.EnumType( ...
        'LintToolType', {'None', 'SpyGlass','Leda','AscentLint','HDLDesigner','Custom'});
end

p = schema.prop(c,'LintToolOption','LintToolType'); 
p.AccessFlags.PublicSet = 'on';
p.AccessFlags.PublicGet = 'on';
set(p, 'Visible','off'); 

% LocalWords:  abstracthdledas edahelp
