00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_KERNEL_FRAGMENT_H
00008 #define BALL_KERNEL_FRAGMENT_H
00009
00010 #ifndef BALL_KERNEL_ATOMCONTAINER_H
00011 # include <BALL/KERNEL/atomContainer.h>
00012 #endif
00013
00014 namespace BALL
00015 {
00022 class BALL_EXPORT Fragment
00023 : public AtomContainer
00024 {
00025 public:
00026
00027 BALL_CREATE_DEEP(Fragment)
00028
00029
00032
00034 enum Property
00035 {
00037 NUMBER_OF_PROPERTIES = AtomContainer::NUMBER_OF_PROPERTIES
00038 };
00039
00041
00044
00047 Fragment();
00048
00051 Fragment(const Fragment& fragment, bool deep = true);
00052
00055 Fragment(const String& name);
00056
00059 virtual ~Fragment();
00060
00062
00065
00069 void persistentWrite(PersistenceManager& pm, const char* name = 0) const
00070 throw(Exception::GeneralException);
00071
00075 void persistentRead(PersistenceManager& pm)
00076 throw(Exception::GeneralException);
00077
00079
00082
00087 Fragment& operator = (const Fragment& fragment);
00088
00090
00095 bool operator == (const Fragment& fragment) const;
00096
00100 bool operator != (const Fragment& fragment) const;
00101
00105
00112 virtual void dump(std::ostream& s = std::cout, Size depth = 0) const;
00113
00115 };
00116
00117
00118 #ifdef BALL_COMPILER_MSVC
00119 template class BALL_EXPORT UnaryProcessor<Fragment>;
00120 #endif
00121 }
00122
00123 #endif // BALL_KERNEL_FRAGMENT_H