diff options
Diffstat (limited to 'umbrello/umbrello/operation.h')
-rw-r--r-- | umbrello/umbrello/operation.h | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/umbrello/umbrello/operation.h b/umbrello/umbrello/operation.h new file mode 100644 index 00000000..eb94576e --- /dev/null +++ b/umbrello/umbrello/operation.h @@ -0,0 +1,209 @@ +/*************************************************************************** + * * + * 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) 2002-2006 * + * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> * + ***************************************************************************/ + +#ifndef OPERATION_H +#define OPERATION_H + +#include "umlattributelist.h" +#include "classifierlistitem.h" + +class UMLClassifier; + +/** + * This class represents an operation in the UML model. + * + * Bugs and comments to uml-devel@lists.sf.net or http://bugs.kde.org + */ +class UMLOperation : public UMLClassifierListItem { + Q_OBJECT +public: + /** + * Constructs an UMLOperation. + * Not intended for general use: The operation is not tied in with + * umbrello's Qt signalling for object creation. + * If you want to create an Operation use the method in UMLDoc instead. + * + * @param parent The parent to this operation. + * @param name The name of the operation. + * @param id The id of the operation. + * @param s The visibility of the operation. + * @param rt The return type of the operation. + */ + UMLOperation(const UMLClassifier * parent, const QString& name, + Uml::IDType id = Uml::id_None, + Uml::Visibility s = Uml::Visibility::Public, + UMLObject *rt = 0); + + /** + * Constructs an UMLOperation. + * Not intended for general use: The operation is not tied in with + * umbrello's Qt signalling for object creation. + * If you want to create an Operation use the method in UMLDoc instead. + * + * @param parent The parent to this operation. + */ + UMLOperation(const UMLClassifier * parent); +public: + + /** + * destructor + */ + virtual ~UMLOperation(); + + /** + * Overloaded '==' operator. + */ + bool operator==( UMLOperation & rhs ); + + /** + * Copy the internal presentation of this object into the new + * object. + */ + virtual void copyInto(UMLOperation *rhs) const; + + /** + * Make a clone of this object. + */ + virtual UMLObject* clone() const; + + /** + * Reimplement method from UMLClassifierListItem. + * + * @param type Pointer to the type object. + */ + void setType(UMLObject *type); + + /** + * Move a parameter one position to the left. + * + * @param a The parameter to move. + */ + void moveParmLeft(UMLAttribute *a); + + /** + *Move a parameter one position to the right. + * + * @param a The parameter to move. + */ + void moveParmRight(UMLAttribute *a); + + /** + * Remove a parameter from the operation. + * + * @param a The parameter to remove. + * @param emitModifiedSignal Whether to emit the "modified" signal + * which creates an entry in the Undo stack for the + * removal. Default: true. + */ + void removeParm(UMLAttribute *a, bool emitModifiedSignal = true); + + /** + * Returns a list of parameters. + * + * @return A list of the parameters in the operation. + */ + UMLAttributeList getParmList() { + return m_List; + } + + /** + * Finds a parameter of the operation. + * + * @param name The parameter name to search for. + * @return The found parameter, 0 if not found. + */ + UMLAttribute * findParm(const QString &name); + + /** + * Returns a string representation of the operation. + * + * @param sig What type of operation string to show. + * @return The string representation of the operation. + */ + QString toString(Uml::Signature_Type sig = Uml::st_NoSig); + + /** + * Add a parameter to the operation. + * + * @param parameter The parameter to add. + * @param position The position in the parameter list. + * If position = -1 the parameter will be + * appended to the list. + */ + void addParm(UMLAttribute *parameter, int position = -1); + + /** + * Calls resolveRef() on all parameters. + * Needs to be called after all UML objects are loaded from file. + * + * @return True for success. + */ + bool resolveRef(); + + /** + * Returns an unused parameter name for a new parameter. + */ + QString getUniqueParameterName(); + + /** + * Display the properties configuration dialog for the template. + */ + bool showPropertiesDialog(QWidget* parent); + + /** + * Returns whether this operation is a constructor. + * + * @return True if this operation is a constructor. + */ + bool isConstructorOperation(); + + /** + * Returns whether this operation is a destructor. + * + * @return True if this operation is a destructor. + */ + bool isDestructorOperation(); + + /** + * Shortcut for (isConstructorOperation() || isDestructorOperation()) + * + * @return True if this operation is a constructor or destructor. + */ + bool isLifeOperation(); + + /** + * Sets whether this operation is a query (C++ "const".) + */ + void setConst(bool b); + + /** + * Returns whether this operation is a query (C++ "const".) + */ + bool getConst() const; + + /** + * Saves to the <UML:Operation> XMI element. + */ + void saveToXMI( QDomDocument & qDoc, QDomElement & qElement ); + +protected: + /** + * Loads a <UML:Operation> XMI element. + */ + bool load( QDomElement & element ); + +private: + Uml::IDType m_returnId; ///< Holds the xmi.id of the <UML:Parameter kind="return"> + UMLAttributeList m_List; /// Parameter list + bool m_bConst; ///< Holds the isQuery attribute of the <UML:Operation> +}; + +#endif |