// DO NOT EDIT: this file is automagically generated by FILL.
//
// The SIP interface definition for %(VECTOR)s.
//
// Copyright (C) 2004 Gerard Vermeulen
//
// This file is part of PyQwt3D.
//
// -- LICENSE --
//
// PyQwt3D 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.
//
// PyQwt3D 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 PyQwt3D; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
//
// In addition, as a special exception, Gerard Vermeulen gives permission to
// link PyQwt3D dynamically with commercial, non-commercial or educational
// versions of Qt, PyQt and sip, and distribute PyQwt in this form, provided
// that equally powerful versions of Qt, PyQt and sip have been released under
// the terms of the GNU General Public License.
//
// If PyQwt3D is dynamically linked with commercial, non-commercial or
// educational versions of Qt, PyQt and sip, PyQwt3D becomes a free plug-in for
// a non-free program.
//
// -- LICENSE --


class %(VECTOR)s
{

%%TypeHeaderCode%(HEAD)s
%%End // %%TypeHeaderCode

public:
    %(VECTOR)s();
    %(VECTOR)s(size_type);
    %(VECTOR)s(size_type, const %(ITEM)s &);
    %(VECTOR)s(const %(VECTOR)s &);

    size_type capacity() const;
    void clear();
    bool empty() const;
    %(ITEM)s & back();
    %(ITEM)s & front();
    size_type max_size() const;
    void pop_back();
    void push_back(const %(ITEM)s &);
    void reserve(size_type);
    void resize(size_type, const %(ITEM)s & = %(ITEM)s());
    size_type size() const;
    void swap(%(VECTOR)s &);

    %(ITEM)s & __getitem__(int);
%%MethodCode
    int len = sipCpp -> size();
    
    if (0 > (a0 = sipConvertFromSequenceIndex(a0, len)))
        sipIsErr = 1;
    else
        sipRes = &(*sipCpp)[a0];
%%End

    int __len__() const;
%%MethodCode
    sipRes = sipCpp -> size();
%%End

    void __setitem__(int, const %(ITEM)s &);
%%MethodCode
    int len = sipCpp -> size();

    if (0 > (a0 = sipConvertFromSequenceIndex(a0, len)))
        sipIsErr = 1;
    else
        (*sipCpp)[a0] = *a1;
%%End

    void __setitem__(SIP_PYSLICE, const %(VECTOR)s &);
%%MethodCode
    int len = sipCpp -> size();
    int start, stop, step, slicelength;

    if (0 > sipConvertFromSliceObject(a0, len,
                                      &start, &stop, &step, &slicelength))
        sipIsErr = 1;
    else {
        int vlen = a1 -> size();

        if (vlen != slicelength) {
            sipBadLengthForSlice(vlen, slicelength);
            sipIsErr = 1;
        } else {
            %(VECTOR)s::const_iterator it = a1 -> begin();

            for (int i = 0; i < slicelength; ++i) {
                (*sipCpp)[start] = *it;
                start += step;
                ++it;
            }
        }
    }
%%End

}; // class %(VECTOR)s


// Local Variables:
// mode: C++
// c-file-style: "stroustrup"
// indent-tabs-mode: nil
// End:
