• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/tcl-102/tcl_ext/xotcl/xotcl/library/xml/TclExpat-1.1/

Lines Matching defs:expat

4  *	A Tcl interface to James Clark's expat XML parser
28 * The structure below is used to refer to an expat parser object.
32 XML_Parser parser; /* The expat parser structure */
63 TclExpatInfo *expat));
64 static void (TclExpatFreeParser) _ANSI_ARGS_((TclExpatInfo *expat));
66 TclExpatInfo *expat,
70 TclExpatInfo *expat,
74 TclExpatInfo *expat,
152 * Defines "expat" command in the interpreter.
190 Tcl_PkgProvide(interp, "xotcl::xml::expat", PACKAGE_VERSION);
192 Tcl_CreateObjCommand(interp, "expat", TclExpatObjCmd, NULL, NULL);
202 * Creation command for expat class.
208 * This creates an expat parser.
220 TclExpatInfo *expat;
231 if (!(expat = (TclExpatInfo *) ckalloc(sizeof(TclExpatInfo)))) {
232 ckfree((char*)expat);
236 expat->interp = interp;
238 expat->name = objv[1];
240 expat->elementstartcommand = NULL;
241 expat->elementendcommand = NULL;
242 expat->datacommand = NULL;
243 expat->picommand = NULL;
244 expat->defaultcommand = NULL;
245 expat->unparsedcommand = NULL;
246 expat->notationcommand = NULL;
247 expat->externalentitycommand = NULL;
248 expat->unknownencodingcommand = NULL;
250 if (TclExpatCreateParser(interp, expat) != TCL_OK) {
251 ckfree((char*)expat);
259 Tcl_CreateObjCommand(interp, Tcl_GetString(expat->name), TclExpatInstanceCmd, (ClientData) expat, TclExpatDeleteCmd);
266 TclExpatConfigure(interp, expat, objc - 2, objv + 2);
269 Tcl_SetObjResult(interp, expat->name);
279 * Create the expat parser and initialise (some of) the TclExpatInfo
289 * Creates an expat parser.
296 TclExpatCreateParser(interp, expat)
298 TclExpatInfo *expat;
300 if (!(expat->parser = XML_ParserCreate(NULL))) {
301 Tcl_SetResult(interp, "unable to create expat parser", NULL);
305 expat->final = 1;
306 expat->status = TCL_OK;
307 expat->result = NULL;
308 expat->continueCount = 0;
314 XML_SetElementHandler(expat->parser,
317 XML_SetCharacterDataHandler(expat->parser,
319 XML_SetProcessingInstructionHandler(expat->parser,
321 XML_SetDefaultHandler(expat->parser,
323 XML_SetUnparsedEntityDeclHandler(expat->parser,
325 XML_SetNotationDeclHandler(expat->parser,
327 XML_SetExternalEntityRefHandler(expat->parser,
329 XML_SetUnknownEncodingHandler(expat->parser,
331 (void *) expat);
332 XML_SetUserData(expat->parser,
333 (void *) expat);
343 * Destroy the expat parser structure.
355 TclExpatFreeParser(expat)
356 TclExpatInfo *expat;
358 XML_ParserFree(expat->parser);
359 expat->parser = NULL;
367 * Implements instance command for expat class objects.
385 TclExpatInfo *expat = (TclExpatInfo *) clientData;
426 result = TclExpatParse(interp, expat, data, (size_t)len);
441 TclExpatFreeParser(expat);
442 TclExpatCreateParser(interp, expat);
461 * Wrapper to invoke expat parser and check return result.
473 TclExpatParse (interp, expat, data, len)
475 TclExpatInfo *expat;
482 expat->status = TCL_OK;
483 if (expat->result != NULL) {
484 Tcl_DecrRefCount(expat->result);
486 expat->result = NULL;
488 result = XML_Parse(expat->parser,
490 expat->final);
494 sprintf(s, "%d", XML_GetCurrentLineNumber(expat->parser));
496 XML_ErrorString(XML_GetErrorCode(expat->parser)),
498 sprintf(s, "%d", XML_GetCurrentColumnNumber(expat->parser));
504 switch (expat->status) {
512 Tcl_SetObjResult(interp, expat->result);
527 * Implements instance command for expat class objects.
539 TclExpatConfigure (interp, expat, objc, objv)
541 TclExpatInfo *expat;
582 if (bool && !expat->final) {
584 expat->final = bool;
587 } else if (!bool && expat->final) {
593 TclExpatFreeParser(expat);
594 TclExpatCreateParser(interp, expat);
603 if (XML_SetBase(expat->parser, Tcl_GetString(objPtr[1])) == 0) {
611 if (expat->elementstartcommand != NULL) {
612 Tcl_DecrRefCount(expat->elementstartcommand);
615 expat->elementstartcommand = objPtr[1];
616 Tcl_IncrRefCount(expat->elementstartcommand);
622 if (expat->elementendcommand != NULL) {
623 Tcl_DecrRefCount(expat->elementendcommand);
626 expat->elementendcommand = objPtr[1];
627 Tcl_IncrRefCount(expat->elementendcommand);
633 if (expat->datacommand != NULL) {
634 Tcl_DecrRefCount(expat->datacommand);
637 expat->datacommand = objPtr[1];
638 Tcl_IncrRefCount(expat->datacommand);
644 if (expat->picommand != NULL) {
645 Tcl_DecrRefCount(expat->picommand);
648 expat->picommand = objPtr[1];
649 Tcl_IncrRefCount(expat->picommand);
655 if (expat->defaultcommand != NULL) {
656 Tcl_DecrRefCount(expat->defaultcommand);
659 expat->defaultcommand = objPtr[1];
660 Tcl_IncrRefCount(expat->defaultcommand);
666 if (expat->unparsedcommand != NULL) {
667 Tcl_DecrRefCount(expat->unparsedcommand);
670 expat->unparsedcommand = objPtr[1];
671 Tcl_IncrRefCount(expat->unparsedcommand);
677 if (expat->notationcommand != NULL) {
678 Tcl_DecrRefCount(expat->notationcommand);
681 expat->notationcommand = objPtr[1];
682 Tcl_IncrRefCount(expat->notationcommand);
688 if (expat->externalentitycommand != NULL) {
689 Tcl_DecrRefCount(expat->externalentitycommand);
692 expat->externalentitycommand = objPtr[1];
693 Tcl_IncrRefCount(expat->externalentitycommand);
702 if (expat->unknownencodingcommand != NULL) {
703 Tcl_DecrRefCount(expat->unknownencodingcommand);
706 expat->unknownencodingcommand = objPtr[1];
707 Tcl_IncrRefCount(expat->unknownencodingcommand);
719 return TclExpatParse(interp, expat->parser, "", 0);
744 TclExpatCget (interp, expat, objc, objv)
746 TclExpatInfo *expat;
771 TclExpatHandlerResult(expat, result)
772 TclExpatInfo *expat;
777 expat->status = TCL_OK;
787 expat->status = TCL_CONTINUE;
788 expat->continueCount = 1;
795 expat->status = TCL_BREAK;
803 expat->status = TCL_ERROR;
804 expat->result = Tcl_GetObjResult(expat->interp);
805 Tcl_IncrRefCount(expat->result);
815 * Called by expat for each start tag.
832 TclExpatInfo *expat = (TclExpatInfo *) userData;
837 if (expat->status == TCL_CONTINUE) {
844 expat->continueCount++;
848 if (expat->elementstartcommand == NULL ||
849 expat->status != TCL_OK) {
859 Tcl_ListObjAppendElement(expat->interp, atList, Tcl_NewStringObj((char *)atPtr[0], strlen(atPtr[0])));
860 Tcl_ListObjAppendElement(expat->interp, atList, Tcl_NewStringObj((char *)atPtr[1], strlen(atPtr[1])));
867 cmdPtr = Tcl_DuplicateObj(expat->elementstartcommand);
869 Tcl_Preserve((ClientData) expat->interp);
871 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)name, strlen(name)));
872 Tcl_ListObjAppendElement(expat->interp, cmdPtr, atList);
879 result = Tcl_GlobalEvalObj(expat->interp, cmdPtr);
881 result = Tcl_EvalObj(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
883 result = Tcl_EvalObjEx(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
887 Tcl_Release((ClientData) expat->interp);
889 TclExpatHandlerResult(expat, result);
899 * Called by expat for each end tag.
915 TclExpatInfo *expat = (TclExpatInfo *) userData;
919 if (expat->status == TCL_CONTINUE) {
925 if (!--(expat->continueCount)) {
926 expat->status = TCL_OK;
931 if (expat->elementendcommand == NULL ||
932 expat->status != TCL_OK) {
940 cmdPtr = Tcl_DuplicateObj(expat->elementendcommand);
942 Tcl_Preserve((ClientData) expat->interp);
944 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)name, strlen(name)));
951 result = Tcl_GlobalEvalObj(expat->interp, cmdPtr);
953 result = Tcl_EvalObj(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
955 result = Tcl_EvalObjEx(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
959 Tcl_Release((ClientData) expat->interp);
961 TclExpatHandlerResult(expat, result);
971 * Called by expat for character data.
988 TclExpatInfo *expat = (TclExpatInfo *) userData;
992 if (expat->datacommand == NULL ||
993 expat->status != TCL_OK) {
1001 cmdPtr = Tcl_DuplicateObj(expat->datacommand);
1003 Tcl_Preserve((ClientData) expat->interp);
1005 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)s, len));
1012 result = Tcl_GlobalEvalObj(expat->interp, cmdPtr);
1014 result = Tcl_EvalObj(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1016 result = Tcl_EvalObjEx(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1020 Tcl_Release((ClientData) expat->interp);
1022 TclExpatHandlerResult(expat, result);
1032 * Called by expat for processing instructions.
1049 TclExpatInfo *expat = (TclExpatInfo *) userData;
1053 if (expat->picommand == NULL ||
1054 expat->status != TCL_OK) {
1062 cmdPtr = Tcl_DuplicateObj(expat->picommand);
1064 Tcl_Preserve((ClientData) expat->interp);
1066 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)target, strlen(target)));
1067 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)data, strlen(data)));
1074 result = Tcl_GlobalEvalObj(expat->interp, cmdPtr);
1076 result = Tcl_EvalObj(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1078 result = Tcl_EvalObjEx(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1082 Tcl_Release((ClientData) expat->interp);
1084 TclExpatHandlerResult(expat, result);
1094 * Called by expat for processing data which has no other handler.
1111 TclExpatInfo *expat = (TclExpatInfo *) userData;
1115 if (expat->defaultcommand == NULL ||
1116 expat->status != TCL_OK) {
1124 cmdPtr = Tcl_DuplicateObj(expat->defaultcommand);
1126 Tcl_Preserve((ClientData) expat->interp);
1128 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)s, len));
1135 result = Tcl_GlobalEvalObj(expat->interp, cmdPtr);
1137 result = Tcl_EvalObj(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1139 result = Tcl_EvalObjEx(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1143 Tcl_Release((ClientData) expat->interp);
1145 TclExpatHandlerResult(expat, result);
1155 * Called by expat for processing an unparsed entity references.
1175 TclExpatInfo *expat = (TclExpatInfo *) userData;
1179 if (expat->unparsedcommand == NULL ||
1180 expat->status != TCL_OK) {
1188 cmdPtr = Tcl_DuplicateObj(expat->unparsedcommand);
1190 Tcl_Preserve((ClientData) expat->interp);
1192 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)entityname, strlen(entityname)));
1193 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)base, strlen(base)));
1194 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)systemId, strlen(systemId)));
1196 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewListObj(0, NULL));
1198 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)publicId, strlen(publicId)));
1201 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewListObj(0, NULL));
1203 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)notationName, strlen(notationName)));
1211 result = Tcl_GlobalEvalObj(expat->interp, cmdPtr);
1213 result = Tcl_EvalObj(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1215 result = Tcl_EvalObjEx(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1219 Tcl_Release((ClientData) expat->interp);
1221 TclExpatHandlerResult(expat, result);
1231 * Called by expat for processing a notation declaration.
1250 TclExpatInfo *expat = (TclExpatInfo *) userData;
1254 if (expat->notationcommand == NULL ||
1255 expat->status != TCL_OK) {
1263 cmdPtr = Tcl_DuplicateObj(expat->notationcommand);
1265 Tcl_Preserve((ClientData) expat->interp);
1267 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)notationName, strlen(notationName)));
1268 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)base, strlen(base)));
1270 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewListObj(0, NULL));
1272 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)systemId, strlen(systemId)));
1275 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewListObj(0, NULL));
1277 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)publicId, strlen(publicId)));
1285 result = Tcl_GlobalEvalObj(expat->interp, cmdPtr);
1287 result = Tcl_EvalObj(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1289 result = Tcl_EvalObjEx(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1293 Tcl_Release((ClientData) expat->interp);
1295 TclExpatHandlerResult(expat, result);
1305 * Called by expat for processing a reference to a character in an
1323 TclExpatInfo *expat = (TclExpatInfo *) encodingHandlerData;
1327 Tcl_SetResult(expat->interp, "not implemented", NULL);
1330 if (expat->unknownencodingcommand == NULL ||
1331 expat->status != TCL_OK) {
1339 cmdPtr = Tcl_DuplicateObj(expat->unknownencodingcommand);
1341 Tcl_Preserve((ClientData) expat->interp);
1352 result = Tcl_GlobalEvalObj(expat->interp, cmdPtr);
1354 result = Tcl_EvalObj(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1356 result = Tcl_EvalObjEx(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1360 Tcl_Release((ClientData) expat->interp);
1362 TclExpatHandlerResult(expat, result);
1376 * Called by expat for processing external entity references.
1395 TclExpatInfo *expat = (TclExpatInfo *) XML_GetUserData(parser);
1399 if (expat->externalentitycommand == NULL ||
1400 expat->status != TCL_OK) {
1408 cmdPtr = Tcl_DuplicateObj(expat->externalentitycommand);
1410 Tcl_Preserve((ClientData) expat->interp);
1412 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)openEntityNames, strlen(openEntityNames)));
1413 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)base, strlen(base)));
1414 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)systemId, strlen(systemId)));
1415 Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)publicId, strlen(publicId)));
1422 result = Tcl_GlobalEvalObj(expat->interp, cmdPtr);
1424 result = Tcl_EvalObj(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1426 result = Tcl_EvalObjEx(expat->interp, cmdPtr, TCL_EVAL_GLOBAL);
1430 Tcl_Release((ClientData) expat->interp);
1432 TclExpatHandlerResult(expat, result);
1442 * Called when a expat parser is deleted.
1457 TclExpatInfo *expat = (TclExpatInfo *) clientData;
1459 TclExpatFreeParser(expat);
1461 Tcl_DecrRefCount(expat->name);
1463 if (expat->elementstartcommand) {
1464 Tcl_DecrRefCount(expat->elementstartcommand);
1466 if (expat->elementendcommand) {
1467 Tcl_DecrRefCount(expat->elementendcommand);
1469 if (expat->datacommand) {
1470 Tcl_DecrRefCount(expat->datacommand);
1472 if (expat->picommand) {
1473 Tcl_DecrRefCount(expat->picommand);
1475 if (expat->externalentitycommand) {
1476 Tcl_DecrRefCount(expat->externalentitycommand);