1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
#ifndef _UMLBASEARTIFACT_H
#define _UMLBASEARTIFACT_H
#include "UmlItem.h"
#include "anItemKind.h"
#include <qvector.h>
#include <qcstring.h>
#include "UmlClass.h" // to avoid destructor problem
class UmlArtifact;
class UmlDeploymentView;
class UmlDeploymentDiagram;
class UmlClass;
//Manage the artifacts
class UmlBaseArtifact : public UmlItem {
public:
// returns a new artifact named 's' created under 'parent'
//
// In case it cannot be created (the name is already used or
// invalid, 'parent' cannot contain it etc ...) return 0 in C++
// and produce a RuntimeException in Java
static UmlArtifact * create(UmlDeploymentView * parent, const char * s);
// returns the kind of the item
virtual anItemKind kind();
// returns the optional associated diagram
UmlDeploymentDiagram * associatedDiagram();
// sets the associated diagram, arg may be null to unset it
//
// On error return FALSE in C++, produce a RuntimeException in Java
bool set_AssociatedDiagram(UmlDeploymentDiagram * d);
// returns (in Java a copy of) the optional associated classes
// significant when the artifact is stereotyped <<source>>
const QVector<UmlClass> & associatedClasses();
// adds 'cl' at the end of the associated classes list, returns false
// if 'cl' is already an associate class.
// significant when the artifact is stereotyped <<source>>
//
// On error return FALSE in C++, produce a RuntimeException in Java
bool addAssociatedClass(UmlClass * cl);
// removes an associated class
// significant when the artifact is not stereotyped <<source>>
//
// On error return FALSE in C++, produce a RuntimeException in Java
bool removeAssociatedClass(UmlClass * cl);
// set the associated classes list
// significant when the artifact is stereotyped <<source>>
//
// On error return FALSE in C++, produce a RuntimeException in Java
bool set_AssociatedClasses(const QVector<UmlClass> & l);
// returns (in Java a copy of) the associated artifacts list
// significant when the artifact is not stereotyped <<source>>
const QVector<UmlArtifact> & associatedArtifacts();
// adds an associated artifacts, returns false if 'cp' is already
// an associate artifact.
// significant when the artifact is not stereotyped <<source>>
//
// On error return FALSE in C++, produce a RuntimeException in Java
bool addAssociatedArtifact(UmlArtifact * cp);
// removes an associated artifacts
// significant when the artifact is not stereotyped <<source>>
//
// On error return FALSE in C++, produce a RuntimeException in Java
bool removeAssociatedArtifact(UmlArtifact * cp);
// removes all associated artifacts
// significant when the artifact is not stereotyped <<source>>
//
// On error return FALSE in C++, produce a RuntimeException in Java
bool removeAllAssociatedArtifacts();
#ifdef WITHCPP
// returns the C++ header file definition
const QCString & cppHeader();
// to set the C++ header file definition
//
// On error return FALSE in C++, produce a RuntimeException in Java
bool set_CppHeader(const QCString & s);
// returns the C++ source file definition
const QCString & cppSource();
// to set the C++ source file definition
//
// On error return FALSE in C++, produce a RuntimeException in Java
bool set_CppSource(const QCString & s);
#endif
#ifdef WITHJAVA
// returns the Java file definition
const QCString & javaSource();
// to set the Java file definition
//
// On error return FALSE in C++, produce a RuntimeException in Java
bool set_JavaSource(const QCString & s);
#endif
#ifdef WITHIDL
// returns the Idl file definition
const QCString & idlSource();
// to set the Idl file definition
//
// On error return FALSE in C++, produce a RuntimeException in Java
bool set_IdlSource(const QCString & s);
#endif
// to unload the object to free memory, it will be reloaded
// automatically if needed. args unused
virtual void unload(bool = FALSE, bool = FALSE);
friend class UmlBaseClass;
private:
UmlDeploymentDiagram * _assoc_diagram;
QVector<UmlClass> _assoc_classes;
QVector<UmlArtifact> _associated;
#ifdef WITHCPP
QCString _cpp_h;
QCString _cpp_src;
#endif
#ifdef WITHJAVA
QCString _java_src;
#endif
#ifdef WITHIDL
QCString _idl_src;
#endif
protected:
//internal, do NOT use it
virtual void read_uml_();
#ifdef WITHCPP
//internal, do NOT use it
virtual void read_cpp_();
#endif
#ifdef WITHJAVA
//internal, do NOT use it
virtual void read_java_();
#endif
#ifdef WITHIDL
//internal, do NOT use it
virtual void read_idl_();
#endif
// the constructor, do not call it yourself !!!!!!!!!!
UmlBaseArtifact(void * id, const QCString & n);
};
inline UmlBaseArtifact::UmlBaseArtifact(void * id, const QCString & n) : UmlItem(id, n) {
_assoc_diagram = 0;
}
#endif
|