/**********************************************************************************************
 * Copyright (c) 2001-2017 Liquid Technologies Limited. All rights reserved.
 * See www.liquid-technologies.com for product details.
 *
 * Please see products End User License Agreement for distribution permissions.
 *
 * WARNING: THIS FILE IS GENERATED
 * Changes made outside of ##HAND_CODED_BLOCK_START blocks will be overwritten
 *
 * Generation  :  by Liquid XML Data Binder 15.0.1.7161
 * Using Schema: D:\Development2017\Liquid\Tools\DataBindingSamples\Samples\SimpleHierarchy\Schema\SimpleHierarchy.xsd
 **********************************************************************************************/
#ifndef _SimpleHierarchyLib_SimpleHierarchyLib_CVouchersCol_h 
#define _SimpleHierarchyLib_SimpleHierarchyLib_CVouchersCol_h 

// ##HAND_CODED_BLOCK_START ID="Additional Includes"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS

// Add Additional Includes here...

// ##HAND_CODED_BLOCK_END ID="Additional Includes"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS

namespace SimpleHierarchyLib
{
    class SimpleHierarchyLib_DLL CVouchersCol : public SimpleHierarchyLib::CXmlCollectionCommonBase, CInstanceMonitor
// ##HAND_CODED_BLOCK_START ID="Additional Base Classes"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS
// Add Additional base classes here...
// ##HAND_CODED_BLOCK_END ID="Additional Base Classes"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS
    {
    protected:
        CVouchersCol(LPCTSTR lpctElementName, LPCTSTR lpctNamespaceUri, int minOccurs, int maxOccurs);
    public:
        SimpleHierarchyLib::CVouchersPtr Add();
        void Add(SimpleHierarchyLib::CVouchers* pCls);
        void AddAt(int index, SimpleHierarchyLib::CVouchers* pCls);
        
        SimpleHierarchyLib::CVouchersPtr Item(int index) const;
        void Remove(SimpleHierarchyLib::CVouchers* pCls);

        typedef LtXmlLib15::CLtIterator<SimpleHierarchyLib::CVouchers> iterator;
        typedef LtXmlLib15::CLtConstIterator<SimpleHierarchyLib::CVouchers> const_iterator;

        iterator begin();
        iterator end();
    
    protected:
        virtual void ToXml_Int( LtXmlLib15::CXmlWriter* pXmlOut, bool bRegisterNamespaces, LPCTSTR lpctNamespaceUri, const LtXmlLib15::CXmlSerializationContext& context, bool isOptionalChoice) const;
        virtual LtXmlLib15::CXmlElement* FromXml_Int( LtXmlLib15::CXmlElement* pXmlParent, LtXmlLib15::CXmlElement* pXmlChild, const LtXmlLib15::CXmlSerializationContext& context, bool isOptionalChoice);
        friend class SimpleHierarchyLib::CClassFactory;

// ##HAND_CODED_BLOCK_START ID="Additional Methods"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS

// Add Additional Methods here...

// ##HAND_CODED_BLOCK_END ID="Additional Methods"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS
    };
}; // end namespace (SimpleHierarchyLib)

#endif // _SimpleHierarchyLib_CVouchersCol_h