epoc32/include/mw/npupp.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 1 666f914201fb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     1 /* -*- Mode: C; tab-width: 4; 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  *    Portions Copyright (c) 2004-2006, Nokia Corporation
    24  *
    25  *
    26  * Alternatively, the contents of this file may be used under the terms of
    27  * either the GNU General Public License Version 2 or later (the "GPL"), or
    28  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
    29  * in which case the provisions of the GPL or the LGPL are applicable instead
    30  * of those above. If you wish to allow use of your version of this file only
    31  * under the terms of either the GPL or the LGPL, and not to allow others to
    32  * use your version of this file under the terms of the NPL, indicate your
    33  * decision by deleting the provisions above and replace them with the notice
    34  * and other provisions required by the GPL or the LGPL. If you do not delete
    35  * the provisions above, a recipient may use your version of this file under
    36  * the terms of any one of the NPL, the GPL or the LGPL.
    37  *
    38  * ***** END LICENSE BLOCK ***** */
    39 
    40 /* NOTES:
    41  * Nokia modified this file, by changing certain variables for the purpose of
    42  * porting the file to the Symbian platform on May 1st, 2004.
    43  */
    44 
    45 
    46 /*
    47  *  npupp.h $Revision: 3.15 $
    48  *  function call mecahnics needed by platform specific glue code.
    49  */
    50 
    51 
    52 #ifndef _NPUPP_H_
    53 #define _NPUPP_H_
    54 
    55 #if defined(__OS2__)
    56 #pragma pack(1)
    57 #endif
    58 
    59 #ifndef GENERATINGCFM
    60 #define GENERATINGCFM 0
    61 #endif
    62 
    63 #ifndef _NPAPI_H_
    64 #include "npapi.h"
    65 #endif
    66 
    67 #include "jri.h"
    68 
    69 /******************************************************************************************
    70    plug-in function table macros
    71           for each function in and out of the plugin API we define
    72                     typedef NPP_FooUPP
    73           #define NewNPP_FooProc
    74           #define CallNPP_FooProc
    75       for mac, define the UPP magic for PPC/68K calling
    76  *******************************************************************************************/
    77 
    78 
    79 /* NPP_Initialize */
    80 
    81 #define _NPUPP_USE_UPP_ (TARGET_RT_MAC_CFM && !TARGET_API_MAC_CARBON)
    82 
    83 #if _NPUPP_USE_UPP_
    84 typedef UniversalProcPtr NPP_InitializeUPP;
    85 
    86 enum {
    87   uppNPP_InitializeProcInfo = kThinkCStackBased
    88     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(0))    
    89     | RESULT_SIZE(SIZE_CODE(0))
    90 };
    91 
    92 #define NewNPP_InitializeProc(FUNC)   \
    93     (NPP_InitializeUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_InitializeProcInfo, GetCurrentArchitecture())
    94 #define CallNPP_InitializeProc(FUNC)    \
    95     (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_InitializeProcInfo)
    96     
    97 #else
    98 
    99 typedef void (* NP_LOADDS NPP_InitializeUPP)(void);
   100 #define NewNPP_InitializeProc(FUNC)   \
   101     ((NPP_InitializeUPP) (FUNC))
   102 #define CallNPP_InitializeProc(FUNC)    \
   103     (*(FUNC))()
   104 
   105 #endif
   106 
   107 
   108 /* NPP_Shutdown */
   109 
   110 #if _NPUPP_USE_UPP_
   111 typedef UniversalProcPtr NPP_ShutdownUPP;
   112 
   113 enum {
   114   uppNPP_ShutdownProcInfo = kThinkCStackBased
   115     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(0))    
   116     | RESULT_SIZE(SIZE_CODE(0))
   117 };
   118 
   119 #define NewNPP_ShutdownProc(FUNC)   \
   120     (NPP_ShutdownUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_ShutdownProcInfo, GetCurrentArchitecture())
   121 #define CallNPP_ShutdownProc(FUNC)    \
   122     (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_ShutdownProcInfo)
   123     
   124 #else
   125 
   126 typedef void (* NP_LOADDS NPP_ShutdownUPP)(void);
   127 #define NewNPP_ShutdownProc(FUNC)   \
   128     ((NPP_ShutdownUPP) (FUNC))
   129 #define CallNPP_ShutdownProc(FUNC)    \
   130     (*(FUNC))()
   131 
   132 #endif
   133 
   134 
   135 /* NPP_New */
   136 
   137 #if _NPUPP_USE_UPP_
   138 typedef UniversalProcPtr NPP_NewUPP;
   139 
   140 enum {
   141   uppNPP_NewProcInfo = kThinkCStackBased
   142     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPMIMEType)))
   143     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPP)))
   144     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(uint16)))
   145     | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(int16)))
   146     | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(char **)))
   147     | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(char **)))
   148     | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(NPSavedData *)))
   149     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   150 };
   151 
   152 #define NewNPP_NewProc(FUNC)    \
   153     (NPP_NewUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_NewProcInfo, GetCurrentArchitecture())
   154 #define CallNPP_NewProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
   155     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_NewProcInfo, \
   156                    (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
   157 #else
   158  #ifndef __SYMBIAN32__
   159   typedef NPError (* NP_LOADDS NPP_NewUPP)(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved);
   160   #define NewNPP_NewProc(FUNC)    \
   161       ((NPP_NewUPP) (FUNC))
   162   #define CallNPP_NewProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7)   \
   163       (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
   164  #else/* __SYMBIAN32__ */
   165   typedef NPError (* NP_LOADDS NPP_NewUPP)(NPMIMEType pluginType, NPP instance,
   166               uint16 mode, CDesCArray* argn,
   167               CDesCArray* argv, NPSavedData* saved);
   168   #define NewNPP_NewProc(FUNC)    \
   169       ((NPP_NewUPP) (FUNC))
   170   #define CallNPP_NewProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6)   \
   171       (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))
   172  #endif /* __SYMBIAN32__ */
   173 
   174 
   175 #endif
   176 
   177 
   178 /* NPP_Destroy */
   179 
   180 #if _NPUPP_USE_UPP_
   181 
   182 typedef UniversalProcPtr NPP_DestroyUPP;
   183 enum {
   184   uppNPP_DestroyProcInfo = kThinkCStackBased
   185     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   186     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPSavedData **)))
   187     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   188 };
   189 #define NewNPP_DestroyProc(FUNC)    \
   190     (NPP_DestroyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_DestroyProcInfo, GetCurrentArchitecture())
   191 #define CallNPP_DestroyProc(FUNC, ARG1, ARG2)   \
   192     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_DestroyProcInfo, (ARG1), (ARG2))
   193 #else
   194 
   195 typedef NPError (* NP_LOADDS NPP_DestroyUPP)(NPP instance, NPSavedData** save);
   196 #define NewNPP_DestroyProc(FUNC)    \
   197     ((NPP_DestroyUPP) (FUNC))
   198 #define CallNPP_DestroyProc(FUNC, ARG1, ARG2)   \
   199     (*(FUNC))((ARG1), (ARG2))
   200 
   201 #endif
   202 
   203 
   204 /* NPP_SetWindow */
   205 
   206 #if _NPUPP_USE_UPP_
   207 
   208 typedef UniversalProcPtr NPP_SetWindowUPP;
   209 enum {
   210   uppNPP_SetWindowProcInfo = kThinkCStackBased
   211     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   212     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPWindow *)))
   213     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   214 };
   215 #define NewNPP_SetWindowProc(FUNC)    \
   216     (NPP_SetWindowUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_SetWindowProcInfo, GetCurrentArchitecture())
   217 #define CallNPP_SetWindowProc(FUNC, ARG1, ARG2)   \
   218     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_SetWindowProcInfo, (ARG1), (ARG2))
   219 
   220 #else
   221 
   222 typedef NPError (* NP_LOADDS NPP_SetWindowUPP)(NPP instance, NPWindow* window);
   223 #define NewNPP_SetWindowProc(FUNC)    \
   224     ((NPP_SetWindowUPP) (FUNC))
   225 #define CallNPP_SetWindowProc(FUNC, ARG1, ARG2)   \
   226     (*(FUNC))((ARG1), (ARG2))
   227 
   228 #endif
   229 
   230 
   231 /* NPP_NewStream */
   232 
   233 #if _NPUPP_USE_UPP_
   234 
   235 typedef UniversalProcPtr NPP_NewStreamUPP;
   236 enum {
   237   uppNPP_NewStreamProcInfo = kThinkCStackBased
   238     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   239     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPMIMEType)))
   240     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPStream *)))
   241     | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(NPBool)))
   242     | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(uint16 *)))
   243     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   244 };
   245 #define NewNPP_NewStreamProc(FUNC)    \
   246     (NPP_NewStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_NewStreamProcInfo, GetCurrentArchitecture())
   247 #define CallNPP_NewStreamProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5)   \
   248     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_NewStreamProcInfo, (ARG1), (ARG2), (ARG3), (ARG4), (ARG5))
   249 #else
   250 
   251 typedef NPError (* NP_LOADDS NPP_NewStreamUPP)(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype);
   252 #define NewNPP_NewStreamProc(FUNC)    \
   253     ((NPP_NewStreamUPP) (FUNC))
   254 #define CallNPP_NewStreamProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \
   255     (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5))
   256 #endif
   257 
   258 
   259 /* NPP_DestroyStream */
   260 
   261 #if _NPUPP_USE_UPP_
   262 
   263 typedef UniversalProcPtr NPP_DestroyStreamUPP;
   264 enum {
   265   uppNPP_DestroyStreamProcInfo = kThinkCStackBased
   266     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   267     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
   268     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPReason)))
   269     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   270 };
   271 #define NewNPP_DestroyStreamProc(FUNC)    \
   272     (NPP_DestroyStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_DestroyStreamProcInfo, GetCurrentArchitecture())
   273 #define CallNPP_DestroyStreamProc(FUNC,  NPParg, NPStreamPtr, NPReasonArg)    \
   274     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_DestroyStreamProcInfo, (NPParg), (NPStreamPtr), (NPReasonArg))
   275 
   276 #else
   277 
   278 typedef NPError (* NP_LOADDS NPP_DestroyStreamUPP)(NPP instance, NPStream* stream, NPReason reason);
   279 #define NewNPP_DestroyStreamProc(FUNC)    \
   280     ((NPP_DestroyStreamUPP) (FUNC))
   281 #define CallNPP_DestroyStreamProc(FUNC,  NPParg, NPStreamPtr, NPReasonArg)    \
   282     (*(FUNC))((NPParg), (NPStreamPtr), (NPReasonArg))
   283 
   284 #endif
   285 
   286 
   287 /* NPP_WriteReady */
   288 
   289 #if _NPUPP_USE_UPP_
   290 
   291 typedef UniversalProcPtr NPP_WriteReadyUPP;
   292 enum {
   293   uppNPP_WriteReadyProcInfo = kThinkCStackBased
   294     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   295     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
   296     | RESULT_SIZE(SIZE_CODE(sizeof(int32)))
   297 };
   298 #define NewNPP_WriteReadyProc(FUNC)   \
   299     (NPP_WriteReadyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_WriteReadyProcInfo, GetCurrentArchitecture())
   300 #define CallNPP_WriteReadyProc(FUNC,  NPParg, NPStreamPtr)    \
   301     (int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_WriteReadyProcInfo, (NPParg), (NPStreamPtr))
   302 
   303 #else
   304 
   305 typedef int32 (* NP_LOADDS NPP_WriteReadyUPP)(NPP instance, NPStream* stream);
   306 #define NewNPP_WriteReadyProc(FUNC)   \
   307     ((NPP_WriteReadyUPP) (FUNC))
   308 #define CallNPP_WriteReadyProc(FUNC,  NPParg, NPStreamPtr)    \
   309     (*(FUNC))((NPParg), (NPStreamPtr))
   310 
   311 #endif
   312 
   313 
   314 /* NPP_Write */
   315 
   316 #if _NPUPP_USE_UPP_
   317 
   318 typedef UniversalProcPtr NPP_WriteUPP;
   319 enum {
   320   uppNPP_WriteProcInfo = kThinkCStackBased
   321     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   322     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
   323     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(int32)))
   324     | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(int32)))
   325     | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(void*)))
   326     | RESULT_SIZE(SIZE_CODE(sizeof(int32)))
   327 };
   328 #define NewNPP_WriteProc(FUNC)    \
   329     (NPP_WriteUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_WriteProcInfo, GetCurrentArchitecture())
   330 #define CallNPP_WriteProc(FUNC,  NPParg, NPStreamPtr, offsetArg, lenArg, bufferPtr)   \
   331     (int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_WriteProcInfo, (NPParg), (NPStreamPtr), (offsetArg), (lenArg), (bufferPtr))
   332 
   333 #else
   334 
   335 typedef int32 (* NP_LOADDS NPP_WriteUPP)(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer);
   336 #define NewNPP_WriteProc(FUNC)    \
   337     ((NPP_WriteUPP) (FUNC))
   338 #define CallNPP_WriteProc(FUNC,  NPParg, NPStreamPtr, offsetArg, lenArg, bufferPtr)   \
   339     (*(FUNC))((NPParg), (NPStreamPtr), (offsetArg), (lenArg), (bufferPtr))
   340 
   341 #endif
   342 
   343 
   344 /* NPP_StreamAsFile */
   345 
   346 #if _NPUPP_USE_UPP_
   347 
   348 typedef UniversalProcPtr NPP_StreamAsFileUPP;
   349 enum {
   350   uppNPP_StreamAsFileProcInfo = kThinkCStackBased
   351     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   352     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
   353     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char *)))
   354     | RESULT_SIZE(SIZE_CODE(0))
   355 };
   356 #define NewNPP_StreamAsFileProc(FUNC)   \
   357     (NPP_StreamAsFileUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_StreamAsFileProcInfo, GetCurrentArchitecture())
   358 #define CallNPP_StreamAsFileProc(FUNC, ARG1, ARG2, ARG3)    \
   359     (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_StreamAsFileProcInfo, (ARG1), (ARG2), (ARG3))
   360 
   361 #else
   362  #ifndef __SYMBIAN32__
   363   typedef void (* NP_LOADDS NPP_StreamAsFileUPP)(NPP instance, NPStream* stream, const char* fname);
   364   #define NewNPP_StreamAsFileProc(FUNC)   \
   365       ((NPP_StreamAsFileUPP) (FUNC))
   366   #define CallNPP_StreamAsFileProc(FUNC,  ARG1, ARG2, ARG3)   \
   367       (*(FUNC))((ARG1), (ARG2), (ARG3))
   368  #else/* __SYMBIAN32__ */
   369 void    NP_LOADDS NPP_StreamAsFile(NPP instance, NPStream* stream,
   370                                    const TDesC& fname);
   371   typedef void (* NP_LOADDS NPP_StreamAsFileUPP)(NPP instance, NPStream* stream,
   372                                    const TDesC& fname);
   373   #define NewNPP_StreamAsFileProc(FUNC)   \
   374       ((NPP_StreamAsFileUPP) (FUNC))
   375   #define CallNPP_StreamAsFileProc(FUNC,  ARG1, ARG2, ARG3)   \
   376       (*(FUNC))((ARG1), (ARG2), (ARG3))
   377  #endif /* __SYMBIAN32__ */
   378 
   379 #endif
   380 
   381 
   382 /* NPP_Print */
   383 
   384 #if _NPUPP_USE_UPP_
   385 
   386 typedef UniversalProcPtr NPP_PrintUPP;
   387 enum {
   388   uppNPP_PrintProcInfo = kThinkCStackBased
   389     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   390     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPPrint *)))
   391     | RESULT_SIZE(SIZE_CODE(0))
   392 };
   393 #define NewNPP_PrintProc(FUNC)    \
   394     (NPP_PrintUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_PrintProcInfo, GetCurrentArchitecture())
   395 #define CallNPP_PrintProc(FUNC,  NPParg, voidPtr)   \
   396     (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_PrintProcInfo, (NPParg), (voidPtr))
   397 
   398 #else
   399 
   400 typedef void (* NP_LOADDS NPP_PrintUPP)(NPP instance, NPPrint* platformPrint);
   401 #define NewNPP_PrintProc(FUNC)    \
   402     ((NPP_PrintUPP) (FUNC))
   403 #define CallNPP_PrintProc(FUNC,  NPParg, NPPrintArg)    \
   404     (*(FUNC))((NPParg), (NPPrintArg))
   405 
   406 #endif
   407 
   408 
   409 /* NPP_HandleEvent */
   410 
   411 #if _NPUPP_USE_UPP_
   412 
   413 typedef UniversalProcPtr NPP_HandleEventUPP;
   414 enum {
   415   uppNPP_HandleEventProcInfo = kThinkCStackBased
   416     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   417     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void *)))
   418     | RESULT_SIZE(SIZE_CODE(sizeof(int16)))
   419 };
   420 #define NewNPP_HandleEventProc(FUNC)    \
   421     (NPP_HandleEventUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_HandleEventProcInfo, GetCurrentArchitecture())
   422 #define CallNPP_HandleEventProc(FUNC,  NPParg, voidPtr)   \
   423     (int16)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_HandleEventProcInfo, (NPParg), (voidPtr))
   424 
   425 #else
   426 
   427 typedef int16 (* NP_LOADDS NPP_HandleEventUPP)(NPP instance, void* event);
   428 #define NewNPP_HandleEventProc(FUNC)    \
   429     ((NPP_HandleEventUPP) (FUNC))
   430 #define CallNPP_HandleEventProc(FUNC,  NPParg, voidPtr)   \
   431     (*(FUNC))((NPParg), (voidPtr))
   432 
   433 #endif
   434 
   435 
   436 /* NPP_URLNotify */
   437 
   438 #if _NPUPP_USE_UPP_
   439 
   440 typedef UniversalProcPtr NPP_URLNotifyUPP;
   441 enum {
   442   uppNPP_URLNotifyProcInfo = kThinkCStackBased
   443     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   444     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
   445     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPReason)))
   446     | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*)))
   447     | RESULT_SIZE(SIZE_CODE(SIZE_CODE(0)))
   448 };
   449 #define NewNPP_URLNotifyProc(FUNC)    \
   450     (NPP_URLNotifyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_URLNotifyProcInfo, GetCurrentArchitecture())
   451 #define CallNPP_URLNotifyProc(FUNC,  ARG1, ARG2, ARG3, ARG4)    \
   452     (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_URLNotifyProcInfo, (ARG1), (ARG2), (ARG3), (ARG4))
   453 
   454 #else
   455  #ifndef __SYMBIAN32__
   456   typedef void (* NP_LOADDS NPP_URLNotifyUPP)(NPP instance, const char* url, NPReason reason, void* notifyData);
   457   #define NewNPP_URLNotifyProc(FUNC)    \
   458       ((NPP_URLNotifyUPP) (FUNC))
   459   #define CallNPP_URLNotifyProc(FUNC,  ARG1, ARG2, ARG3, ARG4)    \
   460       (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
   461  #else/* __SYMBIAN32__ */
   462   typedef void (* NP_LOADDS NPP_URLNotifyUPP)(NPP instance, const TDesC& url,
   463                                 NPReason reason, void* notifyData);
   464   #define NewNPP_URLNotifyProc(FUNC)    \
   465       ((NPP_URLNotifyUPP) (FUNC))
   466   #define CallNPP_URLNotifyProc(FUNC,  ARG1, ARG2, ARG3, ARG4)    \
   467       (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
   468  #endif /* __SYMBIAN32__ */
   469 
   470 #endif
   471 
   472 
   473 /* NPP_GetValue */
   474 
   475 #if _NPUPP_USE_UPP_
   476 
   477 typedef UniversalProcPtr NPP_GetValueUPP;
   478 enum {
   479   uppNPP_GetValueProcInfo = kThinkCStackBased
   480     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   481     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPPVariable)))
   482     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *)))
   483     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   484 };
   485 #define NewNPP_GetValueProc(FUNC)   \
   486     (NPP_GetValueUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_GetValueProcInfo, GetCurrentArchitecture())
   487 #define CallNPP_GetValueProc(FUNC, ARG1, ARG2, ARG3) \
   488     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_GetValueProcInfo, (ARG1), (ARG2), (ARG3))
   489 #else
   490 
   491 typedef NPError (* NP_LOADDS NPP_GetValueUPP)(NPP instance, NPPVariable variable, void *ret_alue);
   492 #define NewNPP_GetValueProc(FUNC)   \
   493     ((NPP_GetValueUPP) (FUNC))
   494 #define CallNPP_GetValueProc(FUNC, ARG1, ARG2, ARG3)    \
   495     (*(FUNC))((ARG1), (ARG2), (ARG3))
   496 #endif
   497 
   498 
   499 /* NPP_SetValue */
   500 
   501 #if _NPUPP_USE_UPP_
   502 
   503 typedef UniversalProcPtr NPP_SetValueUPP;
   504 enum {
   505   uppNPP_SetValueProcInfo = kThinkCStackBased
   506     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   507     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPNVariable)))
   508     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *)))
   509     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   510 };
   511 #define NewNPP_SetValueProc(FUNC)   \
   512     (NPP_SetValueUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_SetValueProcInfo, GetCurrentArchitecture())
   513 #define CallNPP_SetValueProc(FUNC, ARG1, ARG2, ARG3) \
   514     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_SetValueProcInfo, (ARG1), (ARG2), (ARG3))
   515 #else
   516 
   517 typedef NPError (* NP_LOADDS NPP_SetValueUPP)(NPP instance, NPNVariable variable, void *ret_alue);
   518 #define NewNPP_SetValueProc(FUNC)   \
   519     ((NPP_SetValueUPP) (FUNC))
   520 #define CallNPP_SetValueProc(FUNC, ARG1, ARG2, ARG3)    \
   521     (*(FUNC))((ARG1), (ARG2), (ARG3))
   522 #endif
   523 
   524 
   525 
   526 
   527 /*
   528  *  Netscape entry points
   529  */
   530 
   531 
   532 /* NPN_GetValue */
   533 
   534 #if _NPUPP_USE_UPP_
   535 
   536 typedef UniversalProcPtr NPN_GetValueUPP;
   537 enum {
   538   uppNPN_GetValueProcInfo = kThinkCStackBased
   539     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   540     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPNVariable)))
   541     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *)))
   542     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   543 };
   544 #define NewNPN_GetValueProc(FUNC)   \
   545     (NPN_GetValueUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetValueProcInfo, GetCurrentArchitecture())
   546 #define CallNPN_GetValueProc(FUNC, ARG1, ARG2, ARG3) \
   547     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetValueProcInfo, (ARG1), (ARG2), (ARG3))
   548 #else
   549 
   550 typedef NPError (* NP_LOADDS NPN_GetValueUPP)(NPP instance, NPNVariable variable, void *ret_alue);
   551 #define NewNPN_GetValueProc(FUNC)   \
   552     ((NPN_GetValueUPP) (FUNC))
   553 #define CallNPN_GetValueProc(FUNC, ARG1, ARG2, ARG3)    \
   554     (*(FUNC))((ARG1), (ARG2), (ARG3))
   555 #endif
   556 
   557 
   558 /* NPN_SetValue */
   559 
   560 #if _NPUPP_USE_UPP_
   561 
   562 typedef UniversalProcPtr NPN_SetValueUPP;
   563 enum {
   564   uppNPN_SetValueProcInfo = kThinkCStackBased
   565     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   566     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPPVariable)))
   567     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void *)))
   568     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   569 };
   570 #define NewNPN_SetValueProc(FUNC)   \
   571     (NPN_SetValueUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_SetValueProcInfo, GetCurrentArchitecture())
   572 #define CallNPN_SetValueProc(FUNC, ARG1, ARG2, ARG3) \
   573     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_SetValueProcInfo, (ARG1), (ARG2), (ARG3))
   574 #else
   575 
   576 typedef NPError (* NP_LOADDS NPN_SetValueUPP)(NPP instance, NPPVariable variable, void *ret_alue);
   577 #define NewNPN_SetValueProc(FUNC)   \
   578     ((NPN_SetValueUPP) (FUNC))
   579 #define CallNPN_SetValueProc(FUNC, ARG1, ARG2, ARG3)    \
   580     (*(FUNC))((ARG1), (ARG2), (ARG3))
   581 #endif
   582 
   583 
   584 /* NPN_GetUrlNotify */
   585 
   586 #if _NPUPP_USE_UPP_
   587 
   588 typedef UniversalProcPtr NPN_GetURLNotifyUPP;
   589 enum {
   590   uppNPN_GetURLNotifyProcInfo = kThinkCStackBased
   591     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   592     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
   593     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*)))
   594     | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*)))
   595     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   596 };
   597 #define NewNPN_GetURLNotifyProc(FUNC)   \
   598     (NPN_GetURLNotifyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetURLNotifyProcInfo, GetCurrentArchitecture())
   599 #define CallNPN_GetURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
   600     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetURLNotifyProcInfo, (ARG1), (ARG2), (ARG3), (ARG4))
   601 #else
   602  #ifndef __SYMBIAN32__
   603   typedef NPError (* NP_LOADDS NPN_GetURLNotifyUPP)(NPP instance, const char* url, const char* window, void* notifyData);
   604   #define NewNPN_GetURLNotifyProc(FUNC)   \
   605       ((NPN_GetURLNotifyUPP) (FUNC))
   606   #define CallNPN_GetURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4)    \
   607       (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
   608  #else/* __SYMBIAN32__ */
   609   typedef NPError (* NP_LOADDS NPN_GetURLNotifyUPP)(NPP instance, const TDesC& url,
   610                                    const TDesC* target, void* notifyData);
   611   #define NewNPN_GetURLNotifyProc(FUNC)   \
   612       ((NPN_GetURLNotifyUPP) (FUNC))
   613   #define CallNPN_GetURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4)    \
   614       (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
   615  #endif /* __SYMBIAN32__ */
   616 
   617 #endif
   618 
   619 
   620 /* NPN_PostUrlNotify */
   621 
   622 #if _NPUPP_USE_UPP_
   623 
   624 typedef UniversalProcPtr NPN_PostURLNotifyUPP;
   625 enum {
   626   uppNPN_PostURLNotifyProcInfo = kThinkCStackBased
   627     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   628     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
   629     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*)))
   630     | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(uint32)))
   631     | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(const char*)))
   632     | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(NPBool)))
   633     | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(void*)))
   634     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   635 };
   636 #define NewNPN_PostURLNotifyProc(FUNC)    \
   637     (NPN_PostURLNotifyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_PostURLNotifyProcInfo, GetCurrentArchitecture())
   638 #define CallNPN_PostURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
   639     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_PostURLNotifyProcInfo, (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
   640 #else
   641  #ifndef __SYMBIAN32__
   642   typedef NPError (* NP_LOADDS NPN_PostURLNotifyUPP)(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file, void* notifyData);
   643   #define NewNPN_PostURLNotifyProc(FUNC)    \
   644       ((NPN_PostURLNotifyUPP) (FUNC))
   645   #define CallNPN_PostURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \
   646       (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7))
   647  #else/* __SYMBIAN32__ */
   648   typedef NPError (* NP_LOADDS NPN_PostURLNotifyUPP)(NPP instance, const TDesC& url,
   649                                     const TDesC* target,
   650                                     const TDesC& buf, NPBool file,
   651                                     void* notifyData);
   652   #define NewNPN_PostURLNotifyProc(FUNC)    \
   653       ((NPN_PostURLNotifyUPP) (FUNC))
   654   #define CallNPN_PostURLNotifyProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
   655       (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))
   656  #endif /* __SYMBIAN32__ */
   657 
   658 
   659 #endif
   660 
   661 
   662 /* NPN_GetUrl */
   663 
   664 #if _NPUPP_USE_UPP_
   665 
   666 typedef UniversalProcPtr NPN_GetURLUPP;
   667 enum {
   668   uppNPN_GetURLProcInfo = kThinkCStackBased
   669     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   670     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
   671     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*)))
   672     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   673 };
   674 #define NewNPN_GetURLProc(FUNC)   \
   675     (NPN_GetURLUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetURLProcInfo, GetCurrentArchitecture())
   676 #define CallNPN_GetURLProc(FUNC, ARG1, ARG2, ARG3) \
   677     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetURLProcInfo, (ARG1), (ARG2), (ARG3))
   678 #else
   679  #ifndef __SYMBIAN32__
   680   typedef NPError (* NP_LOADDS NPN_GetURLUPP)(NPP instance, const char* url, const char* window);
   681   #define NewNPN_GetURLProc(FUNC)   \
   682       ((NPN_GetURLUPP) (FUNC))
   683   #define CallNPN_GetURLProc(FUNC, ARG1, ARG2, ARG3)    \
   684       (*(FUNC))((ARG1), (ARG2), (ARG3))
   685  #else/* __SYMBIAN32__ */
   686   typedef NPError (* NP_LOADDS NPN_GetURLUPP)(NPP instance, const TDesC& url,
   687                              const TDesC* target);
   688   #define NewNPN_GetURLProc(FUNC)   \
   689       ((NPN_GetURLUPP) (FUNC))
   690   #define CallNPN_GetURLProc(FUNC, ARG1, ARG2, ARG3)    \
   691       (*(FUNC))((ARG1), (ARG2), (ARG3))
   692  #endif /* __SYMBIAN32__ */
   693 
   694 #endif
   695 
   696 
   697 /* NPN_PostUrl */
   698 
   699 #if _NPUPP_USE_UPP_
   700 
   701 typedef UniversalProcPtr NPN_PostURLUPP;
   702 enum {
   703   uppNPN_PostURLProcInfo = kThinkCStackBased
   704     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   705     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*)))
   706     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*)))
   707     | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(uint32)))
   708     | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(const char*)))
   709     | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(NPBool)))
   710     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   711 };
   712 #define NewNPN_PostURLProc(FUNC)    \
   713     (NPN_PostURLUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_PostURLProcInfo, GetCurrentArchitecture())
   714 #define CallNPN_PostURLProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
   715     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_PostURLProcInfo, (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))
   716 #else
   717  #ifndef __SYMBIAN32__
   718   typedef NPError (* NP_LOADDS NPN_PostURLUPP)(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file);
   719   #define NewNPN_PostURLProc(FUNC)    \
   720       ((NPN_PostURLUPP) (FUNC))
   721   #define CallNPN_PostURLProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \
   722       (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6))
   723  #else/* __SYMBIAN32__ */
   724   typedef NPError (* NP_LOADDS NPN_PostURLUPP)(NPP instance, const TDesC& url,
   725                               const TDesC* target,
   726                               const TDesC& buf, NPBool file);
   727   #define NewNPN_PostURLProc(FUNC)    \
   728       ((NPN_PostURLUPP) (FUNC))
   729   #define CallNPN_PostURLProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \
   730       (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5))
   731  #endif /* __SYMBIAN32__ */
   732 #endif
   733 
   734 
   735 /* NPN_RequestRead */
   736 
   737 #if _NPUPP_USE_UPP_
   738 
   739 typedef UniversalProcPtr NPN_RequestReadUPP;
   740 enum {
   741   uppNPN_RequestReadProcInfo = kThinkCStackBased
   742     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPStream *)))
   743     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPByteRange *)))
   744     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   745 };
   746 #define NewNPN_RequestReadProc(FUNC)    \
   747     (NPN_RequestReadUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_RequestReadProcInfo, GetCurrentArchitecture())
   748 #define CallNPN_RequestReadProc(FUNC,  stream, range)   \
   749     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_RequestReadProcInfo, (stream), (range))
   750 
   751 #else
   752 
   753 typedef NPError (* NP_LOADDS NPN_RequestReadUPP)(NPStream* stream, NPByteRange* rangeList);
   754 #define NewNPN_RequestReadProc(FUNC)    \
   755     ((NPN_RequestReadUPP) (FUNC))
   756 #define CallNPN_RequestReadProc(FUNC, stream, range)    \
   757     (*(FUNC))((stream), (range))
   758 
   759 #endif
   760 
   761 
   762 /* NPN_NewStream */
   763 
   764 #if _NPUPP_USE_UPP_
   765 
   766 typedef UniversalProcPtr NPN_NewStreamUPP;
   767 enum {
   768   uppNPN_NewStreamProcInfo = kThinkCStackBased
   769     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   770     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPMIMEType)))
   771     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char *)))
   772     | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(NPStream **)))
   773     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   774 };
   775 #define NewNPN_NewStreamProc(FUNC)    \
   776     (NPN_NewStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_NewStreamProcInfo, GetCurrentArchitecture())
   777 #define CallNPN_NewStreamProc(FUNC, npp, type, window, stream)    \
   778     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_NewStreamProcInfo, (npp), (type), (window), (stream)) 
   779 
   780 #else
   781  #ifndef __SYMBIAN32__
   782   typedef NPError (* NP_LOADDS NPN_NewStreamUPP)(NPP instance, NPMIMEType type, const char* window, NPStream** stream);
   783   #define NewNPN_NewStreamProc(FUNC)    \
   784       ((NPN_NewStreamUPP) (FUNC))
   785   #define CallNPN_NewStreamProc(FUNC, npp, type, window, stream)    \
   786       (*(FUNC))((npp), (type), (window), (stream))
   787  #else/* __SYMBIAN32__ */
   788   typedef NPError (* NP_LOADDS NPN_NewStreamUPP)(NPP instance, NPMIMEType type,
   789                                 const TDesC* target, NPStream** stream);
   790   #define NewNPN_NewStreamProc(FUNC)    \
   791       ((NPN_NewStreamUPP) (FUNC))
   792   #define CallNPN_NewStreamProc(FUNC, npp, type, window, stream)    \
   793       (*(FUNC))((npp), (type), (window), (stream))
   794  #endif /* __SYMBIAN32__ */
   795 
   796 
   797 #endif
   798 
   799 
   800 /* NPN_Write */
   801 
   802 #if _NPUPP_USE_UPP_
   803 
   804 typedef UniversalProcPtr NPN_WriteUPP;
   805 enum {
   806   uppNPN_WriteProcInfo = kThinkCStackBased
   807     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   808     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
   809     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(int32)))
   810     | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*)))
   811     | RESULT_SIZE(SIZE_CODE(sizeof(int32)))
   812 };
   813 #define NewNPN_WriteProc(FUNC)    \
   814     (NPN_WriteUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_WriteProcInfo, GetCurrentArchitecture())
   815 #define CallNPN_WriteProc(FUNC, npp, stream, len, buffer)   \
   816     (int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_WriteProcInfo, (npp), (stream), (len), (buffer))  
   817 
   818 #else
   819 
   820 typedef int32 (* NP_LOADDS NPN_WriteUPP)(NPP instance, NPStream* stream, int32 len, void* buffer);
   821 #define NewNPN_WriteProc(FUNC)    \
   822     ((NPN_WriteUPP) (FUNC))
   823 #define CallNPN_WriteProc(FUNC, npp, stream, len, buffer)   \
   824     (*(FUNC))((npp), (stream), (len), (buffer))
   825 
   826 #endif
   827 
   828 
   829 /* NPN_DestroyStream */
   830 
   831 #if _NPUPP_USE_UPP_
   832 
   833 typedef UniversalProcPtr NPN_DestroyStreamUPP;
   834 enum {
   835   uppNPN_DestroyStreamProcInfo = kThinkCStackBased
   836     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP )))
   837     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *)))
   838     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPReason)))
   839     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
   840 };
   841 #define NewNPN_DestroyStreamProc(FUNC)    \
   842     (NPN_DestroyStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_DestroyStreamProcInfo, GetCurrentArchitecture())
   843 #define CallNPN_DestroyStreamProc(FUNC, npp, stream, reason)    \
   844     (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_DestroyStreamProcInfo, (npp), (stream), (reason)) 
   845 
   846 #else
   847 
   848 typedef NPError (* NP_LOADDS NPN_DestroyStreamUPP)(NPP instance, NPStream* stream, NPReason reason);
   849 #define NewNPN_DestroyStreamProc(FUNC)    \
   850     ((NPN_DestroyStreamUPP) (FUNC))
   851 #define CallNPN_DestroyStreamProc(FUNC, npp, stream, reason)    \
   852     (*(FUNC))((npp), (stream), (reason))
   853 
   854 #endif
   855 
   856 
   857 /* NPN_Status */
   858 
   859 #if _NPUPP_USE_UPP_
   860 
   861 typedef UniversalProcPtr NPN_StatusUPP;
   862 enum {
   863   uppNPN_StatusProcInfo = kThinkCStackBased
   864     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   865     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(char *)))
   866 };
   867 
   868 #define NewNPN_StatusProc(FUNC)   \
   869     (NPN_StatusUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_StatusProcInfo, GetCurrentArchitecture())
   870 #define CallNPN_StatusProc(FUNC, npp, msg)    \
   871     (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_StatusProcInfo, (npp), (msg))  
   872 
   873 #else
   874  #ifndef __SYMBIAN32__
   875   typedef void (* NP_LOADDS NPN_StatusUPP)(NPP instance, const char* message);
   876   #define NewNPN_StatusProc(FUNC)   \
   877       ((NPN_StatusUPP) (FUNC))
   878   #define CallNPN_StatusProc(FUNC, npp, msg)    \
   879       (*(FUNC))((npp), (msg)) 
   880  #else/* __SYMBIAN32__ */
   881   typedef void (* NP_LOADDS NPN_StatusUPP)(NPP instance, const TDesC& message);
   882   #define NewNPN_StatusProc(FUNC)   \
   883       ((NPN_StatusUPP) (FUNC))
   884   #define CallNPN_StatusProc(FUNC, npp, msg)    \
   885       (*(FUNC))((npp), (msg)) 
   886  #endif /* __SYMBIAN32__ */
   887 
   888 #endif
   889 
   890 
   891 /* NPN_UserAgent */
   892 #if _NPUPP_USE_UPP_
   893 
   894 typedef UniversalProcPtr NPN_UserAgentUPP;
   895 enum {
   896         uppNPN_UserAgentProcInfo = kThinkCStackBased
   897                 | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
   898                 | RESULT_SIZE(SIZE_CODE(sizeof(const char *)))
   899 };
   900 
   901 #define NewNPN_UserAgentProc(FUNC)              \
   902                 (NPN_UserAgentUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_UserAgentProcInfo, GetCurrentArchitecture())
   903 #define CallNPN_UserAgentProc(FUNC, ARG1)               \
   904                 (const char*)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_UserAgentProcInfo, (ARG1))
   905 
   906 #else
   907  #ifndef __SYMBIAN32__
   908   typedef const char* (* NP_LOADDS NPN_UserAgentUPP)(NPP instance);
   909   #define NewNPN_UserAgentProc(FUNC)              \
   910           ((NPN_UserAgentUPP) (FUNC))
   911   #define CallNPN_UserAgentProc(FUNC, ARG1)               \
   912           (*(FUNC))((ARG1))
   913  #else/* __SYMBIAN32__ */
   914   typedef const TDesC* (* NP_LOADDS NPN_UserAgentUPP)(NPP instance);
   915   #define NewNPN_UserAgentProc(FUNC)              \
   916           ((NPN_UserAgentUPP) (FUNC))
   917   #define CallNPN_UserAgentProc(FUNC, ARG1)               \
   918           (*(FUNC))((ARG1))
   919  #endif /* __SYMBIAN32__ */
   920 
   921 #endif
   922 
   923 
   924 /* NPN_MemAlloc */
   925 #if _NPUPP_USE_UPP_
   926 
   927 typedef UniversalProcPtr NPN_MemAllocUPP;
   928 enum {
   929   uppNPN_MemAllocProcInfo = kThinkCStackBased
   930     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(uint32)))
   931     | RESULT_SIZE(SIZE_CODE(sizeof(void *)))
   932 };
   933 
   934 #define NewNPN_MemAllocProc(FUNC)   \
   935     (NPN_MemAllocUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemAllocProcInfo, GetCurrentArchitecture())
   936 #define CallNPN_MemAllocProc(FUNC, ARG1)    \
   937     (void*)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemAllocProcInfo, (ARG1)) 
   938 
   939 #else
   940 
   941 typedef void* (* NP_LOADDS NPN_MemAllocUPP)(uint32 size);
   942 #define NewNPN_MemAllocProc(FUNC)   \
   943     ((NPN_MemAllocUPP) (FUNC))
   944 #define CallNPN_MemAllocProc(FUNC, ARG1)    \
   945     (*(FUNC))((ARG1)) 
   946 
   947 #endif
   948 
   949 
   950 /* NPN__MemFree */
   951 
   952 #if _NPUPP_USE_UPP_
   953 
   954 typedef UniversalProcPtr NPN_MemFreeUPP;
   955 enum {
   956   uppNPN_MemFreeProcInfo = kThinkCStackBased
   957     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(void *)))
   958 };
   959 
   960 #define NewNPN_MemFreeProc(FUNC)    \
   961     (NPN_MemFreeUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemFreeProcInfo, GetCurrentArchitecture())
   962 #define CallNPN_MemFreeProc(FUNC, ARG1)   \
   963     (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemFreeProcInfo, (ARG1))
   964 
   965 #else
   966 
   967 typedef void (* NP_LOADDS NPN_MemFreeUPP)(void* ptr);
   968 #define NewNPN_MemFreeProc(FUNC)    \
   969     ((NPN_MemFreeUPP) (FUNC))
   970 #define CallNPN_MemFreeProc(FUNC, ARG1)   \
   971     (*(FUNC))((ARG1)) 
   972 
   973 #endif
   974 
   975 
   976 /* NPN_MemFlush */
   977 
   978 #if _NPUPP_USE_UPP_
   979 
   980 typedef UniversalProcPtr NPN_MemFlushUPP;
   981 enum {
   982   uppNPN_MemFlushProcInfo = kThinkCStackBased
   983     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(uint32)))
   984     | RESULT_SIZE(SIZE_CODE(sizeof(uint32)))
   985 };
   986 
   987 #define NewNPN_MemFlushProc(FUNC)   \
   988     (NPN_MemFlushUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemFlushProcInfo, GetCurrentArchitecture())
   989 #define CallNPN_MemFlushProc(FUNC, ARG1)    \
   990     (uint32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemFlushProcInfo, (ARG1))  
   991 
   992 #else
   993 
   994 typedef uint32 (* NP_LOADDS NPN_MemFlushUPP)(uint32 size);
   995 #define NewNPN_MemFlushProc(FUNC)   \
   996     ((NPN_MemFlushUPP) (FUNC))
   997 #define CallNPN_MemFlushProc(FUNC, ARG1)    \
   998     (*(FUNC))((ARG1)) 
   999 
  1000 #endif
  1001 
  1002 
  1003 
  1004 /* NPN_ReloadPlugins */
  1005 
  1006 #if _NPUPP_USE_UPP_
  1007 
  1008 typedef UniversalProcPtr NPN_ReloadPluginsUPP;
  1009 enum {
  1010   uppNPN_ReloadPluginsProcInfo = kThinkCStackBased
  1011     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPBool)))
  1012     | RESULT_SIZE(SIZE_CODE(0))
  1013 };
  1014 
  1015 #define NewNPN_ReloadPluginsProc(FUNC)    \
  1016     (NPN_ReloadPluginsUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_ReloadPluginsProcInfo, GetCurrentArchitecture())
  1017 #define CallNPN_ReloadPluginsProc(FUNC, ARG1)   \
  1018     (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_ReloadPluginsProcInfo, (ARG1)) 
  1019 
  1020 #else
  1021 
  1022 typedef void (* NP_LOADDS NPN_ReloadPluginsUPP)(NPBool reloadPages);
  1023 #define NewNPN_ReloadPluginsProc(FUNC)    \
  1024     ((NPN_ReloadPluginsUPP) (FUNC))
  1025 #define CallNPN_ReloadPluginsProc(FUNC, ARG1)   \
  1026     (*(FUNC))((ARG1)) 
  1027 
  1028 #endif
  1029 
  1030 #ifdef JRI_H
  1031 /* NPN_GetJavaEnv */
  1032 
  1033 #if _NPUPP_USE_UPP_
  1034 
  1035 typedef UniversalProcPtr NPN_GetJavaEnvUPP;
  1036 enum {
  1037   uppNPN_GetJavaEnvProcInfo = kThinkCStackBased
  1038     | RESULT_SIZE(SIZE_CODE(sizeof(JRIEnv*)))
  1039 };
  1040 
  1041 #define NewNPN_GetJavaEnvProc(FUNC)   \
  1042     (NPN_GetJavaEnvUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetJavaEnvProcInfo, GetCurrentArchitecture())
  1043 #define CallNPN_GetJavaEnvProc(FUNC)    \
  1044     (JRIEnv*)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetJavaEnvProcInfo) 
  1045 
  1046 #else
  1047 typedef JRIEnv* (* NP_LOADDS NPN_GetJavaEnvUPP)(void);
  1048 #define NewNPN_GetJavaEnvProc(FUNC)   \
  1049     ((NPN_GetJavaEnvUPP) (FUNC))
  1050 #define CallNPN_GetJavaEnvProc(FUNC)    \
  1051     (*(FUNC))() 
  1052 
  1053 #endif
  1054 
  1055 
  1056 /* NPN_GetJavaPeer */
  1057 
  1058 #if _NPUPP_USE_UPP_
  1059 
  1060 typedef UniversalProcPtr NPN_GetJavaPeerUPP;
  1061 enum {
  1062   uppNPN_GetJavaPeerProcInfo = kThinkCStackBased
  1063     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
  1064     | RESULT_SIZE(SIZE_CODE(sizeof(jref)))
  1065 };
  1066 
  1067 #define NewNPN_GetJavaPeerProc(FUNC)    \
  1068     (NPN_GetJavaPeerUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetJavaPeerProcInfo, GetCurrentArchitecture())
  1069 #define CallNPN_GetJavaPeerProc(FUNC, ARG1)   \
  1070     (jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetJavaPeerProcInfo, (ARG1)) 
  1071 
  1072 #else
  1073 
  1074 typedef jref (* NP_LOADDS NPN_GetJavaPeerUPP)(NPP instance);
  1075 #define NewNPN_GetJavaPeerProc(FUNC)    \
  1076     ((NPN_GetJavaPeerUPP) (FUNC))
  1077 #define CallNPN_GetJavaPeerProc(FUNC, ARG1)   \
  1078     (*(FUNC))((ARG1)) 
  1079 
  1080 #endif
  1081 
  1082 #else//#ifdef JRI_H
  1083  typedef void JRIEnv;
  1084  typedef void* JRIGlobalRef;
  1085  typedef void* jref;
  1086  typedef JRIEnv* (*NPN_GetJavaEnvUPP)(void);
  1087  #define NewNPN_GetJavaEnvProc(FUNC)   \
  1088     ((NPN_GetJavaEnvUPP) (FUNC))
  1089  #define CallNPN_GetJavaEnvProc(FUNC)    \
  1090     (*(FUNC))() 
  1091  typedef jref (*NPN_GetJavaPeerUPP)(NPP instance);
  1092  #define NewNPN_GetJavaPeerProc(FUNC)    \
  1093     ((NPN_GetJavaPeerUPP) (FUNC))
  1094  #define CallNPN_GetJavaPeerProc(FUNC, ARG1)   \
  1095     (*(FUNC))((ARG1)) 
  1096 #endif//#ifdef JRI_H
  1097 
  1098 /* NPN_InvalidateRect */
  1099 
  1100 #if _NPUPP_USE_UPP_
  1101 
  1102 typedef UniversalProcPtr NPN_InvalidateRectUPP;
  1103 enum {
  1104   uppNPN_InvalidateRectProcInfo = kThinkCStackBased
  1105     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
  1106     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPRect *)))
  1107     | RESULT_SIZE(SIZE_CODE(0))
  1108 };
  1109 
  1110 #define NewNPN_InvalidateRectProc(FUNC)   \
  1111     (NPN_InvalidateRectUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_InvalidateRectProcInfo, GetCurrentArchitecture())
  1112 #define CallNPN_InvalidateRectProc(FUNC, ARG1, ARG2)    \
  1113     (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_InvalidateRectProcInfo, (ARG1), (ARG2))  
  1114 
  1115 #else
  1116 
  1117 typedef void (* NP_LOADDS NPN_InvalidateRectUPP)(NPP instance, NPRect *rect);
  1118 #define NewNPN_InvalidateRectProc(FUNC)   \
  1119     ((NPN_InvalidateRectUPP) (FUNC))
  1120 #define CallNPN_InvalidateRectProc(FUNC, ARG1, ARG2)    \
  1121     (*(FUNC))((ARG1), (ARG2)) 
  1122 
  1123 #endif
  1124 
  1125 
  1126 /* NPN_InvalidateRegion */
  1127 
  1128 #if _NPUPP_USE_UPP_
  1129 
  1130 typedef UniversalProcPtr NPN_InvalidateRegionUPP;
  1131 enum {
  1132   uppNPN_InvalidateRegionProcInfo = kThinkCStackBased
  1133     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
  1134     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPRegion)))
  1135     | RESULT_SIZE(SIZE_CODE(0))
  1136 };
  1137 
  1138 #define NewNPN_InvalidateRegionProc(FUNC)   \
  1139     (NPN_InvalidateRegionUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_InvalidateRegionProcInfo, GetCurrentArchitecture())
  1140 #define CallNPN_InvalidateRegionProc(FUNC, ARG1, ARG2)    \
  1141     (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_InvalidateRegionProcInfo, (ARG1), (ARG2))  
  1142 
  1143 #else
  1144 
  1145 typedef void (* NP_LOADDS NPN_InvalidateRegionUPP)(NPP instance, NPRegion region);
  1146 #define NewNPN_InvalidateRegionProc(FUNC)   \
  1147     ((NPN_InvalidateRegionUPP) (FUNC))
  1148 #define CallNPN_InvalidateRegionProc(FUNC, ARG1, ARG2)    \
  1149     (*(FUNC))((ARG1), (ARG2)) 
  1150 
  1151 #endif
  1152 
  1153 /* NPN_ForceRedraw */
  1154 
  1155 #if _NPUPP_USE_UPP_
  1156 
  1157 typedef UniversalProcPtr NPN_ForceRedrawUPP;
  1158 enum {
  1159   uppNPN_ForceRedrawProcInfo = kThinkCStackBased
  1160     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
  1161     | RESULT_SIZE(SIZE_CODE(sizeof(0)))
  1162 };
  1163 
  1164 #define NewNPN_ForceRedrawProc(FUNC)    \
  1165     (NPN_ForceRedrawUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_ForceRedrawProcInfo, GetCurrentArchitecture())
  1166 #define CallNPN_ForceRedrawProc(FUNC, ARG1)   \
  1167     (jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_ForceRedrawProcInfo, (ARG1)) 
  1168 
  1169 #else
  1170 
  1171 typedef void (* NP_LOADDS NPN_ForceRedrawUPP)(NPP instance);
  1172 #define NewNPN_ForceRedrawProc(FUNC)    \
  1173     ((NPN_ForceRedrawUPP) (FUNC))
  1174 #define CallNPN_ForceRedrawProc(FUNC, ARG1)   \
  1175     (*(FUNC))((ARG1)) 
  1176 
  1177 #endif
  1178 
  1179 
  1180 /******************************************************************************************
  1181  * The actual plugin function table definitions
  1182  *******************************************************************************************/
  1183 
  1184 #ifdef XP_MAC
  1185 #if PRAGMA_STRUCT_ALIGN
  1186 #pragma options align=mac68k
  1187 #endif
  1188 #endif
  1189 
  1190 typedef struct _NPPluginFuncs {
  1191     uint16 size;
  1192     uint16 version;
  1193     NPP_NewUPP newp;
  1194     NPP_DestroyUPP destroy;
  1195     NPP_SetWindowUPP setwindow;
  1196     NPP_NewStreamUPP newstream;
  1197     NPP_DestroyStreamUPP destroystream;
  1198     NPP_StreamAsFileUPP asfile;
  1199     NPP_WriteReadyUPP writeready;
  1200     NPP_WriteUPP write;
  1201     NPP_PrintUPP print;
  1202     NPP_HandleEventUPP event;
  1203     NPP_URLNotifyUPP urlnotify;
  1204     JRIGlobalRef javaClass;
  1205     NPP_GetValueUPP getvalue;
  1206     NPP_SetValueUPP setvalue;
  1207 } NPPluginFuncs;
  1208 
  1209 typedef struct _NPNetscapeFuncs {
  1210     uint16 size;
  1211     uint16 version;
  1212     NPN_GetURLUPP geturl;
  1213     NPN_PostURLUPP posturl;
  1214     NPN_RequestReadUPP requestread;
  1215     NPN_NewStreamUPP newstream;
  1216     NPN_WriteUPP write;
  1217     NPN_DestroyStreamUPP destroystream;
  1218     NPN_StatusUPP status;
  1219     NPN_UserAgentUPP uagent;
  1220     NPN_MemAllocUPP memalloc;
  1221     NPN_MemFreeUPP memfree;
  1222     NPN_MemFlushUPP memflush;
  1223     NPN_ReloadPluginsUPP reloadplugins;
  1224     NPN_GetJavaEnvUPP getJavaEnv;
  1225     NPN_GetJavaPeerUPP getJavaPeer;
  1226     NPN_GetURLNotifyUPP geturlnotify;
  1227     NPN_PostURLNotifyUPP posturlnotify;
  1228     NPN_GetValueUPP getvalue;
  1229     NPN_SetValueUPP setvalue;
  1230     NPN_InvalidateRectUPP invalidaterect;
  1231     NPN_InvalidateRegionUPP invalidateregion;
  1232     NPN_ForceRedrawUPP forceredraw;
  1233 } NPNetscapeFuncs;
  1234 
  1235 #ifdef XP_MAC
  1236 #if PRAGMA_STRUCT_ALIGN
  1237 #pragma options align=reset
  1238 #endif
  1239 #endif
  1240 
  1241 
  1242 #if defined(XP_MAC) || defined(XP_MACOSX)
  1243 /******************************************************************************************
  1244  * Mac platform-specific plugin glue stuff
  1245  *******************************************************************************************/
  1246 
  1247 /*
  1248  * Main entry point of the plugin.
  1249  * This routine will be called when the plugin is loaded. The function
  1250  * tables are passed in and the plugin fills in the NPPluginFuncs table
  1251  * and NPPShutdownUPP for Netscape's use.
  1252  */
  1253 
  1254 #if _NPUPP_USE_UPP_
  1255 
  1256 typedef UniversalProcPtr NPP_MainEntryUPP;
  1257 enum {
  1258   uppNPP_MainEntryProcInfo = kThinkCStackBased
  1259     | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPNetscapeFuncs*)))
  1260     | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPPluginFuncs*)))
  1261     | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPP_ShutdownUPP*)))
  1262     | RESULT_SIZE(SIZE_CODE(sizeof(NPError)))
  1263 };
  1264 #define NewNPP_MainEntryProc(FUNC)    \
  1265     (NPP_MainEntryUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_MainEntryProcInfo, GetCurrentArchitecture())
  1266 #define CallNPP_MainEntryProc(FUNC,  netscapeFunc, pluginFunc, shutdownUPP)   \
  1267     CallUniversalProc((UniversalProcPtr)(FUNC), (ProcInfoType)uppNPP_MainEntryProcInfo, (netscapeFunc), (pluginFunc), (shutdownUPP))
  1268 
  1269 #else
  1270 
  1271 typedef NPError (* NP_LOADDS NPP_MainEntryUPP)(NPNetscapeFuncs*, NPPluginFuncs*, NPP_ShutdownUPP*);
  1272 #define NewNPP_MainEntryProc(FUNC)    \
  1273     ((NPP_MainEntryUPP) (FUNC))
  1274 #define CallNPP_MainEntryProc(FUNC,  netscapeFunc, pluginFunc, shutdownUPP)   \
  1275     (*(FUNC))((netscapeFunc), (pluginFunc), (shutdownUPP))
  1276 
  1277 #endif
  1278 
  1279 
  1280 /*
  1281  * Mac version(s) of NP_GetMIMEDescription(const char *)
  1282  * These can be called to retreive MIME information from the plugin dynamically
  1283  *
  1284  * Note: For compatibility with Quicktime, BPSupportedMIMEtypes is another way
  1285  *       to get mime info from the plugin only on OSX and may not be supported 
  1286  *       in furture version--use NP_GetMIMEDescription instead
  1287  */
  1288 
  1289 enum
  1290 {
  1291  kBPSupportedMIMETypesStructVers_1    = 1
  1292 };
  1293 
  1294 typedef struct _BPSupportedMIMETypes
  1295 {
  1296  SInt32    structVersion;      /* struct version */
  1297  Handle    typeStrings;        /* STR# formated handle, allocated by plug-in */
  1298  Handle    infoStrings;        /* STR# formated handle, allocated by plug-in */
  1299 } BPSupportedMIMETypes;
  1300 OSErr BP_GetSupportedMIMETypes(BPSupportedMIMETypes *mimeInfo, UInt32 flags);
  1301 
  1302 #if _NPUPP_USE_UPP_
  1303 
  1304 #define NP_GETMIMEDESCRIPTION_NAME "NP_GetMIMEDescriptionRD"
  1305 typedef UniversalProcPtr NP_GetMIMEDescriptionUPP;
  1306 enum {
  1307   uppNP_GetMIMEDescEntryProc = kThinkCStackBased
  1308     | RESULT_SIZE(SIZE_CODE(sizeof(const char *)))
  1309 };
  1310 #define NewNP_GetMIMEDescEntryProc(FUNC)    \
  1311     (NP_GetMIMEDescriptionUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNP_GetMIMEDescEntryProc, GetCurrentArchitecture())
  1312 #define CallNP_GetMIMEDescEntryProc(FUNC)   \
  1313     (const char *)CallUniversalProc((UniversalProcPtr)(FUNC), (ProcInfoType)uppNP_GetMIMEDescEntryProc)
  1314 
  1315 
  1316 #else  /* !_NPUPP_USE_UPP_ */
  1317  #ifndef __SYMBIAN32__
  1318   typedef const char* (* NP_LOADDS NP_GetMIMEDescriptionUPP)();
  1319  #else/* __SYMBIAN32__ */
  1320   typedef const TDesC* (* NP_LOADDS NP_GetMIMEDescriptionUPP)();
  1321  #endif /* __SYMBIAN32__ */
  1322 
  1323  /* NP_GetMIMEDescription */
  1324 #define NP_GETMIMEDESCRIPTION_NAME "NP_GetMIMEDescription"
  1325 #define NewNP_GetMIMEDescEntryProc(FUNC)    \
  1326     ((NP_GetMIMEDescriptionUPP) (FUNC))
  1327 #define CallNP_GetMIMEDescEntryProc(FUNC)   \
  1328     (*(FUNC))()
  1329 /* BP_GetSupportedMIMETypes */
  1330 typedef OSErr (* NP_LOADDS BP_GetSupportedMIMETypesUPP)(BPSupportedMIMETypes*, UInt32);
  1331 #define NewBP_GetSupportedMIMETypesEntryProc(FUNC)    \
  1332     ((BP_GetSupportedMIMETypesUPP) (FUNC))
  1333 #define CallBP_GetMIMEDescEntryProc(FUNC,  mimeInfo, flags)   \
  1334     (*(FUNC))((mimeInfo), (flags))
  1335 
  1336 #endif
  1337 #endif /* MAC */
  1338 
  1339 #if defined(_WINDOWS)
  1340 #define OSCALL WINAPI
  1341 #else
  1342 #if defined(__OS2__)
  1343 #define OSCALL _System
  1344 #else
  1345 #define OSCALL
  1346 #endif
  1347 #endif
  1348 
  1349 #if defined( _WINDOWS ) || defined (__OS2__)
  1350 
  1351 #ifndef __SYMBIAN32__
  1352  #ifdef __cplusplus
  1353  extern "C" {
  1354  #endif
  1355 #endif
  1356 
  1357 /* plugin meta member functions */
  1358 #if defined(__OS2__)
  1359 
  1360 typedef struct _NPPluginData {   /* Alternate OS2 Plugin interface */
  1361     char *pMimeTypes;
  1362     char *pFileExtents;
  1363     char *pFileOpenTemplate;
  1364     char *pProductName;
  1365     char *pProductDescription;
  1366     unsigned long dwProductVersionMS;
  1367     unsigned long dwProductVersionLS;
  1368 } NPPluginData;
  1369 
  1370 NPError OSCALL NP_GetPluginData(NPPluginData * pPluginData);
  1371 
  1372 #endif
  1373 
  1374 NPError OSCALL NP_GetEntryPoints(NPPluginFuncs* pFuncs);
  1375 
  1376 NPError OSCALL NP_Initialize(NPNetscapeFuncs* pFuncs);
  1377 
  1378 NPError OSCALL NP_Shutdown();
  1379 
  1380 char* NP_GetMIMEDescription();
  1381 
  1382 #ifndef __SYMBIAN32__
  1383  #ifdef __cplusplus
  1384  }
  1385  #endif
  1386 #endif
  1387 
  1388 #endif /* _WINDOWS || __OS2__ */
  1389 
  1390 #if defined(__OS2__)
  1391 #pragma pack()
  1392 #endif
  1393 
  1394 #ifdef XP_UNIX
  1395 
  1396 #ifndef __SYMBIAN32__
  1397  #ifdef __cplusplus
  1398  extern "C" {
  1399  #endif
  1400 #endif
  1401 
  1402 /* plugin meta member functions */
  1403 #ifndef __SYMBIAN32__
  1404 char* NP_GetMIMEDescription(void);
  1405 NPError NP_Initialize(NPNetscapeFuncs*, NPPluginFuncs*);
  1406 NPError NP_Shutdown(void);
  1407 NPError NP_GetValue(void *future, NPPVariable aVariable, void *aValue);
  1408 #else
  1409 IMPORT_C const TDesC* NP_GetMIMEDescription(void);
  1410 IMPORT_C NPError    NP_Initialize(NPNetscapeFuncs*, NPPluginFuncs*);
  1411 IMPORT_C void     NP_Shutdown(void);
  1412 IMPORT_C NPError    NP_GetValue(void *future, NPPVariable aVariable, void *aValue);
  1413 #endif /* __SYMBIAN32__ */
  1414 
  1415 #ifndef __SYMBIAN32__
  1416  #ifdef __cplusplus
  1417  }
  1418  #endif
  1419 #endif
  1420 
  1421 #endif /* XP_UNIX */
  1422 
  1423 #endif /* _NPUPP_H_ */