dynalink.h
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:4k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * dynalink.h
  3.  *
  4.  * Dynamic Link Library abstraction class.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: dynalink.h,v $
  30.  * Revision 1.6  1999/03/09 02:59:49  robertj
  31.  * Changed comments to doc++ compatible documentation.
  32.  *
  33.  * Revision 1.5  1999/02/16 08:07:11  robertj
  34.  * MSVC 6.0 compatibility changes.
  35.  *
  36.  * Revision 1.4  1998/09/23 06:20:29  robertj
  37.  * Added open source copyright license.
  38.  *
  39.  * Revision 1.3  1997/06/16 13:15:52  robertj
  40.  * Added function to get a dyna-link libraries name.
  41.  *
  42.  * Revision 1.2  1997/06/08 04:49:20  robertj
  43.  * Added DLL file extension string function.
  44.  *
  45.  * Revision 1.1  1995/03/14 12:44:08  robertj
  46.  * Initial revision
  47.  *
  48.  */
  49. #define _PDYNALINK
  50. #ifdef __GNUC__
  51. #pragma interface
  52. #endif
  53. /**A dynamic link library. This allows the loading at run time of code
  54.    modules for use by an application.
  55.  */
  56. class PDynaLink : public PObject
  57. {
  58.   PCLASSINFO(PDynaLink, PObject);
  59.   public:
  60.   /**@name Construction */
  61.   //@{
  62.     /**Create a new dyna-link, loading the specified module. The first,
  63.        parameterless, form does load a library.
  64.      */
  65.     PDynaLink();
  66.     /**Create a new dyna-link, loading the specified module. The first,
  67.        parameterless, form does load a library.
  68.      */
  69.     PDynaLink(
  70.       const PString & name    /// Name of the dynamically loadable module.
  71.     );
  72.     /**Destroy the dyna-link, freeing the module.
  73.      */
  74.     ~PDynaLink();
  75.   //@}
  76.   /**@name Load/Unload function */
  77.   //@{
  78.     /* Open a new dyna-link, loading the specified module.
  79.        @return
  80.        TRUE if the library was loaded.
  81.      */
  82.     BOOL Open(
  83.       const PString & name    /// Name of the dynamically loadable module.
  84.     );
  85.     /**Close the dyna-link library.
  86.      */
  87.     void Close();
  88.     /**Dyna-link module is loaded and may be accessed.
  89.      */
  90.     BOOL IsLoaded() const;
  91.     /**Get the name of the loaded library. If the library is not loaded
  92.        this may return an empty string.
  93.        If #full# is TRUE then the full pathname of the library
  94.        is returned otherwise only the name part is returned.
  95.        @return
  96.        String for the library name.
  97.      */
  98.     PString GetName(
  99.       BOOL full = FALSE  /// Flag for full or short path name
  100.     ) const;
  101.     /**Get the extension used by this platform for dynamic link libraries.
  102.        @return
  103.        String for file extension.
  104.      */
  105.     static PString GetExtension();
  106.   //@}
  107.   /**@name DLL entry point functions */
  108.   //@{
  109.     /// Primitive pointer to a function for a dynamic link module.
  110.     typedef void (*Function)();
  111.     /**Get a pointer to the function in the dynamically loadable module.
  112.        @return
  113.        TRUE if function was found.
  114.      */
  115.     BOOL GetFunction(
  116.       PINDEX index,    /// Ordinal number of the function to get.
  117.       Function & func  /// Refrence to point to function to get.
  118.     );
  119.     /**Get a pointer to the function in the dynamically loadable module.
  120.        @return
  121.        TRUE if function was found.
  122.      */
  123.     BOOL GetFunction(
  124.       const PString & name,  /// Name of the function to get.
  125.       Function & func        /// Refrence to point to function to get.
  126.     );
  127.   //@}
  128. #ifdef DOC_PLUS_PLUS
  129. };
  130. #endif
  131. // Class declaration continued in platform specific header file ///////////////