From e0b8818d20e81b39a6dd510b51f97d673b14fe06 Mon Sep 17 00:00:00 2001
From: Marco Biasini <marco.biasini@unibas.ch>
Date: Tue, 19 Oct 2010 18:04:26 +0200
Subject: [PATCH] move method definitions of ResNum into header and make it
 smaller

---
 modules/mol/base/src/CMakeLists.txt  |   1 -
 modules/mol/base/src/residue_prop.cc |  95 ----------------------
 modules/mol/base/src/residue_prop.hh | 114 +++++++++++++++++++++------
 3 files changed, 89 insertions(+), 121 deletions(-)
 delete mode 100644 modules/mol/base/src/residue_prop.cc

diff --git a/modules/mol/base/src/CMakeLists.txt b/modules/mol/base/src/CMakeLists.txt
index 6b2967cc0..b83c69420 100644
--- a/modules/mol/base/src/CMakeLists.txt
+++ b/modules/mol/base/src/CMakeLists.txt
@@ -26,7 +26,6 @@ query_error.cc
 query_state.cc
 residue_base.cc
 residue_handle.cc
-residue_prop.cc
 residue_view.cc
 surface_builder.cc
 surface_handle.cc
diff --git a/modules/mol/base/src/residue_prop.cc b/modules/mol/base/src/residue_prop.cc
deleted file mode 100644
index 3712bfe0b..000000000
--- a/modules/mol/base/src/residue_prop.cc
+++ /dev/null
@@ -1,95 +0,0 @@
-//------------------------------------------------------------------------------
-// This file is part of the OpenStructure project <www.openstructure.org>
-//
-// Copyright (C) 2008-2010 by the OpenStructure authors
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License as published by the Free
-// Software Foundation; either version 3.0 of the License, or (at your option)
-// any later version.
-// This library is distributed in the hope that it will be useful, but WITHOUT
-// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
-// details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this library; if not, write to the Free Software Foundation, Inc.,
-// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-//------------------------------------------------------------------------------
-#include "residue_prop.hh"
-#include <boost/format.hpp>
-
-namespace ost { namespace mol {
-
-ResNum::ResNum(int n):
-  num_(n), alt_('\0')
-{}
-
-ResNum::ResNum(int n, char a):
-  num_(n), alt_(a)
-{}
-
-bool ResNum::operator==(const ResNum& r) const
-{
-  return num_==r.num_ && alt_==r.alt_;
-}
-
-bool ResNum::operator<(const ResNum& r) const
-{
-  return num_==r.num_ ? alt_<r.alt_ : num_<r.num_;
-}
-
-int ResNum::operator+=(int i)
-{
-  num_+=i;
-  return num_;
-}
-
-int ResNum::operator-=(int i)
-{
-  num_-=i;
-  return num_;
-}
-
-int ResNum::operator+=(const ResNum& r)
-{
-  num_+=r.num_;
-  return num_;
-}
-
-int ResNum::operator-=(const ResNum& r)
-{
-  num_-=r.num_;
-  return num_;
-}
-
-ResNum& ResNum::operator++()
-{
-  ++num_;
-  return *this;
-}
-
-ResNum& ResNum::operator--()
-{
-  --num_;
-  return *this;
-}
-
-ResNum ResNum::NextInsertionCode() const
-{
-  char alt= alt_=='\0' ? 'a' : alt_+1;
-  ResNum nrvo(num_,alt);
-  return nrvo;
-}
-
-String ResNum::AsString() const {
-  return str(boost::format("%d%s") % num_ % (alt_==0 ? "" : String(1, alt_)));
-}
-
-std::ostream& operator<<(std::ostream& os, const ResNum& n)
-{
-  return os << n.AsString();
-}
-
-
-}} // ns
diff --git a/modules/mol/base/src/residue_prop.hh b/modules/mol/base/src/residue_prop.hh
index 2bb92b3da..001660fa0 100644
--- a/modules/mol/base/src/residue_prop.hh
+++ b/modules/mol/base/src/residue_prop.hh
@@ -25,48 +25,112 @@
 
 namespace ost { namespace mol {
 
-/*
-  
-*/
-class DLLEXPORT_OST_MOL ResNum: private
+
+class DLLEXPORT ResNum: private
     boost::additive<ResNum, int,
     boost::totally_ordered<ResNum, 
     boost::totally_ordered<ResNum, int,
     boost::unit_steppable<ResNum> > > >
 {
 public:
-  ResNum(int num); // no explicit on purpose
-  ResNum(int num, char alt);
-
-  bool operator==(const ResNum&) const;
-  bool operator<(const ResNum&) const;
-  int operator+=(int);
-  int operator-=(int);
-  int operator+=(const ResNum&);
-  int operator-=(const ResNum&);
-  ResNum& operator++();
-  ResNum& operator--();
-
-  ResNum NextInsertionCode() const;
-
-  int GetNum() const {return num_;}
-  char GetInsCode() const {return alt_;}
+  ResNum(int n):
+    num_(n), alt_('\0')
+  { }
+
+  ResNum(int n, char a):
+    num_(n), alt_(a)
+  {}
+
+  bool operator==(const ResNum& r) const
+  {
+    return num_==r.num_ && alt_==r.alt_;
+  }
+
+  bool operator<(const ResNum& r) const
+  {
+    return num_==r.num_ ? alt_<r.alt_ : num_<r.num_;
+  }
+
+  int operator+=(int i)
+  {
+    num_+=i;
+    return num_;
+  }
+
+  int operator-=(int i)
+  {
+    num_-=i;
+    return num_;
+  }
+
+  int operator+=(const ResNum& r)
+  {
+    num_+=r.num_;
+    return num_;
+  }
+
+  int operator-=(const ResNum& r)
+  {
+    num_-=r.num_;
+    return num_;
+  }
+
+  ResNum& operator++()
+  {
+    ++num_;
+    return *this;
+  }
+
+  ResNum& operator--()
+  {
+    --num_;
+    return *this;
+  }
+
+  ResNum NextInsertionCode() const
+  {
+    char alt= alt_=='\0' ? 'a' : alt_+1;
+    ResNum nrvo(num_,alt);
+    return nrvo;
+  }
   
   /// \brief get residue number as String
   ///
   /// The returned String consists of both the numeric residue sequence number
   /// and the insertion code. If the insertion code is not defined, i.e. is 
   /// equal to the null character, only the residue sequence number is returned.
-  String AsString() const;
+  inline String AsString() const;
+  
+  int GetNum() const { return num_; }
+  
+  void SetNum(int num) { num_=num; }
+  
+  void SetInsCode(char ins_code) { alt_=ins_code; }
+  
+  char GetInsCode() const { return alt_; }  
+  
 private:
-  int num_;
-  char alt_;
+  int num_ : 24;
+  int alt_ :  8;
 };
 
-DLLEXPORT_OST_MOL std::ostream& operator<<(std::ostream& os, const ResNum& n);
-
 typedef String ResidueKey;
 
+inline std::ostream& operator<<(std::ostream& os, const ResNum& n)
+{
+  return os << n.GetNum();
+  if (n.GetInsCode()!='\0')
+    os << n.GetInsCode();
+  return os;
+}
+
+inline String ResNum::AsString() const
+{
+  std::stringstream ss;
+  ss << *this;
+  return ss.str();    
+}
+
 }} // ns
 
 
-- 
GitLab