Plugin.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ALVAR, A Library for Virtual and Augmented Reality.
3  *
4  * Copyright 2007-2012 VTT Technical Research Centre of Finland
5  *
6  * Contact: VTT Augmented Reality Team <alvar.info@vtt.fi>
7  * <http://www.vtt.fi/multimedia/alvar.html>
8  *
9  * ALVAR is free software; you can redistribute it and/or modify it under the
10  * terms of the GNU Lesser General Public License as published by the Free
11  * Software Foundation; either version 2.1 of the License, or (at your option)
12  * any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
17  * for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with ALVAR; if not, see
21  * <http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>.
22  */
23 
24 #include "ar_track_alvar/Plugin.h"
25 
27 
28 namespace alvar {
29 
30 Plugin::Plugin(const std::string filename)
31  : d(new PluginPrivate())
32  , mReferenceCount(new int(1))
33 {
34  d->load(filename);
35 }
36 
37 Plugin::Plugin(const Plugin &plugin)
38  : d(plugin.d)
40 {
41  ++*mReferenceCount;
42 }
43 
45 {
46  d = plugin.d;
48  ++*mReferenceCount;
49  return *this;
50 }
51 
53 {
54  if (!--*mReferenceCount) {
55  d->unload();
56  delete d;
57  delete mReferenceCount;
58  }
59 }
60 
61 void *Plugin::resolve(const char *symbol)
62 {
63  return d->resolve(symbol);
64 }
65 
66 } // namespace alvar
Main ALVAR namespace.
Definition: Alvar.h:174
void load(const std::string filename)
Definition: Plugin_unix.cpp:55
Plugin & operator=(const Plugin &plugin)
Assignment operator.
Definition: Plugin.cpp:44
This file implements a loader for plugins as dynamic libraries.
void * resolve(const char *symbol)
Definition: Plugin_unix.cpp:71
Plugin(const std::string filename)
Constructor.
Definition: Plugin.cpp:30
Plugin for loading dynamic libraries.
Definition: Plugin.h:47
PluginPrivate * d
Definition: Plugin.h:91
Drawable d[32]
int * mReferenceCount
Definition: Plugin.h:92
~Plugin()
Destructor.
Definition: Plugin.cpp:52
void * resolve(const char *symbol)
Resolves the address of a symbol.
Definition: Plugin.cpp:61


ar_track_alvar
Author(s): Scott Niekum
autogenerated on Mon Jun 10 2019 12:47:04