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/tclwriter.h

175 lines
5.5 KiB

/***************************************************************************
tclwriter.h - description
-------------------
begin : Thu Jul 26 2005
copyright : (C) 2005 by Rene Meyer
email : rene.meyer@sturmit.de
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#ifndef TCLWRITER_H
#define TCLWRITER_H
#include <tqstringlist.h>
#include "simplecodegenerator.h"
#include "../umloperationlist.h"
#include "../umlattributelist.h"
#include "../umlassociationlist.h"
class TQFile;
class TQTextStream;
class ClassifierInfo;
/**
* class TclWriter is a code generator for UMLClassifier objects.
* Create an instance of this class, and feed it a UMLClassifier when
* calling writeClass and it will generate both a header (.h) and
* source (.tcl) file for that classifier.
*/
class TclWriter : public SimpleCodeGenerator
{
public:
/**
* Constructor, initialises a couple of variables
*/
TclWriter();
/**
* Destructor, empty
*/
virtual ~ TclWriter();
/**
* call this method to generate tcl code for a UMLClassifier
* @param c the class to generate code for
*/
virtual void writeClass(UMLClassifier * c);
/**
* returns "Tcl"
*/
virtual Uml::Programming_Language getLanguage();
/**
* get list of reserved keywords
*/
virtual const TQStringList reservedKeywords() const;
private:
/**
* Current output stream.
*/
TQTextStream * mStream;
/**
* write the header file for this classifier.
*/
void writeHeaderFile(UMLClassifier * c, TQFile & file);
/**
* write the source code body file for this classifier.
*/
void writeSourceFile(UMLClassifier * c, TQFile & file);
/**
* write the source codei text.
*/
void writeCode(const TQString &text);
/**
* write comment text.
*/
void writeComm(const TQString &text);
/**
* write documentation text.
*/
void writeDocu(const TQString &text);
void writeConstructorDecl();
void writeDestructorDecl();
/**
* Summary information about current classifier.
*/
ClassifierInfo *classifierInfo;
TQString mNamespace;
TQString mClass;
TQString mClassGlobal;
/**
* writes the Attribute declarations
* @param visibility the visibility of the attribs to print out
* @param writeStatic whether to write static or non-static attributes out
* @param stream text stream
*/
void writeAttributeDecl(Uml::Visibility visibility, bool writeStatic);
void writeAssociationIncl(UMLAssociationList list,
Uml::IDType myId, const TQString &type);
/**
* Searches a list of associations for appropriate ones to write out as attributes
*/
void writeAssociationDecl(UMLAssociationList associations,
Uml::Visibility permit, Uml::IDType id,
const TQString &type);
/**
* Writes out an association as an attribute using Vector
*/
void writeAssociationRoleDecl(const TQString &fieldClassName,
const TQString &roleName, const TQString &multi, const TQString &doc, const TQString &docname);
/**
* If needed, write out the declaration for the method to initialize attributes of our class.
*/
void writeInitAttributeHeader();
void writeInitAttributeSource();
void writeConstructorHeader();
void writeConstructorSource();
void writeDestructorHeader();
void writeDestructorSource();
void writeOperationHeader(UMLClassifier * c,
Uml::Visibility permitScope);
void writeOperationSource(UMLClassifier * c,
Uml::Visibility permitScope);
void writeAttributeSource();
void writeAssociationSource(UMLAssociationList associations,
Uml::IDType id);
void writeAssociationRoleSource(const TQString &fieldClassName,
const TQString &roleName,
const TQString &multi);
void writeUse(UMLClassifier * c);
/**
* Returns the name of the given object (if it exists)
*/
TQString getUMLObjectName(UMLObject * obj);
/**
* Replaces `string' with STRING_TYPENAME.
*/
TQString fixTypeName(const TQString &string);
TQStringList ObjectFieldVariables;
TQStringList VectorFieldVariables;
};
#endif // TCLWRITER_H