classdef DiscreteStateSpace < hdlimplbase.EmlImplBase
    %

    %   Copyright 2023-2024 The MathWorks, Inc.

    methods
        function this = DiscreteStateSpace(block)
            supportedBlocks = {...
                'built-in/DiscreteStateSpace', ...
                };

            if nargin == 0
                block = '';
            end

            description = struct('ShortListing', 'Generate HDL code for Discrete State-Space block', ...
                'HelpText', 'HDL will be emitted for this Discrete State-Space block');

            this.init('SupportedBlocks', supportedBlocks, ...
                'Description', description, ...
                'Block', block, ...
                'ArchitectureNames', 'Discrete State-Space');
        end
    end

    methods (Hidden)
        hNewC = elaborate(this, hN, hC)

        stateInfo = getStateInfo(this, hC)
        blockInfo = getBlockInfo(this, slbh)

        retval = allowElabModelGen(this, hN, hC)
        optimize = optimizeForModelGen(this, hN, hC)

        val = hasDesignDelay(this, hN, hC)

        v_settings = block_validate_settings(this, hC)
        v = validateBlock(this, hC)
        v = validatePortDatatypes(this, hC)

        registerImplParamInfo(this)
        v = validateImplParams(this, hC)
        nfpOptions = getNFPImplParamInfo(this);
    end

end
