tbx  0.7.6
autocreate.h
1 /*
2  * tbx RISC OS toolbox library
3  *
4  * Copyright (C) 2010 Alan Buckley All Rights Reserved.
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a
7  * copy of this software and associated documentation files (the "Software"),
8  * to deal in the Software without restriction, including without limitation
9  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10  * and/or sell copies of the Software, and to permit persons to whom the
11  * Software is furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included
14  * in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22  * THE SOFTWARE.
23  */
24 
25 #ifndef AUTOCREATE_H_
26 #define AUTOCREATE_H_
27 
28 #include "application.h"
29 #include "autocreatelistener.h"
30 
31 namespace tbx
32 {
39  template<class T> class AutoCreateClass : public tbx::AutoCreateListener
40  {
41  public:
45  virtual void auto_created(std::string template_name, Object object)
46  {
47  new T(object);
48  }
49  };
50 
60  template<class T> class AutoCreateClassOnce : public tbx::AutoCreateListener
61  {
62  public:
67  virtual void auto_created(std::string template_name, Object object)
68  {
69  new T(object);
70  app()->clear_autocreate_listener(template_name);
71  delete this;
72  }
73  };
74 
75 }
76 
77 #endif /* AUTOCREATE_H_ */
tbx
A library for creating RISC OS toolbox applications.
Definition: abouttobeshownlistener.cc:35
tbx::AutoCreateListener
Base Listener for auto create events.
Definition: autocreatelistener.h:42
tbx::app
Application * app()
Get the current application instance.
Definition: application.h:206
tbx::AutoCreateClass
Templated auto create listener to create a C++ object when a toolbox object gets auto created.
Definition: autocreate.h:40
tbx::Application::clear_autocreate_listener
void clear_autocreate_listener(std::string template_name)
Clear the autocreate listener for the specified template.
Definition: application.cc:183
tbx::Object
Class to manipulate a toolbox object.
Definition: object.h:51
tbx::AutoCreateClassOnce::auto_created
virtual void auto_created(std::string template_name, Object object)
Create a new C++ class for the auto created toolbox object and remove the listener from the applicati...
Definition: autocreate.h:67
tbx::AutoCreateClass::auto_created
virtual void auto_created(std::string template_name, Object object)
Create a new C++ class for the autocreated object.
Definition: autocreate.h:45
tbx::AutoCreateClassOnce
Templated auto create listener to create a C++ object when a toolbox object gets auto created.
Definition: autocreate.h:61