function A = slinitarray(type, size)
%SLINITARRAY Initialize an array of specified type and size
%
% $ Syntax $
%   - A = slinitarray(type, size)
%
% $ Arguments $
%   - type          the string representing the element type of the array
%   - size          the vector representing the size of the array
%   - A             the initialized array
%
% $ Description $
%   - A = slinitarray(type, size) creates an array of specified type and
%     given size, with all elements being zeros.
%
%   - The typenames supported are listed below:
%       - 'double'      
%       - 'single'
%       - 'float'
%       - 'uint8'
%       - 'uint16'
%       - 'uint32'
%       - 'uint64'
%       - 'int8'
%       - 'int16'
%       - 'int32'
%       - 'int64'
%       - 'logical'
%       - 'char'
%
% $ History $
%   - Created by Dahua Lin on Dec 7th, 2005
%


switch type
    case 'double'
        A = zeros(size);
    case {'single', 'float'}
        A = zeros(size, 'single');
    case {'uint8', 'uint16', 'uint32', 'uint64', ...
          'int8', 'int16', 'int32', 'int64'}
        A = zeros(size, type);
    case 'logical'
        A = false(size);
    case 'char'
        A = char(zeros(size, 'uint8'));
    otherwise
        error('sltoolbox:invalid_type', ...
            'Unsupported typename %s', typename);
end

