/usr/include/BALL/FORMAT/MOLFile.h is in libball1.4-dev 1.4.3~beta1-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
| 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 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | // -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
#ifndef BALL_FORMAT_MOLFILE_H
#define BALL_FORMAT_MOLFILE_H
#ifndef BALL_FORMAT_GENERICMOLFILE_H
#	include <BALL/FORMAT/genericMolFile.h>
#endif
#ifndef BALL_MATHS_VECTOR3_H
#	include <BALL/MATHS/vector3.h>
#endif
namespace BALL 
{
	class System;
	class Atom;
	class Molecule;
	/**	MDL MOL file class.
			This class enables BALL to read and write MDL MOL files.  \par
			
    	\ingroup  StructureFormats
	*/
	class BALL_EXPORT MOLFile
		: public GenericMolFile
	{
		public:
		/**	@name	Structs
		*/
		//@{
		/** String constants used for named properties.
				Some of the data read from MOL files cannot be stored immediately in
				the kernel datastructures, so they are stored as  \link NamedProperty NamedProperty \endlink  objects
				in  \link Atom Atom \endlink  and  \link Bond Bond \endlink . These string constants are used to access
				the corresponding fields of the atom and bond block of the MOL file.
				@see PropertyManager::setProperty
				@see PropertyManager::getProperty
		*/
		struct BALL_EXPORT Property
		{
			///
			static const String ATOM_MASS_DIFFERENCE;
			///
			static const String ATOM_HYDROGEN_COUNT;
			///
			static const String ATOM_STEREO_CARE_BOX;
			///
			static const String ATOM_VALENCE;
			///
			static const String ATOM_H0_DESIGNATOR;
			///
			static const String ATOM_REACTION_COMPONENT_TYPE;
			///
			static const String ATOM_REACTION_COMPONENT_NUMBER;
			///
			static const String ATOM_INVERSION_RETENTION;
			///
			static const String ATOM_EXACT_CHANGE;
			///
			static const String BOND_STEREO;
			///
			static const String BOND_TOPOLOGY;
			///
			static const String BOND_REACTING_CENTER_STATUS;
		};
		///
	  class BALL_EXPORT CountsStruct
		{
			public:
			Size    number_of_atoms;
			Size    number_of_bonds;
			Size    number_of_atom_lists;
			bool    chiral;
			Size    number_of_stext_entries;
			Size    number_of_reaction_components;
			Size    number_of_reactants;
			Size    number_of_products;
			Size    number_of_intermediates;
			String  version;
		};
		///
		class BALL_EXPORT AtomStruct
		{
			public:
			Vector3		position;
			String		symbol;
			Index			mass_difference;
			Index			charge;
			Index			parity;
			Size			hydrogen_count;
			bool			stereo_care_box;
			Size			valence;
			bool			H0_designator;
			Position	reaction_component_type;
			Position	reaction_component_number;
			Position	number;
			Position	inversion_retention;
			bool			exact_change;
		};
		///
		class BALL_EXPORT BondStruct
		{
			public:
			Position	first_atom;
			Position	second_atom;
			Position	type;
			Position	stereo;
			Position	topology;
			Position	reacting_center_status;
		};
		//@}
		/**	@name	Constructors and Destructors
		*/
		//@{
		/**	Default constructor
		*/
		MOLFile();
		/** Detailed constructor.
		 *  @throw Exception::FileNotFound if the file could not be opened
		 */
		MOLFile(const String& filename, File::OpenMode open_mode = std::ios::in);
		/// Destructor
		virtual ~MOLFile();
		
		//@}
		/**	@name Reading and Writing of Kernel Datastructures
		*/
		//@{
		
		/**	Write a molecule to the MOL file
		 *  @throw File::CannotWrite if writing to the file failed
		 */
		virtual bool write(const Molecule& molecule);
		/**	Write a system to the MOL file.
		 *  @throw File::CannotWrite if writing to the file failed
		 */
		virtual bool write(const System& system);
		
		/**	Read a system from the MOL file
		 *  @throw Exception::ParseError if a syntax error was encountered
		 */
		virtual bool read(System&	system);
		/**	Read a single molecule from the file
		 *  @throw Exception::ParseError if a syntax error was encountered
		 */
		virtual Molecule* read();
			
		///
		const MOLFile& operator = (const MOLFile& file);
		//@}
		protected:
		/**	@name Format definitions
		*/
		//@{
		/// The format of the counts line
		static const String counts_format_;
		/// The format of an entry of the atom block
		static const String atom_format_;
		/// The format of an entry of the bond block
		static const String bond_format_;
		//@}
		/** Read the CTAB of a MOL file and construct a Molecule from its data
		 *  @throw Exception::ParseError if a syntax error was encountered
		 */
		Molecule* readCTAB_(std::vector<Atom*>& atom_map);
		/// Read the Counts line of a MOL file
		bool readCountsLine_(CountsStruct& counts);
		/// Read a line from the atom block
		bool readAtomLine_(AtomStruct& atom);
		/// Read a line from the bond block
		bool readBondLine_(BondStruct& bond);
		/// Write the Counts line
		void writeCountsLine_(const CountsStruct& counts);
		/// Write a line of the atom block
		void writeAtomLine_(const AtomStruct& atom);
		/// Write a line of the bond block 
		void writeBondLine_(const BondStruct& bond);
	};
} // namespace BALL
#endif // BALL_FORMAT_MOLFILE_H
 |