Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

Incarnation.h

00001 // Copyright NVIDIA Corporation 2002-2004
00002 // TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
00003 // *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
00004 // OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
00005 // AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
00006 // BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
00007 // WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
00008 // BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
00009 // ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
00010 // BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES 
00011 
00012 #pragma once
00013 
00014 #include "nvsgcommon.h"
00015 
00016 namespace nvutil {
00017 
00019 
00022 class Incarnation
00023 {
00024 public:
00026 
00027   Incarnation() : m_incarnation(-1) {}
00028 
00030 
00031   explicit Incarnation(int incarnation) : m_incarnation(incarnation) {}
00032 
00034 
00035   Incarnation& operator=(const Incarnation& rhs);
00036 
00038 
00039   Incarnation& operator=(int incarnation);
00040   
00042 
00044   bool operator==(const Incarnation& rhs);
00045 
00047 
00049   bool operator!=(const Incarnation& rhs);
00050 
00052 
00054   Incarnation& operator++(); // prefix ++
00055 
00057 
00060   const Incarnation operator++(int); // postfix ++
00061 
00062 private:
00063   int m_incarnation;
00064 };
00065 
00066 inline Incarnation& Incarnation::operator=(const Incarnation& rhs) 
00067 { 
00068   if ( this!=&rhs )
00069   {
00070     m_incarnation=rhs.m_incarnation; 
00071   }
00072   return *this; 
00073 }
00074 
00075 inline Incarnation& Incarnation::operator=(int incarnation) 
00076 { 
00077   m_incarnation=incarnation; 
00078   return *this; 
00079 }
00080 
00081 inline bool Incarnation::operator==(const Incarnation& rhs) 
00082 { 
00083   return m_incarnation==rhs.m_incarnation; 
00084 }
00085 
00086 inline bool Incarnation::operator!=(const Incarnation& rhs) 
00087 { 
00088   return m_incarnation!=rhs.m_incarnation; 
00089 }
00090 
00091 inline Incarnation& Incarnation::operator++()
00092 {
00093   ++m_incarnation;
00094   return *this;
00095 }
00096 
00097 inline const Incarnation Incarnation::operator++(int)
00098 {
00099   return Incarnation(m_incarnation++);
00100 }
00101 
00102 } // namespace nvutil
00103 

Generated on Tue Mar 1 13:19:17 2005 for NVSGSDK by NVIDIA