blob: 56a806f170f11e8c452271627b330017c368d267 [file] [log] [blame]
Georges-Henri Baron326a31d2012-06-28 12:05:09 +02001/*
Patrick Benavoli68a91282011-08-31 11:23:23 +02002 * INTEL CONFIDENTIAL
Georges-Henri Baroncec86c12012-09-04 17:30:28 +02003 * Copyright © 2013 Intel
Patrick Benavoli68a91282011-08-31 11:23:23 +02004 * Corporation All Rights Reserved.
Georges-Henri Baron326a31d2012-06-28 12:05:09 +02005 *
Patrick Benavoli68a91282011-08-31 11:23:23 +02006 * The source code contained or described herein and all documents related to
7 * the source code ("Material") are owned by Intel Corporation or its suppliers
8 * or licensors. Title to the Material remains with Intel Corporation or its
9 * suppliers and licensors. The Material contains trade secrets and proprietary
10 * and confidential information of Intel or its suppliers and licensors. The
11 * Material is protected by worldwide copyright and trade secret laws and
12 * treaty provisions. No part of the Material may be used, copied, reproduced,
13 * modified, published, uploaded, posted, transmitted, distributed, or
14 * disclosed in any way without Intel’s prior express written permission.
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020015 *
Patrick Benavoli68a91282011-08-31 11:23:23 +020016 * No license under any patent, copyright, trade secret or other intellectual
17 * property right is granted to or conferred upon you by disclosure or delivery
18 * of the Materials, either expressly, by implication, inducement, estoppel or
19 * otherwise. Any license under such intellectual property rights must be
20 * express and approved by Intel in writing.
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020021 *
Patrick Benavoli68a91282011-08-31 11:23:23 +020022 */
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020023
Patrick Benavoli68a91282011-08-31 11:23:23 +020024#pragma once
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020025#include "XmlDocSource.h"
26#include "XmlSerializingContext.h"
Patrick Benavoli68a91282011-08-31 11:23:23 +020027
Georges-Henri Baroncec86c12012-09-04 17:30:28 +020028/**
29 * The CXmlDocSink class defines how to use a CXmlDocSource.
30 * The interaction between the xml source and xml sink is defined
31 * in the process method of CXmlDocSink. One can subclass CXmlDocSink
32 * for different purpose by implementing the doProcess method and then
33 * use it with any existing implementation of CXmlDocSource.
34 */
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020035class CXmlDocSink
Patrick Benavoli68a91282011-08-31 11:23:23 +020036{
37public:
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020038 CXmlDocSink();
Patrick Benavoli68a91282011-08-31 11:23:23 +020039
Georges-Henri Baroncec86c12012-09-04 17:30:28 +020040 /**
41 * Method to be called to use an xmlDocSource.
42 * Any subclass of XmlDocSink must implement the doProcess
43 * method that will define how to use the xmlDocSource.
44 *
45 * @param[in] xmlDocSource a CXmlDocSource reference
46 * @param[in] serializingContext a CXmlSerializing Context reference
47 *
48 * @return true is there was no error during the processing of xmlDocSource
49 */
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020050 bool process(CXmlDocSource& xmlDocSource, CXmlSerializingContext& serializingContext);
Sebastien Gonzalved7e48442013-03-12 14:30:27 +010051 virtual ~CXmlDocSink() {}
Patrick Benavoli68a91282011-08-31 11:23:23 +020052
53private:
Georges-Henri Baroncec86c12012-09-04 17:30:28 +020054 /**
55 * Handle for subclasses to process the source.
56 * This method will define what to do with the xmlDocSource.
57 *
58 * @param[in] xmlDocSource a CXmlDocSource reference
59 * @param[in] serializingContext a CXmlSerializing Context reference
60 *
61 * @return true is there was no error during the processing of xmlDocSource
62 */
Georges-Henri Baron326a31d2012-06-28 12:05:09 +020063 virtual bool doProcess(CXmlDocSource& xmlDocSource, CXmlSerializingContext& serializingContext) = 0;
Patrick Benavoli68a91282011-08-31 11:23:23 +020064};