diff options
Diffstat (limited to 'kxsldbg/kxsldbgpart/libxsldbg/xsldbgmsg.h')
-rw-r--r-- | kxsldbg/kxsldbgpart/libxsldbg/xsldbgmsg.h | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/kxsldbg/kxsldbgpart/libxsldbg/xsldbgmsg.h b/kxsldbg/kxsldbgpart/libxsldbg/xsldbgmsg.h new file mode 100644 index 00000000..12b16a3c --- /dev/null +++ b/kxsldbg/kxsldbgpart/libxsldbg/xsldbgmsg.h @@ -0,0 +1,210 @@ + +/*************************************************************************** + xsldbgmsg.h - description + ------------------- + begin : Thu Dec 20 2001 + copyright : (C) 2001 by Keith Isdale + email : k_isdale@tpg.com.au + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef XSLDBGMSG_H +#define XSLDBGMSG_H + +#ifdef WIN32 +# include <libxsldbg/xsldbgwin32config.h> +#else +# ifndef XSLDBG_SO_API +# define XSLDBG_SO_API +# endif +#endif + +#ifndef BUILD_DOCS +#include <libxml/tree.h> /* needed for the definition of xmlChar */ +#include "arraylist.h" +#endif + +typedef enum { + /* thread status */ + XSLDBG_MSG_THREAD_NOTUSED, /* 0: Thread are not to be used */ + XSLDBG_MSG_THREAD_INIT, /* 1: The xsldbg thread is initializing */ + XSLDBG_MSG_THREAD_RUN, /* 2: The xsldbg thread is running */ + XSLDBG_MSG_THREAD_STOP, /* 3: The xsldbg thread is about to die */ + XSLDBG_MSG_THREAD_DEAD, /* 4: The xsldbg thread died */ + + /* input status ( once thread is running) */ + XSLDBG_MSG_AWAITING_INPUT, /* 5: Waiting for user input */ + XSLDBG_MSG_READ_INPUT, /* 6: Read user input */ + XSLDBG_MSG_PROCESSING_INPUT, /* 7: Processing user's request */ + + /* provide more informatiom about state of xsldbg (optional) */ + XSLDBG_MSG_PROCESSING_RESULT, /* 8: An error occured performing command + * requested command */ + XSLDBG_MSG_LINE_CHANGED, /* 9: Changed to new line number + * ie a step */ + XSLDBG_MSG_FILE_CHANGED, /* 10: Loaded source/data file */ + XSLDBG_MSG_BREAKPOINT_CHANGED, /* 11: Response to a showbreak command */ + XSLDBG_MSG_PARAMETER_CHANGED, /* 12: Response to showparam command */ + XSLDBG_MSG_TEXTOUT, /* 13 : Free form text from xsldg */ + XSLDBG_MSG_FILEOUT, /* 14 : Response to cat commmand, ie + * Free form text in file */ + XSLDBG_MSG_LOCALVAR_CHANGED, /* 15 : Response to locals command ie a + * local variable */ + XSLDBG_MSG_GLOBALVAR_CHANGED, /* 16 : Response to globals command + * ie a global variable */ + XSLDBG_MSG_TEMPLATE_CHANGED, /* 17 : Response to templates commmand + * ie template details */ + XSLDBG_MSG_SOURCE_CHANGED, /* 18 : Response to stylesheets command, + * a normal stylesheet */ + XSLDBG_MSG_INCLUDED_SOURCE_CHANGED, /* 19: Response to stylesheets + * command, a xmlNodeptr of + * a included stylesheet */ + XSLDBG_MSG_CALLSTACK_CHANGED, /* 20: Response to where command, + * ie a item on the call stack */ + XSLDBG_MSG_ENTITIY_CHANGED, /* 21: Response to entities + * command */ + XSLDBG_MSG_RESOLVE_CHANGE, /* 22: Response to system or + * public command */ + XSLDBG_MSG_LIST, /* 23 : As list of messages */ + + XSLDBG_MSG_INTOPTION_CHANGE, /* 23* Response to options command */ + XSLDBG_MSG_STRINGOPTION_CHANGE, /* 24* Response to options command */ + XSLDBG_MSG_ERROR_MESSAGE /* 25: Entercepted error message from libxml2 */ +} XsldbgMessageEnum; + + +typedef enum { + XSLDBG_COMMAND_FAILED, /* generic error */ + XSLDBG_COMMAND_WARNING, + XSLDBG_COMMAND_INFO, + XSLDBG_COMMAND_NOTUSED +} XsldbgCommandStateEnum; + + + +/** + * Notify the application that something happened to the xsldbg thread + * + * @param type : A valid XsldbgMessageEnum + * + * @param data : The meaning of data can have a different meaning for each value of @type + *<pre> + * Value of @type Meaning of @data + * -------------------------- +++ --------------------- + * XSLDBG_MSG_THREAD_NOTUSED, not used + * XSLDBG_MSG_THREAD_INIT, not used + * XSLDBG_MSG_THREAD_RUN, not used + * XSLDBG_MSG_THREAD_STOP, not used + * XSLDBG_MSG_THREAD_DEAD, not used + * XSLDBG_MSG_AWAITING_INPUT, not used + * XSLDBG_MSG_READ_INPUT, A value of the char* for user input + * XSLDBG_MSG_PROCESSING_INPUT, not used + * XSLDBG_MSG_PROCESSING_RESULT, A value of type xsldbgErrorMsgPtr + * XSLDBG_MSG_LINE_CHANGED Is non-NULL if reached breakpoint + * otherwise just change in line number + * of displayed source/data + * XSLDBG_MSG_FILE_CHANGED, not used + * XSLDBG_MSG_BREAKPOINT_CHANGED A breakPointPtr of the breakpoint + * XSLDBG_MSG_PARAMETER_CHANGED A parameterItemPtr of libxslt pameter. + * XSLDBG_MSG_TEXTOUT A char * to buffer for text output + * XSLDBG_MSG_FILEOUT A FILE * for text to output + * XSLDBG_MSG_LOCALVAR_CHANGED, A local variable of type xsltStackElemPtr + * XSLDBG_MSG_GLOBALVAR_CHANGED, A global variable of type xsltStackElemPtr + * XSLDBG_MSG_TEMPLATE_CHANGED, A template of type xsltTemplatePtr + * XSLDBG_MSG_SOURCE_CHANGED, A xsltStylesheetPtr of a normal stylesheet + * XSLDBG_MSG_INCLUDED_SOURCE_CHANGED A xmlNodePtr of a included stylsheet + * XSLDBG_MSG_CALLSTACK_CHANGED A callPointPtr of a call stack item + * XSLDBG_MSG_ENTITIY_CHANGED A const entityInfoPtr + * for the included entity + * XSLDBG_MSG_RESOLVE_CHANGE A xmlChar* of URI that + * SystemID or PublicID resolves to + * XSLDBG_MSG_LIST A notifyMessageListPtr + * + * XSLDBG_MSG_INTOPTION_CHANGE A paramItemPtr, value is not used + * XSLDBG_MSG_STRINGOPTION_CHANGE A paramItemPtr, intValue is not used + * XSLDBG_MSG_ERROR_MESSAGE A xmlErrorPtr + * + * + * Legend : + * not used :- value may be NULL but must not be used + * + * All values are to treated as volitile and are only guaranteed + * to be valid for the life of the notification messages. ie make a + * NEW copy of value if needed for longer than that. + * Unless stated otherwise, if reponse can return a value and the value is + * NULL then that indicates the start of a list of values + * + *<pre> + * @returns 1 on sucess + * 0 otherwise +*/ + +typedef struct _xsldbgErrorMsg xsldbgErrorMsg; +typedef xsldbgErrorMsg *xsldbgErrorMsgPtr; +struct _xsldbgErrorMsg { + XsldbgMessageEnum type; + int commandId; + XsldbgCommandStateEnum commandState; + xmlChar *text; + xmlChar *messagefileName; /* used when send large chunks of data */ +}; + + +typedef struct _notifyMessageList notifyMessageList; +typedef notifyMessageList *notifyMessageListPtr; +struct _notifyMessageList { + XsldbgMessageEnum type; + arrayListPtr list; +}; + +#ifdef __cplusplus +extern "C" { +#endif + +void xsldbgSetAppFunc(int (*notifyXsldbgAppFunc) (XsldbgMessageEnum type, const void *data)); + +void xsldbgSetAppStateFunc(int (*notifyStateXsldbgAppFunc)(XsldbgMessageEnum type, int commandId, + XsldbgCommandStateEnum commandState, + const char *text)); + +void xsldbgSetTextFunc(int (*notifyTextXsldbgAppFunc)(XsldbgMessageEnum type, const char *text)); + +void xsldbgSetReadlineFunc(xmlChar * (*xslDbgShellReadlineFunc)(xmlChar * prompt)); + +int notifyXsldbgApp(XsldbgMessageEnum type, const void *data); + +int notifyStateXsldbgApp(XsldbgMessageEnum type, int commandId, + XsldbgCommandStateEnum commandState, + const char *text); + +int notifyTextXsldbgApp(XsldbgMessageEnum type, const char *text); + +xmlChar * xslDbgShellReadline(xmlChar * prompt); + + + /* The following functions implemented in xsldbgthread.c */ + int notifyListStart(XsldbgMessageEnum type); + + /* Data must be valid for until the next notifyListStart. + * Memory pointed to by @data will not be freed. Added @data items + * queued to list must be of the same data type as required by the + * XsldbgMessageEnum used with the matching notifyListSend */ + int notifyListQueue(const void *data); + + /* The notified application is responsible for free memory used + * by the ArrayList and notifyMessageList of notify message */ + int notifyListSend(void); + + +#ifdef __cplusplus +} +#endif +#endif |