tbx  0.7.5
matchlifetime.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 TBX_MATCHLIFETIME_H_
26 #define TBX_MATCHLIFETIME_H_
27 
28 #include "autocreatelistener.h"
29 #include "objectdelete.h"
30 #include "application.h"
31 
32 namespace tbx
33 {
42  template<class T> class MatchLifetime : public tbx::AutoCreateListener
43  {
44  public:
56  MatchLifetime(const char *template_name)
57  {
58  app()->set_autocreate_listener(template_name, this);
59  }
60 
64  virtual void auto_created(std::string template_name, Object object)
65  {
66  T *c = new T(object);
67  object.add_object_deleted_listener(new tbx::ObjectDeleteClass<T>(c));
68  }
69  };
70 }
71 
72 #endif /* TBX_MATCHLIFETIME_H_ */
A library for creating RISC OS toolbox applications.
Definition: abouttobeshownlistener.cc:34
Templated class to match the lifetime of a toolbox object to a c++ class.
Definition: matchlifetime.h:42
virtual void auto_created(std::string template_name, Object object)
Create a new C++ class for the auto created object.
Definition: matchlifetime.h:64
void set_autocreate_listener(std::string template_name, AutoCreateListener *listener)
Set the AutoCreateListener to be called when an object with the specified template is created...
Definition: application.cc:173
Templated object deleted listener to delete a C++ object when a toolbox object gets deleted...
Definition: objectdelete.h:43
Base Listener for auto create events.
Definition: autocreatelistener.h:41
Application * app()
Get the current application instance.
Definition: application.h:206
Class to manipulate a toolbox object.
Definition: object.h:50
MatchLifetime(const char *template_name)
Constructor with template name automatically sets autocreate listener on the application.
Definition: matchlifetime.h:56
MatchLifetime()
Constructor with no parameters.
Definition: matchlifetime.h:49