00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 00005 #ifndef BALL_CONCEPT_MOLECULARINFORMATION_H 00006 #define BALL_CONCEPT_MOLECULARINFORMATION_H 00007 00008 #ifndef BALL_CONCEPT_COMPOSITE_H 00009 # include <BALL/CONCEPT/composite.h> 00010 #endif 00011 00012 namespace BALL 00013 { 00014 class Atom; 00015 00021 class BALL_EXPORT MolecularInformation 00022 : public Visitor<Composite> 00023 { 00024 public: 00025 00032 enum Type 00033 { 00035 TYPE__UNKNOWN = -1, 00036 00038 TYPE__SYSTEM = 0, 00039 00041 TYPE__PROTEIN = 1, 00042 00044 TYPE__MOLECULE = 2, 00045 00047 TYPE__CHAIN = 3, 00048 00050 TYPE__FRAGMENT = 4, 00051 00053 TYPE__RESIDUE = 5, 00054 00056 TYPE__SECONDARY_STRUCTURE = 6, 00057 00059 TYPE__ATOM = 7, 00060 00062 TYPE__BOND = 8 00063 00064 00065 }; 00066 00068 00070 00074 MolecularInformation() 00075 ; 00076 00079 virtual ~MolecularInformation() 00080 ; 00081 00087 virtual void clear() 00088 ; 00089 00091 00093 00101 Type getType() const { return type_;} 00102 00104 String getName() const { return name_;} 00105 00107 String getTypeName() const { return type_name_;} 00108 00119 virtual void visit(Composite& composite); 00121 00122 private: 00123 00124 String getBondAtomName_(Atom* atom); 00125 void getType_(Composite& composite); 00126 void getTypeName_(); 00127 void getName_(Composite& composite); 00128 00129 Type type_; 00130 String name_; 00131 String type_name_; 00132 }; 00133 00134 } // namespace BALL 00135 00136 #endif // BALL_CONCEPT_MOLECULARINFORMATION_H