/usr/include/singular/factory/templates/ftmpl_list.h is in libsingular4-dev-common 4.0.3+ds-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | /* emacs edit mode for this file is -*- C++ -*- */
#ifndef INCL_LIST_H
#define INCL_LIST_H
// #include <factory/factoryconf.h>
#ifndef NOSTREAMIO
#ifdef HAVE_IOSTREAM
#include <iostream>
#define OSTREAM std::ostream
#elif defined(HAVE_IOSTREAM_H)
#include <iostream.h>
#define OSTREAM ostream
#endif
#endif /* NOSTREAMIO */
template <class T>
class ListIterator;
template <class T>
class List;
#ifndef NOSTREAMIO
template <class T>
OSTREAM& operator<< ( OSTREAM &, const List<T> &);
#endif
template <class T>
class ListItem
{
private:
ListItem * next;
ListItem * prev;
T * item;
public:
ListItem( const ListItem<T>& );
ListItem( const T&, ListItem<T>*, ListItem<T>* );
ListItem( T* , ListItem<T>* , ListItem<T>* );
~ListItem();
ListItem<T>& operator= ( const ListItem<T>& );
ListItem<T>* getNext();
ListItem<T>* getPrev();
T& getItem();
#ifndef NOSTREAMIO
void print ( OSTREAM& );
#endif /* NOSTREAMIO */
friend class ListIterator<T>;
friend class List<T>;
};
template <class T>
class List
{
private:
ListItem<T> *first;
ListItem<T> *last;
int _length;
public:
List();
List( const List<T>& );
List( const T& );
~List();
List<T>& operator= ( const List<T>& );
void insert ( const T& );
void insert ( const T&, int (*cmpf)( const T&, const T& ) );
void insert ( const T&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
void append ( const T& );
int isEmpty() const;
int length() const;
T getFirst() const;
void removeFirst();
T getLast() const;
void removeLast();
void sort ( int (*) ( const T&, const T& ) );
#ifndef NOSTREAMIO
void print ( OSTREAM & ) const;
friend OSTREAM& operator<< <T>( OSTREAM & os, const List<T> & l );
#endif /* NOSTREAMIO */
friend class ListIterator<T>;
};
#ifndef NOSTREAMIO
template <class T>
OSTREAM& operator<< ( OSTREAM & os, const List<T> & l );
#endif /* NOSTREAMIO */
template <class T>
class ListIterator {
private:
List<T> *theList;
ListItem<T> *current;
public:
ListIterator();
ListIterator( const ListIterator<T>& );
ListIterator( const List<T>& );
~ListIterator();
ListIterator<T>& operator = ( const ListIterator<T>& );
ListIterator<T>& operator = ( const List<T>& );
T& getItem() const;
int hasItem();
void operator++();
void operator--();
void operator++( int );
void operator--( int );
void firstItem();
void lastItem();
void insert( const T& );
void append( const T& );
void remove( int moveright );
};
template <class T>
int operator== (const List<T>&, const List<T>& );
template <class T>
List<T> Union ( const List<T>&, const List<T>& );
template <class T>
List<T> Difference ( const List<T>&, const List<T>& );
template <class T>
List<T> Union ( const List<T> &, const List<T> & , int (*ecmpf)( const T&, const T& ));
template <class T>
List<T> Difference ( const List<T> &, const List<T> & , int (*ecmpf)( const T&, const T& ));
template <class T>
List<T> Difference ( const List<T> & F, const T & G);
template <class T>
List<T> Difference ( const List<T> & F, const T & G, int (*ecmpf)( const T&, const T& ));
template <class T>
List<T> Union ( const List<T>&, const List<T>&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
template <class T>
T prod ( const List<T>& );
template <class T>
bool find (const List<T>&, const T& t);
template <class T>
bool find (const List<T> & F, const T& t, int (*ecmpf)( const T&, const T& ));
#endif /* ! INCL_LIST_H */
|