- Main Page
- Namespaces
- Classes
- Files

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# Ipopt::Subject Class Reference

Slight Variation of the Observer Design Pattern (Subject part). More...

`#include <IpObserver.hpp>`

Inheritance diagram for Ipopt::Subject:

[legend]
List of all members.

## Public Member Functions
Constructors/Destructors
| Subject ()
| Default Constructor.
virtual | ~Subject ()
| Default destructor.
Methods to Add and Remove Observers.
Currently, the notify_type flags are not used, and Observers are attached in general and will recieve all notifications (of the type requested and possibly of types not requested). It is up to the observer to ignore the types they are not interested in. The NotifyType in the parameter list is so a more efficient mechanism depending on type could be implemented later if necessary.
void | AttachObserver (Observer::NotifyType notify_type, Observer *observer) const
| Attach the specified observer (i.e., begin recieving notifications).
void | DetachObserver (Observer::NotifyType notify_type, Observer *observer) const
| Detach the specified observer (i.e., no longer recieve notifications).
## Protected Member Functions
void | Notify (Observer::NotifyType notify_type) const
## Private Member Functions
Default Compiler Generated Methods
(Hidden to avoid implicit creation/calling). These methods are not implemented and we do not want the compiler to implement them for us, so we declare them private and do not define them. This ensures that they will not be implicitly created/called.
| Subject (const Subject &)
| Copy Constructor.
void | operator= (const Subject &)
| Overloaded Equals Operator.
## Private Attributes
std::vector< Observer * > | observers_

## Detailed Description

Slight Variation of the Observer Design Pattern (Subject part).

This class implements the Subject class of the Observer Design Pattern. An Observer "Attach"es to a Subject, indicating that it would like to be notified of changes in the Subject. Any derived class that is to be observed has to inherit off the Subject base class. If the subject needs to notify the Observer, it calls the Notify method.

Definition at line 117 of file IpObserver.hpp.

## Constructor & Destructor Documentation

Ipopt::Subject::Subject | ( |  | ) | `[inline]`

Default Constructor.

Definition at line 128 of file IpObserver.hpp.

Ipopt::Subject::~Subject | ( |  | ) | `[inline, virtual]`

Default destructor.

Definition at line 284 of file IpObserver.hpp.

References DBG_START_METH, Ipopt::Observer::NT_BeingDestroyed, and observers_.

Ipopt::Subject::Subject | ( | const Subject & |  | ) | `[private]`

Copy Constructor.

## Member Function Documentation

void Ipopt::Subject::AttachObserver | ( | Observer::NotifyType | notify_type,
|  | Observer * | observer |
| ) |  |  | const`[inline]`

Attach the specified observer (i.e., begin recieving notifications).

Definition at line 297 of file IpObserver.hpp.

References DBG_ASSERT, DBG_START_METH, and observers_.

Referenced by Ipopt::Observer::RequestAttach().

void Ipopt::Subject::DetachObserver | ( | Observer::NotifyType | notify_type,
|  | Observer * | observer |
| ) |  |  | const`[inline]`

Detach the specified observer (i.e., no longer recieve notifications).

Definition at line 320 of file IpObserver.hpp.

References DBG_ASSERT, DBG_START_METH, and observers_.

Referenced by Ipopt::Observer::RequestDetach().

void Ipopt::Subject::Notify | ( | Observer::NotifyType | notify_type | ) | const`[inline, protected]`

Definition at line 342 of file IpObserver.hpp.

References DBG_START_METH, and observers_.

Referenced by Ipopt::TaggedObject::ObjectChanged().

void Ipopt::Subject::operator= | ( | const Subject & |  | ) | `[private]`

Overloaded Equals Operator.

## Member Data Documentation

std::vector<Observer*> Ipopt::Subject::observers_`[mutable, private]`

Definition at line 177 of file IpObserver.hpp.

Referenced by AttachObserver(), DetachObserver(), Notify(), and ~Subject().

The documentation for this class was generated from the following file:

- /home/coin/SVN-release/Ipopt-3.2.1/Ipopt/src/Common/IpObserver.hpp