source: src/Fragmentation/KeySet.cpp@ e1e108

IndependentFragmentGrids_IntegrationTest
Last change on this file since e1e108 was 9eb71b3, checked in by Frederik Heber <frederik.heber@…>, 8 years ago

Commented out MemDebug include and Memory::ignore.

  • MemDebug clashes with various allocation operators that use a specific placement in memory. It is so far not possible to wrap new/delete fully. Hence, we stop this effort which so far has forced us to put ever more includes (with clashes) into MemDebug and thereby bloat compilation time.
  • MemDebug does not add that much usefulness which is not also provided by valgrind.
  • Property mode set to 100644
File size: 2.9 KB
RevLine 
[f0674a]1/*
2 * Project: MoleCuilder
3 * Description: creates and alters molecular systems
[0aa122]4 * Copyright (C) 2010-2012 University of Bonn. All rights reserved.
[94d5ac6]5 *
6 *
7 * This file is part of MoleCuilder.
8 *
9 * MoleCuilder is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation, either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * MoleCuilder is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with MoleCuilder. If not, see <http://www.gnu.org/licenses/>.
[f0674a]21 */
22
23/*
24 * KeySet.cpp
25 *
26 * Created on: Oct 20, 2011
27 * Author: heber
28 */
29
30#ifdef HAVE_CONFIG_H
31#include <config.h>
32#endif
33
[9eb71b3]34//#include "CodePatterns/MemDebug.hpp"
[f0674a]35
[75363b]36#include <sstream>
37
38#include "CodePatterns/Log.hpp"
39
[f0674a]40#include "KeySet.hpp"
41
42/** Constructor of class KeySet.
43 *
44 * This class contains a set of indices for the atoms contained in a fragment.
45 *
46 */
47KeySet::KeySet()
48{}
49
50/** Destructor of class KeySet.
51 *
52 */
53KeySet::~KeySet()
54{}
55
56
57/** Comparator to allow for placing in a map.
58 *
59 * @param a instance to compare to
60 * @return true - this instance has less items or the first different item itself is less,
61 * false - else
62 */
63bool KeySet::operator<(const KeySet &a) const
64{
[47d041]65 //LOG(0, "my check is used.");
[f0674a]66 if (size() < a.size()) {
67 return true;
68 } else {
69 if (size() > a.size()) {
70 return false;
71 } else {
72 KeySet::iterator IteratorA = begin();
73 KeySet::iterator IteratorB = a.begin();
74 while ((IteratorA != end()) && (IteratorB != a.end())) {
75 if ((*IteratorA) < (*IteratorB))
76 return true;
77 else if ((*IteratorA) > (*IteratorB)) {
78 return false;
79 } // else, go on to next index
80 IteratorA++;
81 IteratorB++;
82 } // end of while loop
83 }// end of check in case of equal sizes
84 }
85 return false; // if we reach this point, they are equal
86}
[75363b]87
88/** Scans a single line for number and puts them into \a KeySet.
89 * \param *buffer buffer to scan
90 * \return true - at least one valid atom id parsed, false - CurrentSet is empty
91 */
92bool KeySet::ScanBufferIntoKeySet(char *buffer)
93{
94 std::stringstream line;
95 int AtomNr;
96 int status = 0;
97
98 line.str(buffer);
99 while (!line.eof()) {
100 line >> AtomNr;
101 if (AtomNr >= 0) {
102 insert(AtomNr); // insert at end, hence in same order as in file!
103 status++;
104 } // else it's "-1" or else and thus must not be added
105 }
106 std::stringstream output;
107 for(KeySet::iterator runner = begin(); runner != end(); runner++)
108 output << (runner == begin() ? "" : " " ) << (*runner);
109 LOG(2, "INFO: The scanned KeySet is " << output.str());
110 return (status != 0);
111}
Note: See TracBrowser for help on using the repository browser.