---
name: "corelinux_Subject"
section: "3"
platform: "linux"
package: "libcorelinux-dev"
version: "0.4.32-5"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/corelinux_Subject"
---

# corelinux\_Subject(3)

Subject knows its Observer objects, communicates with its observers through event notification.

## NAME

corelinux::Subject - **Subject** knows its **Observer** objects, communicates with its observers through event notification.

## SYNOPSIS

`#include <Subject.hpp>`

Inherited by **SubjectObserver**.

### Public Member Functions

**Subject** (void)\
 *Default constructor.*  **Subject** (**SubjectCref**)\
 *Copy constructor.*  virtual **~Subject** (void)\
 *Virtual destructor.*  **SubjectRef** **operator=** (**SubjectCref**)\
 *Assignment operator.*  bool **operator==** (**SubjectCref**) const \
 *Equality operator.*  bool **operator!=** (**SubjectCref**) const \
 *In-Equality operator.*  virtual void **addObserver** (**ObserverPtr**, **Event**\< **Identifier** \> \*)=0  throw ( NullPointerException )\
 *Add an observer for a specific event.*  virtual void **removeObserver** (**ObserverPtr**)=0  throw ( NullPointerException )\
 *Remove an observer from all event notifications.*  virtual void **removeObserver** (**ObserverPtr**, **Event**\< **Identifier** \> \*)=0  throw ( NullPointerException )\
 *Remove an observer from specific event notifications.*  virtual **Iterator**\< **ObserverPtr** \> \* **createIterator** (void)=0\
 *Create a iterator for all observers.*  virtual **Iterator**\< **ObserverPtr** \> \* **createIterator** (**Event**\< **Identifier** \> \*)=0  throw ( NullPointerException )\
 *Create a iterator for observers of this event.*  virtual void **destroyIterator** (**Iterator**\< **ObserverPtr** \> \*)=0  throw ( NullPointerException )\
 *Deletes the iterator instance.*

### Protected Member Functions

virtual void **notifyObservers** (**Event**\< **Identifier** \> \*)  throw ( NullPointerException )\
 *Performs the notification of observers for a specific event.*  virtual void **notifyAllObservers** (**Event**\< **Identifier** \> \*)  throw ( NullPointerException )\
 *Performs the notification of ALL observers for a with a specific event.*

## Detailed Description

**Subject** knows its **Observer** objects, communicates with its observers through event notification.

## Constructor & Destructor Documentation

### corelinux::Subject::Subject (SubjectCref)

Copy constructor. **Parameters:**

*Subject* const referencee

## Member Function Documentation

### virtual void corelinux::Subject::addObserver (ObserverPtr, Event\< Identifier \> \*) throw ( NullPointerException )` [pure virtual]`

Add an observer for a specific event. **Parameters:**

*Event* the type of event interested in

**Exceptions:**

*NullPointer* exception if event is null

### virtual Iterator\<ObserverPtr\>\* corelinux::Subject::createIterator (Event\< Identifier \> \*) throw ( NullPointerException )` [pure virtual]`

Create a iterator for observers of this event. **Parameters:**

*Event* defines the event type predicate

**Returns:**

**Iterator**

**Exceptions:**

*NullPointerException* if event null

### virtual Iterator\<ObserverPtr\>\* corelinux::Subject::createIterator (void)` [pure virtual]`

Create a iterator for all observers. **Returns:**

**Iterator**

Implemented in **SubjectObserver**.

### virtual void corelinux::Subject::destroyIterator (Iterator\< ObserverPtr \> \*) throw ( NullPointerException )` [pure virtual]`

Deletes the iterator instance. **Parameters:**

*Iterator* .RE

**Exceptions:**

*NullPointerException* if iterator null

### void corelinux::Subject::notifyAllObservers (Event\< Identifier \> \*) throw ( NullPointerException )` [protected, virtual]`

Performs the notification of ALL observers for a with a specific event. **Parameters:**

*Event* key

**Exceptions:**

*NullPointerException* if event is null

### void corelinux::Subject::notifyObservers (Event\< Identifier \> \*) throw ( NullPointerException )` [protected, virtual]`

Performs the notification of observers for a specific event. **Parameters:**

*Event* key

**Exceptions:**

*NullPointerException* if event is null

### virtual void corelinux::Subject::removeObserver (ObserverPtr, Event\< Identifier \> \*) throw ( NullPointerException )` [pure virtual]`

Remove an observer from specific event notifications. **Parameters:**

*Observer* to remove

**Exceptions:**

*NullPointer* exception **Observer** or **Event** is null

### virtual void corelinux::Subject::removeObserver (ObserverPtr) throw ( NullPointerException )` [pure virtual]`

Remove an observer from all event notifications. **Parameters:**

*Observer* to remove

**Exceptions:**

*NullPointer* exception **Observer** is null

Implemented in **SubjectObserver**.

## Author

Generated automatically by Doxygen for CoreLinux++ from the source code.
