You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdewebdev/kxsldbg/kxsldbgpart/libxsldbg/xsldbgmsg.h

215 lines
9.0 KiB

/***************************************************************************
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 HAVE_CONFIG_H
#include "config.h"
#endif
#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