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

211 lines
6.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. *
* *
* 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.trinitydesktop.org
*/
class UMLOperation : public UMLClassifierListItem {
TQ_OBJECT
public:
/**
* Constructs an UMLOperation.
* Not intended for general use: The operation is not tied in with
* umbrello's TQt 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 TQString& 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 TQt 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 TQString &name);
/**
* Returns a string representation of the operation.
*
* @param sig What type of operation string to show.
* @return The string representation of the operation.
*/
TQString 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.
*/
TQString getUniqueParameterName();
/**
* Display the properties configuration dialog for the template.
*/
bool showPropertiesDialog(TQWidget* 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( TQDomDocument & qDoc, TQDomElement & qElement );
protected:
/**
* Loads a <UML:Operation> XMI element.
*/
bool load( TQDomElement & 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