classdef ComplexBurstQR < hdlimplbase.HDLRecurseIntoSubsystem
%emblibhdl.ComplexBurstQR class
%   emblibhdl.ComplexBurstQR extends hdlimplbase.HDLRecurseIntoSubsystem.
%

%   Copyright 2020 The MathWorks, Inc.

%    emblibhdl.ComplexBurstQR properties:
%       CodeGenFunction - Property is of type 'mxArray'  
%       FirstParam - Property is of type 'HDLEmissionHandleType enumeration: {'useslhandle','usecomphandle','useobjandcomphandles'}'  
%       CodeGenParams - Property is of type 'mxArray'  
%       validateFunction - Property is of type 'mxArray'  
%       validateParams - Property is of type 'mxArray'  
%       Blocks - Property is of type 'string vector'  
%       Description - Property is of type 'mxArray'  
%       CodeGenMode - Property is of type 'HDLCodeGenMode enumeration: {'emission','instantiation'}'  
%       generateSLBlockFunction - Property is of type 'mxArray'  
%       implParamInfo - Property is of type 'mxArray'  
%       implParams - Property is of type 'mxArray'  
%       blkParams - Property is of type 'mxArray'  
%       publishImpl - Property is of type 'mxArray'  
%       ArchitectureNames - Property is of type 'string vector'  
%       DeprecatedArchName - Property is of type 'string vector'  
%       Deprecates - Property is of type 'string vector'  
%       Hidden - Property is of type 'mxArray'  
%       SuppressValidation - Property is of type 'bool'  
%
%    emblibhdl.ComplexBurstQR methods:



    methods  % constructor block
        function this = ComplexBurstQR(block)
        %ComplexBurstQR
        
        
                
        supportedBlocks = {...
            'embmatrixops/Complex Burst QR Decomposition',...
            };
        
        if nargin == 0
            block = '';
        end
        
        desc = struct('ShortListing', 'Generate HDL Code for the Complex Burst QR Decomposition block', ...
            'HelpText',  'HDL will be emitted for the Complex Burst QR Decomposition block');
        
        this.init('SupportedBlocks', supportedBlocks,...
            'Description', desc,...
            'Block',  block,...
            'ArchitectureNames', 'default' );
        
        end % ComplexBurstQR
    end  % constructor block

    methods (Hidden) % possibly private or hidden
        %----------------------------------------
       function v_settings = block_validate_settings(~, ~)
       %block_validate_settings
       
       
       % Empty struct, can also call this.base_validate_settings to get a list of
       % all the default settings.
       v_settings = struct;
       
       % Settings we need to check for.
       v_settings.checkblock = true;
       v_settings.checknfp   = true;
       end  % block_validate_settings
       
        %----------------------------------------
       function v = validateBlock(~, hC)
       %validateBlock
       
       
       % Base struct.
       v = hdlvalidatestruct;
       
       % Find out if the block uses floating-point inputs anywhere.
       hasFloatingPoint = fixed.emblib.checkForFloatInputsOutputs(hC);
       
       % If NFP is on and ports are single/double, error out.
       nfpMode = targetcodegen.targetCodeGenerationUtils.isNFPMode;
       if nfpMode && hasFloatingPoint
           v(1) = hdlvalidatestruct(1,...
           message('fixed:emblib:NfpNotSupported', hC.Name));
       end
       
       end
       
end  % possibly private or hidden 

end  % classdef

