npplat.h
上传用户:hongyu5696
上传日期:2018-01-22
资源大小:391k
文件大小:5k
源码类别:

PlugIns编程

开发平台:

Unix_Linux

  1. /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
  2. /* ***** BEGIN LICENSE BLOCK *****
  3.  * Version: NPL 1.1/GPL 2.0/LGPL 2.1
  4.  *
  5.  * The contents of this file are subject to the Netscape Public License
  6.  * Version 1.1 (the "License"); you may not use this file except in
  7.  * compliance with the License. You may obtain a copy of the License at
  8.  * http://www.mozilla.org/NPL/
  9.  *
  10.  * Software distributed under the License is distributed on an "AS IS" basis,
  11.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  12.  * for the specific language governing rights and limitations under the
  13.  * License.
  14.  *
  15.  * The Original Code is mozilla.org code.
  16.  *
  17.  * The Initial Developer of the Original Code is 
  18.  * Netscape Communications Corporation.
  19.  * Portions created by the Initial Developer are Copyright (C) 1998
  20.  * the Initial Developer. All Rights Reserved.
  21.  *
  22.  * Contributor(s):
  23.  *
  24.  * Alternatively, the contents of this file may be used under the terms of
  25.  * either the GNU General Public License Version 2 or later (the "GPL"), or 
  26.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  27.  * in which case the provisions of the GPL or the LGPL are applicable instead
  28.  * of those above. If you wish to allow use of your version of this file only
  29.  * under the terms of either the GPL or the LGPL, and not to allow others to
  30.  * use your version of this file under the terms of the NPL, indicate your
  31.  * decision by deleting the provisions above and replace them with the notice
  32.  * and other provisions required by the GPL or the LGPL. If you do not delete
  33.  * the provisions above, a recipient may use your version of this file under
  34.  * the terms of any one of the NPL, the GPL or the LGPL.
  35.  *
  36.  * ***** END LICENSE BLOCK ***** */
  37. #ifndef _NPPLAT_H_
  38. #define _NPPLAT_H_
  39. #include "npapi.h"
  40. #include "npupp.h"
  41. /**************************************************/
  42. /*                                                */
  43. /*                   Windows                      */
  44. /*                                                */
  45. /**************************************************/
  46. #ifdef XP_WIN
  47. #include "windows.h"
  48. #endif //XP_WIN
  49. /**************************************************/
  50. /*                                                */
  51. /*                    Unix                        */
  52. /*                                                */
  53. /**************************************************/
  54. #ifdef XP_UNIX
  55. #include <stdio.h>
  56. #endif //XP_UNIX
  57. /**************************************************/
  58. /*                                                */
  59. /*                     Mac                        */
  60. /*                                                */
  61. /**************************************************/
  62. #ifdef XP_MAC
  63. #include <Processes.h>
  64. #include <Gestalt.h>
  65. #include <CodeFragments.h>
  66. #include <Timer.h>
  67. #include <Resources.h>
  68. #include <ToolUtils.h>
  69. #include "jri.h"
  70. // The Mixed Mode procInfos defined in npupp.h assume Think C-
  71. // style calling conventions.  These conventions are used by
  72. // Metrowerks with the exception of pointer return types, which
  73. // in Metrowerks 68K are returned in A0, instead of the standard
  74. // D0. Thus, since NPN_MemAlloc and NPN_UserAgent return pointers,
  75. // Mixed Mode will return the values to a 68K plugin in D0, but 
  76. // a 68K plugin compiled by Metrowerks will expect the result in
  77. // A0.  The following pragma forces Metrowerks to use D0 instead.
  78. //
  79. #ifdef __MWERKS__
  80. #ifndef powerc
  81. #pragma pointers_in_D0
  82. #endif
  83. #endif
  84. #ifdef __MWERKS__
  85. #ifndef powerc
  86. #pragma pointers_in_A0
  87. #endif
  88. #endif
  89. // The following fix for static initializers (which fixes a preious
  90. // incompatibility with some parts of PowerPlant, was submitted by 
  91. // Jan Ulbrich.
  92. #ifdef __MWERKS__
  93. #ifdef __cplusplus
  94. extern "C" {
  95. #endif
  96. #ifndef powerc
  97. extern void __InitCode__(void);
  98. #else
  99. extern void __sinit(void);
  100. #define __InitCode__ __sinit
  101. #endif
  102. extern void __destroy_global_chain(void);
  103. #ifdef __cplusplus
  104. }
  105. #endif // __cplusplus
  106. #endif // __MWERKS__
  107. // Wrapper functions for all calls from Netscape to the plugin.
  108. // These functions let the plugin developer just create the APIs
  109. // as documented and defined in npapi.h, without needing to 
  110. // install those functions in the function table or worry about
  111. // setting up globals for 68K plugins.
  112. NPError Private_Initialize(void);
  113. void    Private_Shutdown(void);
  114. NPError Private_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved);
  115. NPError Private_Destroy(NPP instance, NPSavedData** save);
  116. NPError Private_SetWindow(NPP instance, NPWindow* window);
  117. NPError Private_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
  118. NPError Private_DestroyStream(NPP instance, NPStream* stream, NPError reason);
  119. int32   Private_WriteReady(NPP instance, NPStream* stream);
  120. int32   Private_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
  121. void    Private_StreamAsFile(NPP instance, NPStream* stream, const char* fname);
  122. void    Private_Print(NPP instance, NPPrint* platformPrint);
  123. int16   Private_HandleEvent(NPP instance, void* event);
  124. void    Private_URLNotify(NPP instance, const char* url, NPReason reason, void* notifyData);
  125. jref    Private_GetJavaClass(void);
  126. NPError Private_GetValue(NPP instance, NPPVariable variable, void *result);
  127. NPError Private_SetValue(NPP instance, NPNVariable variable, void *value);
  128. #endif //XP_MAC
  129. #ifndef HIBYTE
  130. #define HIBYTE(i) (i >> 8)
  131. #endif
  132. #ifndef LOBYTE
  133. #define LOBYTE(i) (i & 0xff)
  134. #endif
  135. #endif //_NPPLAT_H_