fragment.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: fragment.h,v 1.29 2005/10/23 12:02:18 oliver Exp $
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 // required for visual studio
00118 #ifdef BALL_COMPILER_MSVC
00119 template class BALL_EXPORT UnaryProcessor<Fragment>;
00120 #endif
00121 } // namespace BALL
00122 
00123 #endif // BALL_KERNEL_FRAGMENT_H