classdef LanguageImplementation < target.compatibility.HardwareImplementationDisplayComponent

    properties (Dependent)
        AddressGranularity (1, 1) int32
        AtomicFloatSize (1, 1) int32
        AtomicIntegerSize (1, 1) int32
        DataTypes target.DataTypes {mustBeScalarOrEmpty}
        Endianess (1, 1) target.Endianess
        IsByteAddressable (1, 1) logical
        WordSize (1, 1) int32
    end

    methods

        function value = get.AddressGranularity(this)
            value = this.InnerInstance.AddressGranularity;
        end

        function set.AddressGranularity(this, value)
            this.InnerInstance.AddressGranularity = value;
        end

        function value = get.AtomicFloatSize(this)
            value = this.InnerInstance.AtomicFloatSize;
        end

        function set.AtomicFloatSize(this, value)
            this.InnerInstance.AtomicFloatSize = value;
        end

        function value = get.AtomicIntegerSize(this)
            value = this.InnerInstance.AtomicIntegerSize;
        end

        function set.AtomicIntegerSize(this, value)
            this.InnerInstance.AtomicIntegerSize = value;
        end

        function value = get.DataTypes(this)
            value = this.wrapValue(this.InnerInstance.DataTypes);
        end

        function value = get.Endianess(this)
            value = this.wrapValue(this.InnerInstance.Endianess);
        end

        function set.Endianess(this, value)
            this.InnerInstance.Endianess = this.unwrapValue(value, this.InnerInstance.Endianess);
        end

        function value = get.IsByteAddressable(this)
            value = this.InnerInstance.IsByteAddressable;
        end

        function value = get.WordSize(this)
            value = this.InnerInstance.WordSize;
        end

        function set.WordSize(this, value)
            this.InnerInstance.WordSize = value;
        end
    end

    methods (Static, Access = protected)

        function name = getQualifiedName()
            name = "target.LanguageImplementation";
        end

        function name = getQualifiedInnerName()
            name = "target.internal.LanguageImplementation";
        end
    end
end

%   Copyright 2021-2022 The MathWorks, Inc.