classdef CMakeBuilder < target.BuilderApplication

    properties (Dependent)
        CommandLineCacheEntries target.CMakeCacheEntry {mustBeVector(CommandLineCacheEntries, "allow-all-empties")}
        Generator (1, 1) string
        GeneratorIsMultiConfig (1, 1) logical
        PlatformName (1, 1) string
        SupportedBuildTypes target.CMakeBuildType {mustBeVector(SupportedBuildTypes, "allow-all-empties")}
        ToolchainFile (1, 1) string
        ToolsetSpecification (1, 1) string
    end

    methods

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    methods (Static, Access = protected)

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

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

%   Copyright 2022 The MathWorks, Inc.