// This file is generated by kconfig_compiler_kf6 from languageconfig.kcfg.
// All changes you do to this file will be lost.
#ifndef LANGUAGECONFIG_H
#define LANGUAGECONFIG_H

#include <kconfigskeleton.h>
#include <QCoreApplication>
#include <QDebug>

#include "interfaces/icompletionsettings.h"

class LanguageConfig : public KConfigSkeleton
{
  public:
    class EnumGlobalColorSource
    {
      public:
      enum type { AutoGenerated, FromTheme, COUNT };
    };
    class EnumCompletionDetail
    {
      public:
      enum type { Minimal, MinimalWhenAutomatic, AlwaysFull, COUNT };
    };
    class EnumPrecompiledPreambleStorage
    {
      public:
      enum type { Memory, SessionTemporaryDirectory, COUNT };
    };

    static LanguageConfig *self();
    ~LanguageConfig() override;

    /**
      Get Automatic Invocation
    */
    static
    bool automaticInvocation()
    {
      return self()->mAutomaticInvocation;
    }

    /**
      Is Automatic Invocation Immutable
    */
    static
    bool isAutomaticInvocationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "automaticInvocation" ) );
    }

    /**
      Get Item object corresponding to automaticInvocation()
    */
    ItemBool *automaticInvocationItem()
    {
      return mAutomaticInvocationItem;
    }

    /**
      Get highlightSemanticProblems
    */
    static
    bool highlightSemanticProblems()
    {
      return self()->mHighlightSemanticProblems;
    }

    /**
      Is highlightSemanticProblems Immutable
    */
    static
    bool isHighlightSemanticProblemsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "highlightSemanticProblems" ) );
    }

    /**
      Get Item object corresponding to highlightSemanticProblems()
    */
    ItemBool *highlightSemanticProblemsItem()
    {
      return mHighlightSemanticProblemsItem;
    }

    /**
      Get highlightProblematicLines
    */
    static
    bool highlightProblematicLines()
    {
      return self()->mHighlightProblematicLines;
    }

    /**
      Is highlightProblematicLines Immutable
    */
    static
    bool isHighlightProblematicLinesImmutable()
    {
      return self()->isImmutable( QStringLiteral( "highlightProblematicLines" ) );
    }

    /**
      Get Item object corresponding to highlightProblematicLines()
    */
    ItemBool *highlightProblematicLinesItem()
    {
      return mHighlightProblematicLinesItem;
    }

    /**
      Get boldDeclarations
    */
    static
    bool boldDeclarations()
    {
      return self()->mBoldDeclarations;
    }

    /**
      Is boldDeclarations Immutable
    */
    static
    bool isBoldDeclarationsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "boldDeclarations" ) );
    }

    /**
      Get Item object corresponding to boldDeclarations()
    */
    ItemBool *boldDeclarationsItem()
    {
      return mBoldDeclarationsItem;
    }

    /**
      Get showMultiLineSelectionInformation
    */
    static
    bool showMultiLineSelectionInformation()
    {
      return self()->mShowMultiLineSelectionInformation;
    }

    /**
      Is showMultiLineSelectionInformation Immutable
    */
    static
    bool isShowMultiLineSelectionInformationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "showMultiLineSelectionInformation" ) );
    }

    /**
      Get Item object corresponding to showMultiLineSelectionInformation()
    */
    ItemBool *showMultiLineSelectionInformationItem()
    {
      return mShowMultiLineSelectionInformationItem;
    }

    /**
      Get localColorization
    */
    static
    int localColorization()
    {
      return self()->mLocalColorization;
    }

    /**
      Is localColorization Immutable
    */
    static
    bool isLocalColorizationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "localColorization" ) );
    }

    /**
      Get Item object corresponding to localColorization()
    */
    ItemInt *localColorizationItem()
    {
      return mLocalColorizationItem;
    }

    /**
      Get globalColorSource
    */
    static
    EnumGlobalColorSource::type globalColorSource()
    {
      return static_cast<EnumGlobalColorSource::type>(self()->mGlobalColorSource);
    }

    /**
      Is globalColorSource Immutable
    */
    static
    bool isGlobalColorSourceImmutable()
    {
      return self()->isImmutable( QStringLiteral( "globalColorSource" ) );
    }

    /**
      Get Item object corresponding to globalColorSource()
    */
    ItemEnum *globalColorSourceItem()
    {
      return mGlobalColorSourceItem;
    }

    /**
      Get globalColorization
    */
    static
    int globalColorization()
    {
      return self()->mGlobalColorization;
    }

    /**
      Is globalColorization Immutable
    */
    static
    bool isGlobalColorizationImmutable()
    {
      return self()->isImmutable( QStringLiteral( "globalColorization" ) );
    }

    /**
      Get Item object corresponding to globalColorization()
    */
    ItemInt *globalColorizationItem()
    {
      return mGlobalColorizationItem;
    }

    /**
      Get minFilesForSimplifiedParsing
    */
    static
    int minFilesForSimplifiedParsing()
    {
      return self()->mMinFilesForSimplifiedParsing;
    }

    /**
      Is minFilesForSimplifiedParsing Immutable
    */
    static
    bool isMinFilesForSimplifiedParsingImmutable()
    {
      return self()->isImmutable( QStringLiteral( "minFilesForSimplifiedParsing" ) );
    }

    /**
      Get Item object corresponding to minFilesForSimplifiedParsing()
    */
    ItemInt *minFilesForSimplifiedParsingItem()
    {
      return mMinFilesForSimplifiedParsingItem;
    }

    /**
      Get todoMarkerWords
    */
    static
    QString todoMarkerWords()
    {
      return self()->mTodoMarkerWords;
    }

    /**
      Is todoMarkerWords Immutable
    */
    static
    bool isTodoMarkerWordsImmutable()
    {
      return self()->isImmutable( QStringLiteral( "todoMarkerWords" ) );
    }

    /**
      Get Item object corresponding to todoMarkerWords()
    */
    ItemString *todoMarkerWordsItem()
    {
      return mTodoMarkerWordsItem;
    }

    /**
      Get completionDetail
    */
    static
    EnumCompletionDetail::type completionDetail()
    {
      return static_cast<EnumCompletionDetail::type>(self()->mCompletionDetail);
    }

    /**
      Is completionDetail Immutable
    */
    static
    bool isCompletionDetailImmutable()
    {
      return self()->isImmutable( QStringLiteral( "completionDetail" ) );
    }

    /**
      Get Item object corresponding to completionDetail()
    */
    ItemEnum *completionDetailItem()
    {
      return mCompletionDetailItem;
    }

    /**
      Get problemInlineNotesLevel
    */
    static
    KDevelop::ICompletionSettings::ProblemInlineNotesLevel problemInlineNotesLevel()
    {
      return static_cast<KDevelop::ICompletionSettings::ProblemInlineNotesLevel>(self()->mProblemInlineNotesLevel);
    }

    /**
      Is problemInlineNotesLevel Immutable
    */
    static
    bool isProblemInlineNotesLevelImmutable()
    {
      return self()->isImmutable( QStringLiteral( "problemInlineNotesLevel" ) );
    }

    /**
      Get Item object corresponding to problemInlineNotesLevel()
    */
    ItemEnum *problemInlineNotesLevelItem()
    {
      return mProblemInlineNotesLevelItem;
    }

    /**
      Get precompiledPreambleStorage
    */
    static
    EnumPrecompiledPreambleStorage::type precompiledPreambleStorage()
    {
      return static_cast<EnumPrecompiledPreambleStorage::type>(self()->mPrecompiledPreambleStorage);
    }

    /**
      Is precompiledPreambleStorage Immutable
    */
    static
    bool isPrecompiledPreambleStorageImmutable()
    {
      return self()->isImmutable( QStringLiteral( "precompiledPreambleStorage" ) );
    }

    /**
      Get Item object corresponding to precompiledPreambleStorage()
    */
    ItemEnum *precompiledPreambleStorageItem()
    {
      return mPrecompiledPreambleStorageItem;
    }

  protected:
    LanguageConfig();
    friend class LanguageConfigHelper;


    // Language Support
    bool mAutomaticInvocation;
    bool mHighlightSemanticProblems;
    bool mHighlightProblematicLines;
    bool mBoldDeclarations;
    bool mShowMultiLineSelectionInformation;
    int mLocalColorization;
    int mGlobalColorSource;
    int mGlobalColorization;
    int mMinFilesForSimplifiedParsing;
    QString mTodoMarkerWords;
    int mCompletionDetail;
    int mProblemInlineNotesLevel;
    int mPrecompiledPreambleStorage;

  private:
    ItemBool *mAutomaticInvocationItem;
    ItemBool *mHighlightSemanticProblemsItem;
    ItemBool *mHighlightProblematicLinesItem;
    ItemBool *mBoldDeclarationsItem;
    ItemBool *mShowMultiLineSelectionInformationItem;
    ItemInt *mLocalColorizationItem;
    ItemEnum *mGlobalColorSourceItem;
    ItemInt *mGlobalColorizationItem;
    ItemInt *mMinFilesForSimplifiedParsingItem;
    ItemString *mTodoMarkerWordsItem;
    ItemEnum *mCompletionDetailItem;
    ItemEnum *mProblemInlineNotesLevelItem;
    ItemEnum *mPrecompiledPreambleStorageItem;
};

#endif

