* Copyright (c) Huawei Technologies Co., Ltd. 2023-2023. All rights reserved.
* Description: XML for Cangjie API
* Author: cwl1097228
* Create: 2023-09-1
* Notes: 2023-09-1 Create
*/
#include <stdlib.h>
#include <limits.h>
#include <string.h>
#include <stdarg.h>
#include <stddef.h>
#include "parser.h"
char *print_element_names(xmlNode *a_node)
{
if (a_node == NULL) {
return NULL;
}
if (a_node -> type == XML_ELEMENT_NODE) {
return a_node -> name;
} else {
return "";
}
}
char *query_xmlNode_name(const long long ptr)
{
xmlNodePtr cur;
cur = (xmlNodePtr) ptr;
return print_element_names(cur);
}
char *query_xmlNode_content(const long long ptr, const long long ptr1)
{
xmlDocPtr doc;
xmlNodePtr cur;
doc = (xmlDocPtr) ptr;
cur = (xmlNodePtr) ptr1;
if (doc == NULL || cur == NULL) {
return NULL;
}
xmlChar* key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
return key;
}
long long query_DocPtr(const char *file_name)
{
xmlDocPtr doc;
doc = xmlParseMemory(file_name, strlen(file_name));
if (doc == NULL) {
return 0;
}
return (long long)(doc);
}
long long query_Root_NodePtr(const long long ptr)
{
xmlDocPtr doc;
xmlNodePtr cur;
doc = (xmlDocPtr) ptr;
if (doc == NULL) {
return 0;
}
cur = xmlDocGetRootElement(doc);
return (long long)(cur);
}
void xmlAttrPtr_free(const long long ptr)
{
xmlAttrPtr prop;
prop = (xmlAttrPtr) ptr;
if (prop == NULL) {
return;
}
xmlFreeProp(prop);
}
long long query_ChildrenNodes(const long long ptr)
{
xmlNodePtr cur;
cur = (xmlNodePtr) ptr;
if (cur == NULL) {
return 0;
}
cur = cur -> xmlChildrenNode;
return (long long)(cur);
}
long long query_nextNode(const long long ptr)
{
xmlNodePtr cur;
cur = (xmlNodePtr) ptr;
if (cur == NULL) {
return 0;
}
cur = cur -> next;
return (long long)(cur);
}
long long query_ChildrenProps(const long long ptr)
{
xmlNodePtr cur;
cur = (xmlNodePtr) ptr;
if (cur == NULL) {
return 0;
}
xmlAttrPtr attribute = cur -> properties;
return (long long)(attribute);
}
long long query_nextProp(const long long ptr)
{
xmlAttrPtr attribute;
attribute = (xmlAttrPtr) ptr;
if (attribute == NULL) {
return 0;
}
attribute = attribute -> next;
return (long long)(attribute);
}
char *query_Propattribute_name(const long long ptr)
{
xmlAttrPtr attribute;
attribute = (xmlAttrPtr) ptr;
if (attribute == NULL) {
return NULL;
}
return attribute -> name;
}
char *query_Propattribute_contxt(const long long ptr, const long long ptr1)
{
xmlNodePtr cur;
cur = (xmlNodePtr) ptr;
xmlAttrPtr attribute;
attribute = (xmlAttrPtr) ptr1;
if (cur == NULL || attribute == NULL) {
return NULL;
}
return xmlGetProp(cur, attribute -> name);
}
void SAX_HandlesCreate(startDocumentSAXFunc sd, endDocumentSAXFunc ed, startElementSAXFunc se, endElementSAXFunc ee,
charactersSAXFunc charsse, const char *file_name)
{
xmlSAXHandlerPtr handler = calloc(5, sizeof(xmlSAXHandler));
if (handler == NULL) {
return;
}
handler -> startDocument = sd;
handler -> endDocument = ed;
handler -> startElement = se;
handler -> endElement = ee;
handler -> characters = charsse;
xmlSAXUserParseMemory(handler, NULL, file_name, strlen(file_name));
xmlCleanupParser();
}
#define bottom_parser
#include "elfgcchack.h"