SDL_ScreenKeyboard compatibility for SDL2, updated mxml and jpeg libraries
This commit is contained in:
471
project/jni/mxml/src/mxml-get.c
Normal file
471
project/jni/mxml/src/mxml-get.c
Normal file
@@ -0,0 +1,471 @@
|
||||
/*
|
||||
* "$Id: mxml-get.c 427 2011-01-03 02:03:29Z mike $"
|
||||
*
|
||||
* Node get functions for Mini-XML, a small XML-like file parsing library.
|
||||
*
|
||||
* Copyright 2011 by Michael R Sweet.
|
||||
*
|
||||
* These coded instructions, statements, and computer programs are the
|
||||
* property of Michael R Sweet and are protected by Federal copyright
|
||||
* law. Distribution and use rights are outlined in the file "COPYING"
|
||||
* which should have been included with this file. If this file is
|
||||
* missing or damaged, see the license at:
|
||||
*
|
||||
* http://www.minixml.org/
|
||||
*
|
||||
* Contents:
|
||||
*
|
||||
* mxmlGetCDATA() - Get the value for a CDATA node.
|
||||
* mxmlGetCustom() - Get the value for a custom node.
|
||||
* mxmlGetElement() - Get the name for an element node.
|
||||
* mxmlGetFirstChild() - Get the first child of an element node.
|
||||
* mxmlGetInteger() - Get the integer value from the specified node or its
|
||||
* first child.
|
||||
* mxmlGetLastChild() - Get the last child of an element node.
|
||||
* mxmlGetNextSibling() - Get the next node for the current parent.
|
||||
* mxmlGetOpaque() - Get an opaque string value for a node or its first
|
||||
* child.
|
||||
* mxmlGetParent() - Get the parent node.
|
||||
* mxmlGetPrevSibling() - Get the previous node for the current parent.
|
||||
* mxmlGetReal() - Get the real value for a node or its first child.
|
||||
* mxmlGetText() - Get the text value for a node or its first child.
|
||||
* mxmlGetType() - Get the node type.
|
||||
* mxmlGetUserData() - Get the user data pointer for a node.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Include necessary headers...
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "mxml.h"
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetCDATA()' - Get the value for a CDATA node.
|
||||
*
|
||||
* @code NULL@ is returned if the node is not a CDATA element.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
const char * /* O - CDATA value or NULL */
|
||||
mxmlGetCDATA(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node || node->type != MXML_ELEMENT ||
|
||||
strncmp(node->value.element.name, "![CDATA[", 8))
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Return the text following the CDATA declaration...
|
||||
*/
|
||||
|
||||
return (node->value.element.name + 8);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetCustom()' - Get the value for a custom node.
|
||||
*
|
||||
* @code NULL@ is returned if the node (or its first child) is not a custom
|
||||
* value node.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
const void * /* O - Custom value or NULL */
|
||||
mxmlGetCustom(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Return the integer value...
|
||||
*/
|
||||
|
||||
if (node->type == MXML_CUSTOM)
|
||||
return (node->value.custom.data);
|
||||
else if (node->type == MXML_ELEMENT &&
|
||||
node->child &&
|
||||
node->child->type == MXML_CUSTOM)
|
||||
return (node->child->value.custom.data);
|
||||
else
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetElement()' - Get the name for an element node.
|
||||
*
|
||||
* @code NULL@ is returned if the node is not an element node.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
const char * /* O - Element name or NULL */
|
||||
mxmlGetElement(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node || node->type != MXML_ELEMENT)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Return the element name...
|
||||
*/
|
||||
|
||||
return (node->value.element.name);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetFirstChild()' - Get the first child of an element node.
|
||||
*
|
||||
* @code NULL@ is returned if the node is not an element node or if the node
|
||||
* has no children.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
mxml_node_t * /* O - First child or NULL */
|
||||
mxmlGetFirstChild(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node || node->type != MXML_ELEMENT)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Return the first child node...
|
||||
*/
|
||||
|
||||
return (node->child);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetInteger()' - Get the integer value from the specified node or its
|
||||
* first child.
|
||||
*
|
||||
* 0 is returned if the node (or its first child) is not an integer value node.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
int /* O - Integer value or 0 */
|
||||
mxmlGetInteger(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node)
|
||||
return (0);
|
||||
|
||||
/*
|
||||
* Return the integer value...
|
||||
*/
|
||||
|
||||
if (node->type == MXML_INTEGER)
|
||||
return (node->value.integer);
|
||||
else if (node->type == MXML_ELEMENT &&
|
||||
node->child &&
|
||||
node->child->type == MXML_INTEGER)
|
||||
return (node->child->value.integer);
|
||||
else
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetLastChild()' - Get the last child of an element node.
|
||||
*
|
||||
* @code NULL@ is returned if the node is not an element node or if the node
|
||||
* has no children.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
mxml_node_t * /* O - Last child or NULL */
|
||||
mxmlGetLastChild(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node || node->type != MXML_ELEMENT)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Return the node type...
|
||||
*/
|
||||
|
||||
return (node->last_child);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetNextSibling()' - Get the next node for the current parent.
|
||||
*
|
||||
* @code NULL@ is returned if this is the last child for the current parent.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
mxml_node_t *
|
||||
mxmlGetNextSibling(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Return the node type...
|
||||
*/
|
||||
|
||||
return (node->next);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetOpaque()' - Get an opaque string value for a node or its first child.
|
||||
*
|
||||
* @code NULL@ is returned if the node (or its first child) is not an opaque
|
||||
* value node.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
const char * /* O - Opaque string or NULL */
|
||||
mxmlGetOpaque(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Return the integer value...
|
||||
*/
|
||||
|
||||
if (node->type == MXML_OPAQUE)
|
||||
return (node->value.opaque);
|
||||
else if (node->type == MXML_ELEMENT &&
|
||||
node->child &&
|
||||
node->child->type == MXML_OPAQUE)
|
||||
return (node->child->value.opaque);
|
||||
else
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetParent()' - Get the parent node.
|
||||
*
|
||||
* @code NULL@ is returned for a root node.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
mxml_node_t * /* O - Parent node or NULL */
|
||||
mxmlGetParent(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Return the node type...
|
||||
*/
|
||||
|
||||
return (node->parent);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetPrevSibling()' - Get the previous node for the current parent.
|
||||
*
|
||||
* @code NULL@ is returned if this is the first child for the current parent.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
mxml_node_t * /* O - Previous node or NULL */
|
||||
mxmlGetPrevSibling(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Return the node type...
|
||||
*/
|
||||
|
||||
return (node->prev);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetReal()' - Get the real value for a node or its first child.
|
||||
*
|
||||
* 0.0 is returned if the node (or its first child) is not a real value node.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
double /* O - Real value or 0.0 */
|
||||
mxmlGetReal(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node)
|
||||
return (0.0);
|
||||
|
||||
/*
|
||||
* Return the integer value...
|
||||
*/
|
||||
|
||||
if (node->type == MXML_REAL)
|
||||
return (node->value.real);
|
||||
else if (node->type == MXML_ELEMENT &&
|
||||
node->child &&
|
||||
node->child->type == MXML_REAL)
|
||||
return (node->child->value.real);
|
||||
else
|
||||
return (0.0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetText()' - Get the text value for a node or its first child.
|
||||
*
|
||||
* @code NULL@ is returned if the node (or its first child) is not a text node.
|
||||
* The "whitespace" argument can be NULL.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
const char * /* O - Text string or NULL */
|
||||
mxmlGetText(mxml_node_t *node, /* I - Node to get */
|
||||
int *whitespace) /* O - 1 if string is preceded by whitespace, 0 otherwise */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node)
|
||||
{
|
||||
if (whitespace)
|
||||
*whitespace = 0;
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the integer value...
|
||||
*/
|
||||
|
||||
if (node->type == MXML_TEXT)
|
||||
{
|
||||
if (whitespace)
|
||||
*whitespace = node->value.text.whitespace;
|
||||
|
||||
return (node->value.text.string);
|
||||
}
|
||||
else if (node->type == MXML_ELEMENT &&
|
||||
node->child &&
|
||||
node->child->type == MXML_TEXT)
|
||||
{
|
||||
if (whitespace)
|
||||
*whitespace = node->child->value.text.whitespace;
|
||||
|
||||
return (node->child->value.text.string);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (whitespace)
|
||||
*whitespace = 0;
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetType()' - Get the node type.
|
||||
*
|
||||
* @code MXML_IGNORE@ is returned if "node" is @code NULL@.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
mxml_type_t /* O - Type of node */
|
||||
mxmlGetType(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node)
|
||||
return (MXML_IGNORE);
|
||||
|
||||
/*
|
||||
* Return the node type...
|
||||
*/
|
||||
|
||||
return (node->type);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'mxmlGetUserData()' - Get the user data pointer for a node.
|
||||
*
|
||||
* @since Mini-XML 2.7@
|
||||
*/
|
||||
|
||||
void * /* O - User data pointer */
|
||||
mxmlGetUserData(mxml_node_t *node) /* I - Node to get */
|
||||
{
|
||||
/*
|
||||
* Range check input...
|
||||
*/
|
||||
|
||||
if (!node)
|
||||
return (NULL);
|
||||
|
||||
/*
|
||||
* Return the user data pointer...
|
||||
*/
|
||||
|
||||
return (node->user_data);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* End of "$Id: mxml-get.c 427 2011-01-03 02:03:29Z mike $".
|
||||
*/
|
||||
Reference in New Issue
Block a user