Presence.h

00001 // Copyright 2008 Michael Marsh, University of Maryland.
00002 //
00003 // This file is part of pydtn.
00004 //
00005 // pydtn is free software: you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License as published by
00007 // the Free Software Foundation, either version 3 of the License, or
00008 // (at your option) any later version.
00009 //
00010 // pydtn is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 // GNU General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU General Public License
00016 // along with pydtn.  If not, see <http://www.gnu.org/licenses/>.
00017 //
00018 // The views and conclusions contained in the software and documentation
00019 // are those of the authors and should not be interpreted as representing
00020 // official policies, either expressed or implied, of the University
00021 // of Maryland.
00022 //
00023 // pydtn extends and embeds the Python interpreter, which is
00024 // Copyright 2001-2006 Python Software Foundation, All Rights Reserved,
00025 // and is released under the PSF License Agreement.
00026 //
00027 // RANLUX random number generation uses the Boost library,
00028 // Copyright 1994-2006 by various authors (details in individual files),
00029 // which is released under the Boost Software License, Version 1.0.
00030 
00031 #ifndef __MOBILITY_PRESENCE_H__
00032 #define __MOBILITY_PRESENCE_H__
00033 
00034 #include "config.h"
00035 #include "Position.h"
00036 #include "simlpy/Time.h"
00037 
00038 namespace Mobility
00039 {
00042 
00044    class Presence
00045    {
00046       public :
00048          Presence( const Time& t, const Position& p, const Time& d ):
00049             m_time(t),
00050             m_position(p),
00051             m_duration(d)
00052          {}
00053 
00055          Presence( const Presence& p ) :
00056             m_time( p.m_time ),
00057             m_position( p.m_position ),
00058             m_duration( p.m_duration )
00059          {}
00060 
00062          void operator=( const Presence& p );
00063 
00065          const Time& time() const { return m_time; }
00067          const Position& position() const { return m_position; }
00069          const Time& duration() const { return m_duration; }
00070 
00072          bool operator==( const Presence& p ) const {
00073             return m_time == p.m_time;
00074          }
00076          bool operator<( const Presence& p ) const {
00077             return m_time < p.m_time;
00078          }
00080          bool operator>( const Presence& p ) const {
00081             return m_time > p.m_time;
00082          }
00084          bool operator<=( const Presence& p ) const {
00085             return m_time <= p.m_time;
00086          }
00088          bool operator>=( const Presence& p ) const {
00089             return m_time >= p.m_time;
00090          }
00091 
00093          bool operator==( const Time& t ) const { return m_time == t; }
00095          bool operator<( const Time& t ) const { return m_time < t; }
00097          bool operator>( const Time& t ) const { return m_time > t; }
00099          bool operator<=( const Time& t ) const { return m_time <= t; }
00101          bool operator>=( const Time& t ) const { return m_time >= t; }
00102 
00108          Presence towards( const Presence& p, const Time& t ) const;
00109 
00110       private :
00111          Time      m_time;
00112          Position  m_position;
00113          Time      m_duration;
00114    };
00115 
00117 }
00118   
00119 #endif // __MOBILITY_PRESENCE_H__

Generated on Mon Mar 24 11:15:45 2008 for Pydtn Simulator by  doxygen 1.5.4