open_toontown_panda3d/panda/src/putil/cycleData.h

70 lines
2.1 KiB
C++

// Filename: cycleData.h
// Created by: drose (21Feb02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) 2001 - 2004, Disney Enterprises, Inc. All rights reserved
//
// All use of this software is subject to the terms of the Panda 3d
// Software license. You should have received a copy of this license
// along with this source code; you will also find a current copy of
// the license at http://etc.cmu.edu/panda3d/docs/license/ .
//
// To contact the maintainers of this program write to
// panda3d-general@lists.sourceforge.net .
//
////////////////////////////////////////////////////////////////////
#ifndef CYCLEDATA_H
#define CYCLEDATA_H
#include "pandabase.h"
#include "referenceCount.h"
class BamWriter;
class BamReader;
class TypedWritable;
class Datagram;
class DatagramIterator;
////////////////////////////////////////////////////////////////////
// Class : CycleData
// Description : A single page of data maintained by a PipelineCycler.
// Normally you should inherit from this class to define
// the data structures that are important to protect
// between stages of a pipeline. See PipelineCycler.
////////////////////////////////////////////////////////////////////
#ifdef DO_PIPELINING
// If we are compiling in pipelining support, we maintain a pointer to
// a CycleData object in each containing class, instead of the object
// itself. Thus, it should be a ReferenceCount object.
class EXPCL_PANDA CycleData : public ReferenceCount
#else // !DO_PIPELINING
// If we are *not* compiling in pipelining support, the CycleData
// object is stored directly within its containing classes, and hence
// should not be a ReferenceCount object.
class EXPCL_PANDA CycleData
#endif // DO_PIPELINING
{
public:
INLINE CycleData();
virtual ~CycleData();
virtual CycleData *make_copy() const=0;
virtual void write_datagram(BamWriter *, Datagram &) const;
virtual int complete_pointers(TypedWritable **p_list, BamReader *manager);
virtual void fillin(DatagramIterator &scan, BamReader *manager);
};
#include "cycleData.I"
#endif