Panda3D
pipelineCyclerLinks.h
Go to the documentation of this file.
1 /**
2  * PANDA 3D SOFTWARE
3  * Copyright (c) Carnegie Mellon University. All rights reserved.
4  *
5  * All use of this software is subject to the terms of the revised BSD
6  * license. You should have received a copy of this license along
7  * with this source code in a file named "LICENSE."
8  *
9  * @file pipelineCyclerLinks.h
10  * @author drose
11  * @date 2006-02-16
12  */
13 
14 #ifndef PIPELINECYCLERLINKS_H
15 #define PIPELINECYCLERLINKS_H
16 
17 #include "pandabase.h"
18 #include "selectThreadImpl.h" // for THREADED_PIPELINE definition
19 #include "pnotify.h"
20 
21 /**
22  * This just stores the pointers to implement a doubly-linked list of
23  * PipelineCyclers for a particular Pipeline object. We use a hand-rolled
24  * linked list rather than any STL container, because we want PipelineCyclers
25  * to be able to add and remove themselves from this list very quickly.
26  *
27  * These pointers are inherited from this separate class so the Pipeline
28  * object itself can be the root of the linked list.
29  */
30 class EXPCL_PANDA_PIPELINE PipelineCyclerLinks {
31 protected:
32 #ifdef THREADED_PIPELINE
33  INLINE PipelineCyclerLinks();
34  INLINE ~PipelineCyclerLinks();
35 
36  INLINE void make_head();
37  INLINE void clear_head();
38 
39  INLINE void remove_from_list();
40  INLINE void insert_before(PipelineCyclerLinks *node);
41 
42  INLINE void take_list(PipelineCyclerLinks &other);
43 
44  PipelineCyclerLinks *_prev, *_next;
45 #endif
46  friend class Pipeline;
47 };
48 
49 #include "pipelineCyclerLinks.I"
50 
51 #endif
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This class manages a staged pipeline of data, for instance the render pipeline, so that each stage of...
Definition: pipeline.h:38