summaryrefslogtreecommitdiffstats
ModeNameSize
-rw-r--r--.gitreview94logstatsplain
-rw-r--r--LICENSE908logstatsplain
-rw-r--r--LICENSE.GPL-2.0-only15394logstatsplain
-rw-r--r--LICENSE.MIT1286logstatsplain
-rw-r--r--README-AGL.md1249logstatsplain
l---------README.md -> meta-agl.md11logstatsplain
-rwxr-xr-xagl-layers-overview.md922logstatsplain
d---------docs85logstatsplain
d---------meta-agl-bsp759logstatsplain
d---------meta-agl-core-test103logstatsplain
d---------meta-agl-core710logstatsplain
d---------meta-agl-ic34logstatsplain
d---------meta-agl-ivi34logstatsplain
-rwxr-xr-xmeta-agl.md3801logstatsplain
d---------meta-app-framework676logstatsplain
d---------meta-netboot336logstatsplain
d---------meta-pipewire259logstatsplain
d---------scripts186logstatsplain
d---------templates99logstatsplain
eral.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
/*
 * Video On Demand Samples
 *
 * Copyright (C) 2015 Microchip Technology Germany II GmbH & Co. KG
 *
 * 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.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * You may also obtain this software under a propriety license from Microchip.
 * Please contact Microchip for further information.
 *
 */

/*----------------------------------------------------------*/
/*! \file
 *  \brief  This file contains the CXml class.
 */
/*----------------------------------------------------------*/
#ifndef _XML_H_
#define _XML_H_

#include "Types.h"
#include <libxml/tree.h>
#include <libxml/parser.h>


#define XML_DEFAULT_VALUE_LEN   255

/*----------------------------------------------------------*/
/*! \brief Generic class to read XML files. It does not implement a concrete use case.
 */
/*----------------------------------------------------------*/
class CXml
{
    xmlDoc *m_Doc;
    xmlNode *m_Node;
    bool m_bDocOpened;
protected:
    static int ConvertToInt( xmlChar *xString );

public:
    /*----------------------------------------------------------*/
    /*! \brief construct a XML document from a file name
     */
    /*----------------------------------------------------------*/
    CXml( const char *szFile );


    /*----------------------------------------------------------*/
    /*! \brief construct a XML document from a zero terminated string in the memory.
     */
    /*----------------------------------------------------------*/
    CXml( const char *szBuffer, uint32_t nBufferLen );


    /*----------------------------------------------------------*/
    /*! \brief construct a XML document from a given node
     */
    /*----------------------------------------------------------*/
    CXml( CXml &Node );



    /*----------------------------------------------------------*/
    /*! \brief construct a XML document from a file name
     */
    /*----------------------------------------------------------*/
    ~CXml();



    /*----------------------------------------------------------*/
    /*! \brief gets top node inside root of XML document
     *
     * \return true, if successful
     */
    /*----------------------------------------------------------*/
    bool SetToTopNode();



    /*----------------------------------------------------------*/
    /*! \brief find first child node
     *
     * \return true, if child node was found
     */
    /*----------------------------------------------------------*/
    bool FindFirstChildNode();




    /*----------------------------------------------------------*/
    /*! \brief find next node on same level
     *
     * \return true, if node was found
     */
    /*----------------------------------------------------------*/
    bool FindNextNode();




    /*----------------------------------------------------------*/
    /*! \brief find a XML node with a given tag
     *
     * \param szTag - tag looking for
     *
     * \return XML node
     */
    /*----------------------------------------------------------*/
    bool FindNode( const xmlChar *szTag );





    /*----------------------------------------------------------*/
    /*! \brief searches a node, which has a child node with a
     *         given value
     *
     * \param szNodeTag - tag of nodes which are included in search
     * \param szValueTag - tag of value inside node
     * \param szValue - value looked for
     *
     * \return XML true if found
     */
    /*----------------------------------------------------------*/
    bool FindNodeWithValue( const xmlChar *szNodeTag, const xmlChar *szValueTag, const xmlChar *szValue );



    /*----------------------------------------------------------*/
    /*! \brief searches node, which has a child node with a
     *         given integer value
     *
     * \param szNodeTag - tag of nodes which are included in search
     * \param szValueTag - tag of value inside node
     * \param szValue - value looked for
     *
     * \return true if found
     */
    /*----------------------------------------------------------*/
    bool FindNodeWithValueInt( const xmlChar *szNodeTag, const xmlChar *szValueTag, int nValue );

    /*----------------------------------------------------------*/
    /*! \brief get node's child value as string
     *
     * \param szTag - tag of the value inside the node
     *
     * \return value as string if found, otherwise NULL
     */
    /*----------------------------------------------------------*/
    bool GetChildValue( const xmlChar *szTag, xmlChar *szValue, int nMaxLen = XML_DEFAULT_VALUE_LEN );


    /*----------------------------------------------------------*/
    /*! \brief get node's child value as int
     *
     * \param szTag - tag of the value inside the node
     * \param nErr - value returned in case of an error
     *
     * \return value as int
     */
    /*----------------------------------------------------------*/
    bool GetChildValueInt( const xmlChar *szTag, int &nValue );
};

#endif