summaryrefslogtreecommitdiffstats
path: root/umbrello/umbrello/codegenerationpolicy.h
diff options
context:
space:
mode:
Diffstat (limited to 'umbrello/umbrello/codegenerationpolicy.h')
-rw-r--r--umbrello/umbrello/codegenerationpolicy.h384
1 files changed, 384 insertions, 0 deletions
diff --git a/umbrello/umbrello/codegenerationpolicy.h b/umbrello/umbrello/codegenerationpolicy.h
new file mode 100644
index 00000000..3293ec6c
--- /dev/null
+++ b/umbrello/umbrello/codegenerationpolicy.h
@@ -0,0 +1,384 @@
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * copyright (C) 2004-2006 *
+ * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
+ ***************************************************************************/
+
+/* This code generated by:
+ * Author : thomas
+ * Date : Fri Jun 20 2003
+ */
+
+
+
+#ifndef CODEGENERATIONPOLICY_H
+#define CODEGENERATIONPOLICY_H
+
+#include <qobject.h>
+#include <qdir.h>
+#include <qdom.h>
+
+class QWidget;
+class KConfig;
+class CodeGenerationPolicyPage;
+
+/**
+ * class CodeGenerationPolicy
+ * This class describes the code generation policy for this project.
+ */
+
+class CodeGenerationPolicy : public QObject {
+ Q_OBJECT
+public:
+
+ /**
+ * OverwritePolicy can have the following values
+ * - Ok: if there is a file named the same as what you want to name your output file,
+ * you can overwrite the old file.
+ * - Ask:if there is a file named the same as what you want to name your output file,
+ * you should ask the User what to do, and give him the option to overwrite the file
+ * write the code to a different file, or to abort the generation of this class.
+ * - Never: you cannot overwrite any files. Generates a new file name like "fileName1.h", "fileName2.h"
+ * until you find an appropriate name.
+ * - Cancel: Do not output anything. This is only set if the user chooses Apply to All Remaining Files
+ * and clicks on Do not Output in the Ask dialog
+ */
+ enum OverwritePolicy {Ok=0, Ask, Never, Cancel};
+ enum ModifyNamePolicy {No=0, Underscore, Capitalise};
+ enum NewLineType {UNIX=0, DOS, MAC};
+ enum IndentationType {NONE=0, TAB, SPACE};
+ enum CommentStyle { SingleLine=0, MultiLine };
+ enum ScopePolicy { Public=200, Private, Protected, FromParent };
+
+ // set some reasonable defaults
+ OverwritePolicy defaultOverwritePolicy() const;
+ bool defaultVerboseSectionComments() const;
+ bool defaultVerboseDocumentComments() const;
+ bool defaultIncludeHeadings() const;
+ NewLineType defaultLineEndingType() const;
+ IndentationType defaultIndentType() const;
+ int defaultIndentAmount() const;
+ ModifyNamePolicy defaultModifyNamePolicy() const;
+ CommentStyle defaultCommentStyle() const;
+ ScopePolicy defaultAttribAccessorScope() const;
+ ScopePolicy defaultAssocFieldScope() const;
+ bool defaultAutoGenerateConstructors() const;
+
+ // Constructors/Destructors
+ //
+
+ /**
+ * Constructor
+ */
+ // note that as the code gen policy may be the 'default' policy, it may
+ // not be coupled with a code generator.
+ CodeGenerationPolicy (CodeGenerationPolicy * clone = 0);
+ CodeGenerationPolicy (KConfig * config );
+
+ /**
+ * Empty Destructor
+ */
+ virtual ~CodeGenerationPolicy ( );
+
+ // Public attributes
+ //
+
+ // Public attribute accessor methods
+ //
+
+ /**
+ * Set the value of m_overwritePolicy
+ * Policy of how to deal with overwriting existing files.
+ * OverwritePolicy can have the following values
+ * - Ok: if there is a file named the same as what you want to name your output file,
+ * you can overwrite the old file.
+ * - Ask:if there is a file named the same as what you want to name your output file,
+ * you should ask the User what to do, and give him the option to overwrite the file
+ * write the code to a different file, or to abort the generation of this class.
+ * - Never: you cannot overwrite any files. Generates a new file name like "fileName1.h", "fileName2.h"
+ * until you find an appropriate name.
+ * - Cancel: Do not output anything. This is only set if the user chooses Apply to All Remaining Files
+ * and clicks on Do not Output in the Ask dialog
+ *
+ * @param new_var the new value of m_overwritePolicy
+ */
+ void setOverwritePolicy ( OverwritePolicy new_var );
+
+ /**
+ * Get the value of m_overwritePolicy
+ * Policy of how to deal with overwriting existing files. Allowed values are "Ok", "Ask",
+ * "Never" "Cancel".
+ * @return the value of m_overwritePolicy
+ */
+ OverwritePolicy getOverwritePolicy ( ) const;
+
+
+ /**
+ * Set the value of m_codeVerboseSectionComments
+ * Whether or not verbose code commenting for sections is desired. If true, comments
+ * for sections will be written even if the section is empty.
+ * @param new_var the new value of m_codeVerboseSectionComments
+ */
+ void setCodeVerboseSectionComments ( bool new_var );
+
+ /**
+ * Get the value of m_codeVerboseSectionComments
+ * Whether or not verbose code commenting for sections is desired. If true, comments
+ * for sections will be written even if the section is empty.
+ * @return the value of m_codeVerboseSectionComments
+ */
+ bool getCodeVerboseSectionComments ( ) const;
+
+
+ /**
+ * Set the value of m_codeVerboseDocumentComments
+ * Whether or not verbose code commenting for documentation is desired. If true,
+ * documentation for various code will be written even if no code would normally be
+ * created at that point in the file.
+ * @param new_var the new value of m_codeVerboseDocumentComments
+ */
+ void setCodeVerboseDocumentComments ( bool new_var );
+
+ /**
+ * Get the value of m_codeVerboseDocumentComments
+ * Whether or not verbose code commenting for documentation is desired. If true,
+ * documentation for various code will be written even if no code would normally be
+ * created at that point in the file.
+ * @return the value of m_codeVerboseDocumentComments
+ */
+ bool getCodeVerboseDocumentComments ( ) const;
+
+ /**
+ * Set the value of m_headingFileDir
+ * location of the header file template.
+ * @param path the new path of m_headingFileDir
+ */
+ void setHeadingFileDir ( const QString & path);
+
+ /**
+ * Get the value of m_headingFileDir
+ * location of the header file template.
+ * @return the value of m_headingFileDir
+ */
+ QString getHeadingFileDir ( ) const;
+
+
+ /**
+ * Set the value of m_includeHeadings
+ * @param new_var the new value of m_includeHeadings
+ */
+ void setIncludeHeadings ( bool new_var );
+
+ /**
+ * Get the value of m_includeHeadings
+ * @return the value of m_includeHeadings
+ */
+ bool getIncludeHeadings ( ) const;
+
+
+ /**
+ * Set the value of m_outputDirectory
+ * location of where output files will go.
+ * @param new_var the new value of m_outputDirectory
+ */
+ void setOutputDirectory ( QDir new_var );
+
+ /**
+ * Get the value of m_outputDirectory
+ * location of where output files will go.
+ * @return the value of m_outputDirectory
+ */
+ QDir getOutputDirectory ( );
+
+ /**
+ * Set the value of m_lineEndingType
+ * What line ending characters to use.
+ * @param new_var the new value of m_lineEndingType
+ */
+ void setLineEndingType ( NewLineType new_var );
+
+ /**
+ * Get the value of m_lineEndingType
+ * What line ending characters to use.
+ * @return the value of m_lineEndingType
+ */
+ NewLineType getLineEndingType ( );
+
+ /** Utility function to get the actual characters.
+ */
+ QString getNewLineEndingChars ( ) const;
+
+ /**
+ * Set the value of m_indentationType
+ * The amount and type of whitespace to indent with.
+ * @param type the new value of m_indentationType
+ */
+ void setIndentationType ( IndentationType type );
+
+ /**
+ * Get the value of m_indentationType
+ */
+ IndentationType getIndentationType ( );
+
+ /** How many units to indent for each indentation level.
+ */
+ void setIndentationAmount ( int amount );
+ int getIndentationAmount ( );
+
+ /**
+ * Get the string representation of each level of indentation.
+ * The amount and type of whitespace to indent with.
+ * @return the value of m_indentationType
+ */
+ QString getIndentation ( ) const;
+
+ /**
+ * Set the value of m_modifyPolicy
+ * @param new_var the new value of m_modifyPolicy
+ */
+ void setModifyPolicy ( ModifyNamePolicy new_var );
+
+ /**
+ * Get the value of m_modifyPolicy
+ * @return the value of m_modifyPolicy
+ */
+ ModifyNamePolicy getModifyPolicy ( ) const;
+
+ /**
+ * Set the value of m_autoGenerateConstructors
+ * @param var the new value
+ */
+ void setAutoGenerateConstructors ( bool var );
+
+ /**
+ * Get the value of m_autoGenerateConstructors
+ * @return value the boolean value of m_autoGenerateConstructors
+ */
+ bool getAutoGenerateConstructors ( );
+
+ /**
+ * Set the value of m_attributeAccessorScope
+ * @param var the new value
+ */
+ void setAttributeAccessorScope(ScopePolicy var);
+
+ /**
+ * Get the value of m_attributeAccessorScope
+ * @return the ScopePolicy value of m_attributeAccessorScope
+ */
+ ScopePolicy getAttributeAccessorScope();
+
+ /**
+ * Set the value of m_associationFieldScope
+ * @param var the new value
+ */
+ void setAssociationFieldScope(ScopePolicy var);
+
+ /**
+ * Get the value of m_associationFieldScope
+ * @return the ScopePolicy value of m_associationFieldScope
+ */
+ ScopePolicy getAssociationFieldScope();
+
+ /**
+ * Create a new dialog interface for this object.
+ * @return dialog object
+ */
+ virtual CodeGenerationPolicyPage * createPage ( QWidget *parent = 0, const char * name = 0);
+
+ /**
+ * Gets the heading file (as a string) to be inserted at the
+ * beginning of the generated file. you give the file type as
+ * parameter and get the string. if fileName starts with a
+ * period (.) then fileName is the extension (.cpp, .h,
+ * .java) if fileName starts with another character you are
+ * requesting a specific file (mylicensefile.txt). The files
+ * can have parameters which are denoted by %parameter%.
+ *
+ * current parameters are
+ * %author%
+ * %date%
+ * %time%
+ * %filepath%
+ */
+ QString getHeadingFile(const QString& str);
+
+ /**
+ * set the defaults for this code generator from the passed generator.
+ */
+ virtual void setDefaults (CodeGenerationPolicy * defaults, bool emitUpdateSignal = true);
+
+ /**
+ * set the defaults from a config file for this code generator from the passed KConfig pointer.
+ */
+ virtual void setDefaults(KConfig * config, bool emitUpdateSignal = true);
+
+ /**
+ * write Default params to passed KConfig pointer.
+ */
+ virtual void writeConfig (KConfig * config);
+
+ void emitModifiedCodeContentSig();
+
+ /**
+ * Set the value of m_commentStyle
+ * @param new_var the new value of m_commentStyle
+ */
+ void setCommentStyle ( CommentStyle new_var );
+
+ /**
+ * Get the value of m_commentStyle
+ * @return the value of m_commentStyle
+ */
+ CommentStyle getCommentStyle ( );
+
+signals:
+
+ // this signal is sent whenever a change is made to the policy
+ // which could modifiy code document content
+ void modifiedCodeContent();
+
+protected:
+
+ // Policy of how to deal with overwriting existing files. Allowed values are "ask", "yes" and "no".
+ OverwritePolicy m_overwritePolicy;
+
+ // Whether or not verbose code commenting for sections is desired.
+ // If true, comments for sections will be written even if the section is empty.
+ bool m_codeVerboseSectionComments;
+
+ // Whether or not verbose code commenting for documentation is desired.
+ // If true, documentation for various code will be written even if no
+ //code would normally be created at that point in the file.
+ bool m_codeVerboseDocumentComments;
+
+ QDir m_headingFiles; // location of the header file template.
+ bool m_includeHeadings;
+ QDir m_outputDirectory; // location of where output files will go.
+ NewLineType m_lineEndingType; // What type of line ending characters to use.
+ IndentationType m_indentationType; // The amount and type of whitespace to indent with.
+ int m_indentationAmount; // The amount of units to indent with.
+ ModifyNamePolicy m_modifyPolicy;
+ bool m_autoGenerateConstructors;
+ CommentStyle m_commentStyle;
+ ScopePolicy m_attributeAccessorScope;
+ ScopePolicy m_associationFieldScope;
+
+ // these 2 private fields 'cache' the string values of other fields we may frequently call for
+ QString m_lineEndingChars;
+ QString m_indentation;
+
+ void calculateIndentation ( );
+
+protected:
+
+ void initFields ( );
+
+};
+
+#endif // CODEGENERATIONPOLICY_H