Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/doc/src/libraries/core/DynLib.h @ 7372

Last change on this file since 7372 was 7363, checked in by landauf, 14 years ago

assigned a group to each header file in the core library

  • Property svn:eol-style set to native
File size: 3.8 KB
Line 
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4    (Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2006 Torus Knot Software Ltd
8Also see acknowledgements in Readme.html
9
10This program is free software; you can redistribute it and/or modify it under
11the terms of the GNU Lesser General Public License as published by the Free Software
12Foundation; either version 2 of the License, or (at your option) any later
13version.
14
15This program is distributed in the hope that it will be useful, but WITHOUT
16ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
18
19You should have received a copy of the GNU Lesser General Public License along with
20this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21Place - Suite 330, Boston, MA 02111-1307, USA, or go to
22http://www.gnu.org/copyleft/lesser.txt.
23
24You may alternatively use this source under the terms of a specific version of
25the OGRE Unrestricted License provided you have obtained such a license from
26Torus Knot Software Ltd.
27-----------------------------------------------------------------------------
28*/
29
30// 08/11/2009: Small adjustments for Orxonox by Fabian 'x3n' Landau
31
32/**
33    @file
34    @ingroup Management CoreGame
35*/
36
37#ifndef _Core_DynLib_H__
38#define _Core_DynLib_H__
39
40#include "CorePrereqs.h"
41
42#include <string>
43
44#if defined(ORXONOX_PLATFORM_WINDOWS)
45#    define DYNLIB_HANDLE hInstance
46#    define DYNLIB_LOAD( a ) LoadLibraryEx( a, NULL, LOAD_WITH_ALTERED_SEARCH_PATH )
47#    define DYNLIB_GETSYM( a, b ) GetProcAddress( a, b )
48#    define DYNLIB_UNLOAD( a ) !FreeLibrary( a )
49
50struct HINSTANCE__;
51typedef struct HINSTANCE__* hInstance;
52
53#elif defined(ORXONOX_PLATFORM_LINUX)
54#    define DYNLIB_HANDLE void*
55#    define DYNLIB_LOAD( a ) dlopen( a, RTLD_LAZY | RTLD_GLOBAL)
56#    define DYNLIB_GETSYM( a, b ) dlsym( a, b )
57#    define DYNLIB_UNLOAD( a ) dlclose( a )
58
59#elif defined(ORXONOX_PLATFORM_APPLE)
60#    define DYNLIB_HANDLE CFBundleRef
61#    define DYNLIB_LOAD( a ) mac_loadExeBundle( a )
62#    define DYNLIB_GETSYM( a, b ) mac_getBundleSym( a, b )
63#    define DYNLIB_UNLOAD( a ) mac_unloadExeBundle( a )
64#endif
65
66namespace orxonox
67{
68    /** Resource holding data about a dynamic library.
69        @remarks
70            This class holds the data required to get symbols from
71            libraries loaded at run-time (i.e. from DLL's for so's)
72        @author
73            Adrian Cearnãu (cearny@cearny.ro)
74        @since
75            27 January 2002
76        @see
77            Resource
78    */
79    class _CoreExport DynLib
80    {
81    protected:
82        std::string mName;
83        /// Gets the last loading error
84        std::string dynlibError(void);
85    public:
86        /** Default constructor - used by DynLibManager.
87            @warning
88                Do not call directly
89        */
90        DynLib( const std::string& name );
91
92        /** Default destructor.
93        */
94        ~DynLib();
95
96        /** Load the library
97        */
98        void load();
99        /** Unload the library
100        */
101        void unload();
102        /// Get the name of the library
103        const std::string& getName(void) const { return mName; }
104
105        /**
106            Returns the address of the given symbol from the loaded library.
107            @param
108                strName The name of the symbol to search for
109            @returns
110                If the function succeeds, the returned value is a handle to
111                the symbol.
112            @par
113                If the function fails, the returned value is <b>NULL</b>.
114
115        */
116        void* getSymbol( const std::string& strName ) const throw();
117
118    protected:
119
120        /// Handle to the loaded library.
121        DYNLIB_HANDLE m_hInst;
122    };
123
124}
125
126#endif /* _Core_DynLib_H__ */
Note: See TracBrowser for help on using the repository browser.