15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* ***** BEGIN LICENSE BLOCK *****
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Version: MPL 1.1/GPL 2.0/LGPL 2.1
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The contents of this file are subject to the Mozilla Public License Version
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1.1 (the "License"); you may not use this file except in compliance with
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the License. You may obtain a copy of the License at
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * http://www.mozilla.org/MPL/
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Software distributed under the License is distributed on an "AS IS" basis,
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * for the specific language governing rights and limitations under the
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * License.
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The Original Code is mozilla.org code.
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The Initial Developer of the Original Code is
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Netscape Communications Corporation.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Portions created by the Initial Developer are Copyright (C) 1998
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the Initial Developer. All Rights Reserved.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Contributor(s):
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Alternatively, the contents of this file may be used under the terms of
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * either the GNU General Public License Version 2 or later (the "GPL"), or
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * in which case the provisions of the GPL or the LGPL are applicable instead
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of those above. If you wish to allow use of your version of this file only
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * under the terms of either the GPL or the LGPL, and not to allow others to
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * use your version of this file under the terms of the MPL, indicate your
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * decision by deleting the provisions above and replace them with the notice
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * and other provisions required by the GPL or the LGPL. If you do not delete
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the provisions above, a recipient may use your version of this file under
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the terms of any one of the MPL, the GPL or the LGPL.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ***** END LICENSE BLOCK ***** */
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef __FORMAT_H__
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define __FORMAT_H__
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "npapi.h"
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_invalid = 0,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_version,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_get_url_notify,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_get_url,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_post_url_notify,
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_post_url,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_request_read,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_new_stream,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_write,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_destroy_stream,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_status,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_user_agent,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_mem_alloc,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_mem_free,
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_mem_flush,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_reload_plugins,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_get_java_env,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_get_java_peer,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_get_value,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_set_value,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_invalidate_rect,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_invalidate_region,
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_force_redraw,
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_enumerate,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_pop_popups_enabled_state,
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_push_popups_enabled_state,
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_set_exception,
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_release_variant_value,
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_has_method,
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_has_property,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_remove_property,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_set_property,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_get_property,
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_evaluate,
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_invoke_default,
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_invoke,
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_release_object,
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_retain_object,
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_create_object,
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_int_from_identifier,
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_utf8_from_identifier,
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_identifier_is_string,
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_get_int_identifer,
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_get_string_identifier,
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npn_get_string_identifiers,
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_new,
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_destroy,
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_set_window,
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_new_stream,
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_destroy_stream,
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_stream_as_file,
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_write_ready,
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_write,
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_print,
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_handle_event,
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_url_notify,
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_get_java_class,
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_get_value,
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_npp_set_value
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} NPAPI_Action;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct LogArgumentStruct
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DWORD dwArg;
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int iLength;
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void * pData;
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LogArgumentStruct()
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    iLength = 0;
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    pData = NULL;
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~LogArgumentStruct()
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if(pData != NULL)
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      delete [] pData;
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    iLength = 0;
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct LogItemStruct
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NPAPI_Action action;
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LogArgumentStruct arg1;
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LogArgumentStruct arg2;
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LogArgumentStruct arg3;
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LogArgumentStruct arg4;
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LogArgumentStruct arg5;
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LogArgumentStruct arg6;
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LogArgumentStruct arg7;
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LogItemStruct(){}
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~LogItemStruct(){}
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * FormatNPAPIError(int iError);
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * FormatNPAPIReason(int iReason);
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * FormatNPPVariable(NPPVariable var);
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char * FormatNPNVariable(NPNVariable var);
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL FormatPCHARArgument(char * szBuf, int iLength, LogArgumentStruct * parg);
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL FormatBOOLArgument(char * szBuf, int iLength, LogArgumentStruct * parg);
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BOOL FormatPBOOLArgument(char * szBuf, int iLength, LogArgumentStruct * parg);
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LogItemStruct * makeLogItemStruct(NPAPI_Action action,
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  DWORD dw1, DWORD dw2, DWORD dw3, DWORD dw4,
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  DWORD dw5, DWORD dw6, DWORD dw7, BOOL bShort = FALSE);
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void freeLogItemStruct(LogItemStruct * lis);
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void formatLogItem(LogItemStruct * plis, std::string * szOutput, BOOL bDOSStyle = FALSE);
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // __LOGHLP_H__
157