You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
386 lines
13 KiB
386 lines
13 KiB
/***************************************************************************
|
|
* *
|
|
* 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 <tqobject.h>
|
|
#include <tqdir.h>
|
|
#include <tqdom.h>
|
|
|
|
class TQWidget;
|
|
class KConfig;
|
|
class CodeGenerationPolicyPage;
|
|
|
|
/**
|
|
* class CodeGenerationPolicy
|
|
* This class describes the code generation policy for this project.
|
|
*/
|
|
|
|
class CodeGenerationPolicy : public TQObject {
|
|
Q_OBJECT
|
|
TQ_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 TQString & path);
|
|
|
|
/**
|
|
* Get the value of m_headingFileDir
|
|
* location of the header file template.
|
|
* @return the value of m_headingFileDir
|
|
*/
|
|
TQString 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 ( TQDir new_var );
|
|
|
|
/**
|
|
* Get the value of m_outputDirectory
|
|
* location of where output files will go.
|
|
* @return the value of m_outputDirectory
|
|
*/
|
|
TQDir 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.
|
|
*/
|
|
TQString 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
|
|
*/
|
|
TQString 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 ( TQWidget *tqparent = 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%
|
|
*/
|
|
TQString getHeadingFile(const TQString& 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;
|
|
|
|
TQDir m_headingFiles; // location of the header file template.
|
|
bool m_includeHeadings;
|
|
TQDir 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
|
|
TQString m_lineEndingChars;
|
|
TQString m_indentation;
|
|
|
|
void calculateIndentation ( );
|
|
|
|
protected:
|
|
|
|
void initFields ( );
|
|
|
|
};
|
|
|
|
#endif // CODEGENERATIONPOLICY_H
|