// // $Id: GeometryObserver.cpp,v 1.2 2005/01/10 16:54:16 snyder Exp $ // // File: GeometryObserver.cpp // Purpose: // Created: 4-APR-2000 John Hobbs // // $Revision: 1.2 $ // // // Include files #include "geometry_system/management/GeometryObserver.hpp" #include "geometry_system/management/absGeometer.hpp" // Global definitions using namespace dgs; // Constructors/Destructors GeometryObserver::GeometryObserver(absObservedGeometer* myGeometer): d_updated(false),d_myGeometer(myGeometer) // // Purpose: // // Arguements: // // Returns: // { if( d_myGeometer ) d_myGeometer->add_observer(this); } GeometryObserver::GeometryObserver(const GeometryObserver& rhs): d_updated(rhs.d_updated), d_myGeometer(rhs.d_myGeometer) // // Purpose: // // Arguements: // // Returns: // { if( d_myGeometer ) d_myGeometer->add_observer(this); } GeometryObserver& GeometryObserver::operator =(const GeometryObserver& rhs) // // Purpose: // // Arguements: // // Returns: // { d_myGeometer = rhs.d_myGeometer; d_updated = rhs.d_updated; if( d_myGeometer ) d_myGeometer->add_observer(this); return *this; } GeometryObserver::~GeometryObserver() { if( d_myGeometer ) d_myGeometer->remove_observer(this); } // Accessors bool GeometryObserver::updated() { bool now = d_updated; d_updated = false; return now; } bool GeometryObserver::update() { bool now = d_updated; d_updated=true; // This must precede user_update so that users can user_update(); // clear d_updated in user_update if they wish via return now; // a call to updated() } // This is a (virtual)NOP. void GeometryObserver::user_update() {}