1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/lib/__builtins__/list.py Tue Aug 30 21:55:58 2016 +0200
1.3 @@ -0,0 +1,91 @@
1.4 +#!/usr/bin/env python
1.5 +
1.6 +"""
1.7 +List objects.
1.8 +
1.9 +Copyright (C) 2015 Paul Boddie <paul@boddie.org.uk>
1.10 +
1.11 +This program is free software; you can redistribute it and/or modify it under
1.12 +the terms of the GNU General Public License as published by the Free Software
1.13 +Foundation; either version 3 of the License, or (at your option) any later
1.14 +version.
1.15 +
1.16 +This program is distributed in the hope that it will be useful, but WITHOUT
1.17 +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
1.18 +FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
1.19 +details.
1.20 +
1.21 +You should have received a copy of the GNU General Public License along with
1.22 +this program. If not, see <http://www.gnu.org/licenses/>.
1.23 +"""
1.24 +
1.25 +from __builtins__.sequence import *
1.26 +
1.27 +class list(object):
1.28 +
1.29 + "Implementation of list."
1.30 +
1.31 + def __init__(self, args=None):
1.32 +
1.33 + "Initialise the list."
1.34 +
1.35 + if args is not None:
1.36 + self.extend(args)
1.37 +
1.38 + def __new__(self):
1.39 + # Reserve space for a fragment reference.
1.40 + self._elements = None
1.41 +
1.42 + def __getitem__(self, index):
1.43 +
1.44 + "Return the item or slice specified by 'index'."
1.45 +
1.46 + return _getitem(self, index)
1.47 +
1.48 + def __contains__(self, value): pass
1.49 + def __setitem__(self, index, value): pass
1.50 + def __delitem__(self, index): pass
1.51 +
1.52 + def __getslice__(self, start, end=None):
1.53 +
1.54 + "Return a slice starting from 'start', with the optional 'end'."
1.55 +
1.56 + return _getslice(self, start, end)
1.57 +
1.58 + def __setslice__(self, start, end, slice): pass
1.59 + def __delslice__(self, start, end): pass
1.60 + def append(self, value): pass
1.61 + def insert(self, i, value): pass
1.62 +
1.63 + def extend(self, iterable):
1.64 +
1.65 + "Extend the list with the contents of 'iterable'."
1.66 +
1.67 + for i in iterable:
1.68 + self.append(i)
1.69 +
1.70 + def pop(self): pass
1.71 + def reverse(self): pass
1.72 + def sort(self, cmp=None, key=None, reverse=0): pass
1.73 + def __len__(self): pass
1.74 + def __add__(self, other): pass
1.75 + def __iadd__(self, other): pass
1.76 + def __str__(self): pass
1.77 +
1.78 + def __bool__(self):
1.79 +
1.80 + "Lists are true if non-empty."
1.81 +
1.82 + return self.__len__() != 0
1.83 +
1.84 + def __iter__(self):
1.85 +
1.86 + "Return an iterator."
1.87 +
1.88 + return listiterator(self)
1.89 +
1.90 + # Special implementation methods.
1.91 +
1.92 + def __get_single_item__(self, index): pass
1.93 +
1.94 +# vim: tabstop=4 expandtab shiftwidth=4