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.
tdesdk/umbrello/umbrello/codegenerators/simplecodegenerator.h

122 lines
3.1 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. *
* *
***************************************************************************/
/* This code generated by:
* Author : thomas
* Date : Sep Mon 1 2003
*
* copyright (C) 2004
* Umbrello UML Modeller Authors <uml-devel@uml.sf.net>
*/
#ifndef SIMPLECODEGENERATOR_H
#define SIMPLECODEGENERATOR_H
#include <tqstringlist.h>
#include <tqstring.h>
#include <tqmap.h>
#include "../codegenerator.h"
#include "../umlnamespace.h"
class UMLDoc;
/**
* A simple code generator interface designed to work with
* the existing codewriters.
*/
class SimpleCodeGenerator : public CodeGenerator
{
TQ_OBJECT
public:
// Constructors/Destructors
//
/**
* Empty Constructor
*/
SimpleCodeGenerator (bool createDirHierarchyForPackages = true);
/**
* Empty Destructor
*/
virtual ~SimpleCodeGenerator ( );
// Public attribute accessor methods
//
void writeCodeToFile ( UMLClassifierList & concepts);
void writeCodeToFile ( );
/**
* call this method to generate code for a UMLClassifier
* @param c the class you want to generate code for.
*/
virtual void writeClass(UMLClassifier *c) = 0;
/**
* This is implemented only because we HAVE to.
* @return ClassifierCodeDocument
* @param classifier
*/
CodeDocument * newClassifierCodeDocument (UMLClassifier * classifier);
protected:
// compatability methods..
TQString findFileName(UMLPackage* concept, const TQString &ext);
TQString overwritableName(UMLPackage* concept, const TQString &name, const TQString &ext);
bool hasDefaultValueAttr(UMLClassifier *c);
bool hasAbstractOps(UMLClassifier *c);
/**
* Returns the current indent string based on m_indentLevel and m_indentation.
*/
TQString getIndent ();
/**
* Maps UMLObjects to filenames. Used for finding out which file
* each class was written to.
*/
TQMap<UMLPackage*,TQString> m_fileMap;
// the parent document
UMLDoc *m_doc;
/**
* For some code generators, it does not make much sense to create a
* directory for each package because that would lead to a rather
* sparsely populated directory tree (maximum of just one source file
* per directory.)
*/
bool m_createDirHierarchyForPackages;
/* Old Attributes writers will look for */
TQString m_indentation;
int m_indentLevel;
TQString m_endl;
// override parent method..we need special handling
void initFromParentDocument( );
private:
void initFields ( UMLDoc * doc) ;
public slots:
void syncCodeToDocument ( );
};
#endif // SIMPLECODEGENERATOR_H