/**********************************************************************************************
 * 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\MusicStore\Schema\MusicStore.xsd
 **********************************************************************************************/
#ifndef _MusicStoreLib_MusicStoreLib_CTrackTypeCol_h 
#define _MusicStoreLib_MusicStoreLib_CTrackTypeCol_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 MusicStoreLib
{
    class MusicStoreLib_DLL CTrackTypeCol : public MusicStoreLib::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:
        CTrackTypeCol(LPCTSTR lpctElementName, LPCTSTR lpctNamespaceUri, int minOccurs, int maxOccurs);
    public:
        MusicStoreLib::CTrackTypePtr Add();
        void Add(MusicStoreLib::CTrackType* pCls);
        void AddAt(int index, MusicStoreLib::CTrackType* pCls);
        
        MusicStoreLib::CTrackTypePtr Item(int index) const;
        void Remove(MusicStoreLib::CTrackType* pCls);

        typedef LtXmlLib15::CLtIterator<MusicStoreLib::CTrackType> iterator;
        typedef LtXmlLib15::CLtConstIterator<MusicStoreLib::CTrackType> 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 MusicStoreLib::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 (MusicStoreLib)

#endif // _MusicStoreLib_CTrackTypeCol_h