Lumiera  0.pre.03
»edit your freedom«
procpatt.hpp
Go to the documentation of this file.
1 /*
2  PROCPATT.hpp - template for building some render processing network
3 
4  Copyright (C) Lumiera.org
5  2008, Hermann Vosseler <Ichthyostega@web.de>
6 
7  This program is free software; you can redistribute it and/or
8  modify it under the terms of the GNU General Public License as
9  published by the Free Software Foundation; either version 2 of
10  the License, or (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 
21 */
22 
23 
32 #ifndef ASSET_PROCPATT_H
33 #define ASSET_PROCPATT_H
34 
35 #include "steam/asset/struct.hpp"
36 
37 #include <vector>
38 
39 using std::vector;
40 
41 
42 
43 namespace steam {
44 namespace asset {
45 
46  using lib::Symbol;
47 
48  class Proc;
49  class ProcPatt;
50  struct BuildInstruct;
51  typedef lib::P<const asset::Proc> PProc;
52  typedef lib::P<const asset::ProcPatt> PProcPatt;
53 
54  typedef vector<BuildInstruct> InstructionSequence;
55 
61  class ProcPatt
62  : public Struct
63  {
64  InstructionSequence instructions_;
65 
66  ~ProcPatt();
67 
68  ProcPatt (const Asset::Ident&, const InstructionSequence&);
69 
70  protected:
71  explicit ProcPatt (const Asset::Ident& idi);
72  friend class StructFactoryImpl;
73 
74  public:
75  lib::P<ProcPatt> newCopy (string newID) const;
76 
77  ProcPatt& attach (Symbol where, PProc& node);
78  ProcPatt& operator+= (PProcPatt& toReuse);
79 
80  };
81 
82 
83 
84 
85 }} // namespace steam::asset
86 #endif
"Processing Pattern" is a structural Asset representing information how to build some part of the ren...
Definition: procpatt.hpp:61
Steam-Layer implementation namespace root.
Implementation details, especially concerning how configuration queries are resolved and when to crea...
Token or Atom with distinct identity.
Definition: symbol.hpp:126
~ProcPatt()
emit VTable and member destructors here...
Definition: procpatt.cpp:42
a POD comprised of all the information sufficiently identifying any given Asset.
Definition: asset.hpp:158
ProcPatt(const Asset::Ident &, const InstructionSequence &)
Definition: procpatt.cpp:58
ProcPatt & operator+=(PProcPatt &toReuse)
extend the processing instructions by reference to another ProcPatt, which will be "executed" at this...
Definition: procpatt.cpp:118
Customised refcounting smart pointer template, built upon std::shared_ptr, but forwarding type relati...
Definition: trait.hpp:80
key abstraction: structural asset Created automatically as a sideeffect of building the structure of ...
Definition: struct.hpp:113
Proc
Result instruction from Activity activation.
Definition: activity.hpp:149
lib::P< ProcPatt > newCopy(string newID) const
create a new ProcPatt asset as a literal copy of this one.
Definition: procpatt.cpp:74
The asset subsystem of the Steam-Layer.
Definition: wrapperptr.hpp:44
Asset representation of structural elements within the model.
ProcPatt & attach(Symbol where, PProc &node)
extend the processing instructions to add some Effect
Definition: procpatt.cpp:91