#ifndef INCLUDE_NASTOBJECT_H
#define INCLUDE_NASTOBJECT_H

//-----------------------------------------------------------------------------
// NastObject.h
//-----------------------------------------------------------------------------
//
//  Copyright (C) 1998 Technische Universitaet Muenchen, Germany
//                   written by Bernhard Brueck
//
//  This file is part of Nast++
//
//-----------------------------------------------------------------------------
//  NastObject ist die gemeinsame Basisklasse fuer alle anderen Klassen in
//  Nast++. Sie besitzt einen virtuellen Destruktor. Damit ist auch bei allen
//  abgeleiteten Klassen der Destruktor virtuell.
//  Zum Debuggen gibt es die beiden Hilfsfunktionen debugDump und assertValid.
//  debugDump sollte in der abgeleiteten Klasse ueberschrieben werden
//  und den Zustand des Objekts in den dumpContext ausgeben.
//  assertValid sollte den Zustand des Objects ueberpruefen und bei
//  einem Fehler das Programm abbrechen. 
//  ( z.B. mit NAST_ASSERT(...) )
//-----------------------------------------------------------------------------
//  Aenderungen:
//     

#include "NastConfig.h"

class CNastDumpContext;
class CNastVisualContext;

class CNastObject
{
public:
//-----------------------------------------------------------------------------
//                         Konstruktor + Destruktor
//-----------------------------------------------------------------------------

    CNastObject();			                    //  Defaultconstr.
    virtual ~CNastObject();			            //  Destruktor

    // vorerst sind keine speziellen Memberfunktionen noetig.

//-----------------------------------------------------------------------------
//                                    Debug
//-----------------------------------------------------------------------------
//  debugInfo    gibt Information ueber den Zustand des Objekts aus
//  assertValid  testet das Objekt auf Integritaet
//
    virtual void debugDump( CNastDumpContext &dumpContext ) const;
    virtual void assertValid() const;

protected:
    CNastObject( const CNastObject & o);
    const CNastObject& operator=( const CNastObject &o );
};

//-----------------------------------------------------------------------------
//                               inline
//-----------------------------------------------------------------------------

// vorerst nichts zu tun
inline  CNastObject::CNastObject() 
{}

inline  CNastObject::CNastObject( const CNastObject & o) 
{ (void)o; } //  disable Warning unused

inline const CNastObject& CNastObject::operator=( const CNastObject &o ) 
{ (void)o; return *this;} //  disable Warning unused

#endif // INCLUDE_NASTOBJECT_H

