📄 htext.c
字号:
/*** HYPERTEXT OBJECT BUILDER**** (c) COPYRIGHT MIT 1999.** Please first read the full copyright statement in the file COPYRIGH.** @(#) $Id: HText.c,v 2.4 1999/02/07 18:09:27 frystyk Exp $**** This generates of a hypertext object and calls the application** via callbacks.*//* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "HText.h"#include "HTextImp.h"/* Default callbacks that the application can register */PRIVATE HText_new * text_new;PRIVATE HText_delete * text_delete;PRIVATE HText_build * text_build;PRIVATE HText_addText * text_addText;PRIVATE HText_foundLink * text_foundLink;PRIVATE HText_beginElement * text_beginElement;PRIVATE HText_endElement * text_endElement;PRIVATE HText_unparsedBeginElement * text_unparsedBeginElement;PRIVATE HText_unparsedEndElement * text_unparsedEndElement;PRIVATE HText_unparsedEntity * text_unparsedEntity;/* HText handler instance */struct _HTextImp { HText * app; HText_new * text_new; HText_delete * text_delete; HText_build * text_build; HText_addText * text_addText; HText_foundLink * text_foundLink; HText_beginElement * text_beginElement; HText_endElement * text_endElement; HText_unparsedBeginElement *text_unparsedBeginElement; HText_unparsedEndElement * text_unparsedEndElement; HText_unparsedEntity * text_unparsedEntity;};/* --------------------------------------------------------------------------- */PUBLIC HTextImp * HTextImp_new (HTRequest * request, HTParentAnchor * anchor, HTStream * output_stream){ HTextImp * me = NULL; if ((me = (HTextImp *) HT_CALLOC(1, sizeof (HTextImp))) == NULL) HT_OUTOFMEM("HTextImp_new"); me->text_new = text_new; me->text_delete = text_delete; me->text_build = text_build; me->text_addText = text_addText; me->text_foundLink = text_foundLink; me->text_beginElement = text_beginElement; me->text_endElement = text_endElement; me->text_unparsedBeginElement = text_unparsedBeginElement; me->text_unparsedEndElement = text_unparsedEndElement; me->text_unparsedEntity = text_unparsedEntity; if (me->text_new) me->app = (*me->text_new)(request, anchor, output_stream); return me;}PUBLIC BOOL HTextImp_delete (HTextImp * me){ if (me) { /* ** Note that we do not call the delete method on the app ** HText object as this normally stays around after the ** request has been deleted and certainly it should be ** deleted by the app and not libwww */ HT_FREE(me); return YES; } return NO;}PUBLIC void HTextImp_build (HTextImp * me, HTextStatus status){ if (me && me->text_build) (*me->text_build)(me->app, status);}PUBLIC void HTextImp_addText (HTextImp * me, const char * buffer, int length){ if (me && me->text_addText) (*me->text_addText)(me->app, buffer, length);}PUBLIC void HTextImp_foundLink (HTextImp * me, int element_number, int attribute_number, HTChildAnchor *anchor, const BOOL * present, const char ** value){ if (me && me->text_foundLink) (*me->text_foundLink)(me->app, element_number, attribute_number, anchor, present, value);}PUBLIC void HTextImp_beginElement (HTextImp * me, int element_number, const BOOL * present, const char **value){ if (me && me->text_beginElement) (*me->text_beginElement)(me->app, element_number, present, value);}PUBLIC void HTextImp_endElement (HTextImp * me, int element_number){ if (me && me->text_endElement) (*me->text_endElement)(me->app, element_number);}PUBLIC void HTextImp_unparsedBeginElement (HTextImp * me, const char * buffer, int length){ if (me && me->text_unparsedBeginElement) (*me->text_unparsedBeginElement)(me->app, buffer, length);}PUBLIC void HTextImp_unparsedEndElement (HTextImp * me, const char * buffer, int length){ if (me && me->text_unparsedEndElement) (*me->text_unparsedEndElement)(me->app, buffer, length);}PUBLIC void HTextImp_unparsedEntity (HTextImp * me, const char * buffer, int length){ if (me && me->text_unparsedEntity) (*me->text_unparsedEntity)(me->app, buffer, length);}/* --------------------------------------------------------------------------- */PUBLIC BOOL HText_registerCDCallback (HText_new * ncb, HText_delete * dcb){ if (ncb && dcb) { text_new = ncb; text_delete = dcb; return YES; } return NO;}PUBLIC BOOL HText_unregisterCDCallback (void){ text_new = NULL; text_delete = NULL; return YES;}PUBLIC BOOL HText_registerBuildCallback (HText_build * bcb){ text_build = bcb; return YES;}PUBLIC BOOL HText_registerTextCallback (HText_addText * tcb){ text_addText = tcb; return YES;}PUBLIC BOOL HText_unregisterTextCallback (void){ text_addText = NULL; return YES;}PUBLIC BOOL HText_registerLinkCallback (HText_foundLink * lcb){ text_foundLink = lcb; return YES;}PUBLIC BOOL HText_unregisterLinkCallback (void){ text_foundLink = NULL; return YES;}PUBLIC BOOL HText_registerElementCallback (HText_beginElement * bcb, HText_endElement * ecb){ text_beginElement = bcb; text_endElement = ecb; return YES;}PUBLIC BOOL HText_unregisterElementCallback (void){ text_beginElement = NULL; return YES;}PUBLIC BOOL HText_registerUnparsedElementCallback (HText_unparsedBeginElement * ubcb, HText_unparsedBeginElement * uecb){ text_unparsedBeginElement = ubcb; text_unparsedEndElement = uecb; return YES;}PUBLIC BOOL HText_unregisterUnparsedElementCallback (void){ text_unparsedBeginElement = NULL; text_unparsedEndElement = NULL; return YES;}PUBLIC BOOL HText_registerUnparsedEntityCallback (HText_unparsedEntity * tcb){ text_unparsedEntity = tcb; return YES;}PUBLIC BOOL HText_unregisterUnparsedEntityCallback (void){ text_unparsedEntity = NULL; return YES;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -