This file is indexed.

/usr/include/BALL/STRUCTURE/smilesParser.h is in libball1.4-dev 1.4.3~beta1-3.

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
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//

#ifndef BALL_STRUCTURE_SMILES_PARSER_H
#define BALL_STRUCTURE_SMILES_PARSER_H

#ifndef BALL_COMMON_H
#	include <BALL/common.h>
#endif

#ifndef BALL_KERNEL_ATOM_H
#	include <BALL/KERNEL/atom.h>
#endif

#ifndef BALL_KERNEL_BOND_H
#	include <BALL/KERNEL/bond.h>
#endif

#ifndef BALL_KERNEL_SYSTEM_H
#	include <BALL/KERNEL/system.h>
#endif

namespace BALL 
{

	/** @name	SMILES Parser.
			A simple parser for SMILES strings. Output is a system, the atom coordinates
			however are all zero! The system contains only connectivity data (topology) of
			the molecule. At this time, there's no support in BALL to convert this 2D data
			automatically to 3D data.
			<br><br>
			<b>Status:</b> <b>experimental</b> \par
			\ingroup StructureMatching
	*/
	class BALL_EXPORT SmilesParser
	{
		public:
		enum ZEIsomerType
		{
			NONE,
			Z,
			E
		};

		enum ChiralClass
		{
	    NONCHIRAL,
			TH,
			AL,
			SP,
			TB,
			OH
		};

		enum
		{
			MAX_CONNECTIONS = 100
		};

		typedef std::pair<ChiralClass, Position> ChiralDef;

		class SPAtom;
		class BALL_EXPORT SPBond 
			:	public Bond
		{
			public:
			virtual ~SPBond() ;

			SPBond(SPAtom* first, SPAtom* second, Index order = 1);

			ZEIsomerType getZEType() const;
			void setZEType(ZEIsomerType type);

			protected:
			ZEIsomerType	ze_type_;
		};
		
		class BALL_EXPORT SPAtom
			:	public Atom
		{
			public:
				
			SPAtom(const String& symbol, bool in_brackets);
			virtual ~SPAtom() ;

			Size getDefaultValence() const;
			Size countRealValences() const;

			Size getIsotope() const { return isotope_; }
			void setIsotope(Size isotope) { isotope_ = isotope; };

			Index getFormalCharge() const { return formal_charge_; }
			void setFormalCharge(Index charge) { formal_charge_ = charge; }
			
			const ChiralDef& getChirality() const { return chirality_; }
			void setChirality(const ChiralDef& chirality) { chirality_ = chirality; }
			
			bool isAromatic() const { return is_aromatic_; }
			void setAromatic(bool is_aromatic) { is_aromatic_ = is_aromatic; };
			bool isInBrackets() const { return in_brackets_; }
			void setInBrackets(bool in_brackets) { in_brackets_ = in_brackets; };

			protected:
			Size				isotope_;
			Index				formal_charge_;
			ChiralDef		chirality_;
			bool				is_aromatic_;
			bool				in_brackets_;
		};
		
		typedef std::list<Position> ConnectionList;

		/**	@name Constructors and Destructors
		*/
		//@{

		///
		SmilesParser();
			
		///
		SmilesParser(const SmilesParser& parser);

		///
		virtual ~SmilesParser();
		//@}
		
		/**	@name	Parsing
		*/
		//@{
		/**	Parse a SMILES string.
		*/
		void parse(const String& s)
			throw(Exception::ParseError);

		/**	Return the parsed system
		*/
		const System& getSystem() const;
		//@}
		
		/**	@name Methods required by the underlying YACC parser
		*/
		//@{
		///
		SPAtom* createAtom(const String& symbol, bool in_bracket = false);

		///
		void createBonds(SPAtom* atom, const ConnectionList* list);		

		///
		void createBond(SPAtom* left, SPAtom* right, Index order);

		/// 
		void addMissingHydrogens();
		//@}
		

		struct State
		{
			Size					char_count;
			SmilesParser*	current_parser;
			const char*		buffer;
		};
		
		static State state;

		protected:
		System								system_;
		std::vector<SPAtom*>	connections_;
		std::vector<SPAtom*>	all_atoms_;
		static SmilesParser*	current_parser_;
	};
  
} // namespace BALL

#endif // BALL_STRUCTURE_SMILES_PARSER_H