libstdc++
std::__debug::list< _Tp, _Allocator > Class Template Reference

#include <list>

Inheritance diagram for std::__debug::list< _Tp, _Allocator >:
[legend]

Public Types

typedef _Allocator allocator_type
 
typedef __gnu_debug::_Safe_iterator< _Base_const_iterator, listconst_iterator
 
typedef _Base::const_pointer const_pointer
 
typedef _Base::const_reference const_reference
 
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 
typedef _Base::difference_type difference_type
 
typedef __gnu_debug::_Safe_iterator< _Base_iterator, listiterator
 
typedef _Base::pointer pointer
 
typedef _Base::reference reference
 
typedef std::reverse_iterator< iteratorreverse_iterator
 
typedef _Base::size_type size_type
 
typedef _Tp value_type
 

Public Member Functions

 list (_Base_ref __x)
 
template<class _InputIterator, typename = std::_RequireInputIter<_InputIterator>>
 list (_InputIterator __first, _InputIterator __last, const _Allocator &__a=_Allocator())
 
 list (const _Allocator &__a) noexcept
 
 list (const list &)=default
 
 list (const list &__x, const __type_identity_t< allocator_type > &__a)
 
 list (initializer_list< value_type > __l, const allocator_type &__a=allocator_type())
 
 list (list &&)=default
 
 list (list &&__x, const __type_identity_t< allocator_type > &__a) noexcept(std::is_nothrow_constructible< _Base, _Base, const allocator_type & >::value)
 
 list (size_type __n, const __type_identity_t< _Tp > &__value, const _Allocator &__a=_Allocator())
 
 list (size_type __n, const allocator_type &__a=allocator_type())
 
const _Base_M_base () const noexcept
 
_Base_M_base () noexcept
 
template<class _InputIterator, typename = std::_RequireInputIter<_InputIterator>>
void assign (_InputIterator __first, _InputIterator __last)
 
void assign (initializer_list< value_type > __l)
 
void assign (size_type __n, const _Tp &__t)
 
const_reference back () const noexcept
 
reference back () noexcept
 
const_iterator begin () const noexcept
 
iterator begin () noexcept
 
const_iterator cbegin () const noexcept
 
const_iterator cend () const noexcept
 
void clear () noexcept
 
const_reverse_iterator crbegin () const noexcept
 
const_reverse_iterator crend () const noexcept
 
template<typename... _Args>
iterator emplace (const_iterator __position, _Args &&... __args)
 
const_iterator end () const noexcept
 
iterator end () noexcept
 
iterator erase (const_iterator __first, const_iterator __last) noexcept
 
iterator erase (const_iterator __position) noexcept
 
const_reference front () const noexcept
 
reference front () noexcept
 
iterator insert (const_iterator __p, initializer_list< value_type > __l)
 
template<class _InputIterator, typename = std::_RequireInputIter<_InputIterator>>
iterator insert (const_iterator __position, _InputIterator __first, _InputIterator __last)
 
iterator insert (const_iterator __position, _Tp &&__x)
 
iterator insert (const_iterator __position, const _Tp &__x)
 
iterator insert (const_iterator __position, size_type __n, const _Tp &__x)
 
void merge (list &&__x)
 
template<class _Compare>
void merge (list &&__x, _Compare __comp)
 
void merge (list &__x)
 
template<typename _Compare>
void merge (list &__x, _Compare __comp)
 
listoperator= (const list &)=default
 
listoperator= (initializer_list< value_type > __l)
 
listoperator= (list &&)=default
 
void pop_back () noexcept
 
void pop_front () noexcept
 
const_reverse_iterator rbegin () const noexcept
 
reverse_iterator rbegin () noexcept
 
__remove_return_type remove (const _Tp &__value)
 
template<class _Predicate>
__remove_return_type remove_if (_Predicate __pred)
 
const_reverse_iterator rend () const noexcept
 
reverse_iterator rend () noexcept
 
void resize (size_type __sz)
 
void resize (size_type __sz, const _Tp &__c)
 
void sort ()
 
template<typename _StrictWeakOrdering>
void sort (_StrictWeakOrdering __pred)
 
void splice (const_iterator __position, list &&__x) noexcept
 
void splice (const_iterator __position, list &&__x, const_iterator __first, const_iterator __last) noexcept
 
void splice (const_iterator __position, list &&__x, const_iterator __i) noexcept
 
void splice (const_iterator __position, list &__x) noexcept
 
void splice (const_iterator __position, list &__x, const_iterator __first, const_iterator __last) noexcept
 
void splice (const_iterator __position, list &__x, const_iterator __i) noexcept
 
void swap (list &__x) noexcept(/*conditional */)
 
__remove_return_type unique ()
 
template<class _BinaryPredicate>
__remove_return_type unique (_BinaryPredicate __binary_pred)
 

Protected Member Functions

constexpr void _M_swap (const _Safe_container &__x) const noexcept
 

Friends

template<typename _ItT, typename _SeqT, typename _CatT>
class ::__gnu_debug::_Safe_iterator
 

Detailed Description

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
class std::__debug::list< _Tp, _Allocator >

Class std::list with safety/checking/debug instrumentation.

Definition at line 52 of file debug/list.

Member Typedef Documentation

◆ allocator_type

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef _Allocator std::__debug::list< _Tp, _Allocator >::allocator_type

Definition at line 93 of file debug/list.

◆ const_iterator

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, list> std::__debug::list< _Tp, _Allocator >::const_iterator

Definition at line 87 of file debug/list.

◆ const_pointer

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef _Base::const_pointer std::__debug::list< _Tp, _Allocator >::const_pointer

Definition at line 95 of file debug/list.

◆ const_reference

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef _Base::const_reference std::__debug::list< _Tp, _Allocator >::const_reference

Definition at line 82 of file debug/list.

◆ const_reverse_iterator

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef std::reverse_iterator<const_iterator> std::__debug::list< _Tp, _Allocator >::const_reverse_iterator

Definition at line 97 of file debug/list.

◆ difference_type

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef _Base::difference_type std::__debug::list< _Tp, _Allocator >::difference_type

Definition at line 90 of file debug/list.

◆ iterator

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef __gnu_debug::_Safe_iterator<_Base_iterator, list> std::__debug::list< _Tp, _Allocator >::iterator

Definition at line 85 of file debug/list.

◆ pointer

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef _Base::pointer std::__debug::list< _Tp, _Allocator >::pointer

Definition at line 94 of file debug/list.

◆ reference

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef _Base::reference std::__debug::list< _Tp, _Allocator >::reference

Definition at line 81 of file debug/list.

◆ reverse_iterator

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef std::reverse_iterator<iterator> std::__debug::list< _Tp, _Allocator >::reverse_iterator

Definition at line 96 of file debug/list.

◆ size_type

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef _Base::size_type std::__debug::list< _Tp, _Allocator >::size_type

Definition at line 89 of file debug/list.

◆ value_type

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
typedef _Tp std::__debug::list< _Tp, _Allocator >::value_type

Definition at line 92 of file debug/list.

Constructor & Destructor Documentation

◆ list() [1/8]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
std::__debug::list< _Tp, _Allocator >::list ( initializer_list< value_type > __l,
const allocator_type & __a = allocator_type() )
inline

Definition at line 114 of file debug/list.

◆ list() [2/8]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
std::__debug::list< _Tp, _Allocator >::list ( const list< _Tp, _Allocator > & __x,
const __type_identity_t< allocator_type > & __a )
inline

Definition at line 120 of file debug/list.

◆ list() [3/8]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
std::__debug::list< _Tp, _Allocator >::list ( list< _Tp, _Allocator > && __x,
const __type_identity_t< allocator_type > & __a )
inlinenoexcept

Definition at line 123 of file debug/list.

◆ list() [4/8]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
std::__debug::list< _Tp, _Allocator >::list ( const _Allocator & __a)
inlineexplicitnoexcept

Definition at line 132 of file debug/list.

◆ list() [5/8]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
std::__debug::list< _Tp, _Allocator >::list ( size_type __n,
const allocator_type & __a = allocator_type() )
inlineexplicit

Definition at line 137 of file debug/list.

◆ list() [6/8]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
std::__debug::list< _Tp, _Allocator >::list ( size_type __n,
const __type_identity_t< _Tp > & __value,
const _Allocator & __a = _Allocator() )
inline

Definition at line 140 of file debug/list.

◆ list() [7/8]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
template<class _InputIterator, typename = std::_RequireInputIter<_InputIterator>>
std::__debug::list< _Tp, _Allocator >::list ( _InputIterator __first,
_InputIterator __last,
const _Allocator & __a = _Allocator() )
inline

Definition at line 156 of file debug/list.

◆ list() [8/8]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
std::__debug::list< _Tp, _Allocator >::list ( _Base_ref __x)
inline

Definition at line 170 of file debug/list.

Member Function Documentation

◆ _M_base() [1/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
const _Base & std::__debug::list< _Tp, _Allocator >::_M_base ( ) const
inlinenoexcept

Definition at line 959 of file debug/list.

◆ _M_base() [2/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
_Base & std::__debug::list< _Tp, _Allocator >::_M_base ( )
inlinenoexcept

Definition at line 956 of file debug/list.

◆ _M_swap()

template<typename _SafeContainer, typename _Alloc, template< typename > class _SafeBase, bool _IsCxx11AllocatorAware = true>
void __gnu_debug::_Safe_container< _SafeContainer, _Alloc, _SafeBase, _IsCxx11AllocatorAware >::_M_swap ( const _Safe_container< _SafeContainer, _Alloc, _SafeBase, _IsCxx11AllocatorAware > & __x) const
inlineconstexprprotectednoexceptinherited

Definition at line 136 of file safe_container.h.

◆ assign() [1/3]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
template<class _InputIterator, typename = std::_RequireInputIter<_InputIterator>>
void std::__debug::list< _Tp, _Allocator >::assign ( _InputIterator __first,
_InputIterator __last )
inline

Definition at line 203 of file debug/list.

◆ assign() [2/3]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::assign ( initializer_list< value_type > __l)
inline

Definition at line 189 of file debug/list.

◆ assign() [3/3]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::assign ( size_type __n,
const _Tp & __t )
inline

Definition at line 244 of file debug/list.

◆ back() [1/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
const_reference std::__debug::list< _Tp, _Allocator >::back ( ) const
inlinenodiscardnoexcept

Definition at line 427 of file debug/list.

◆ back() [2/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
reference std::__debug::list< _Tp, _Allocator >::back ( )
inlinenodiscardnoexcept

Definition at line 419 of file debug/list.

◆ begin() [1/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
const_iterator std::__debug::list< _Tp, _Allocator >::begin ( ) const
inlinenodiscardnoexcept

Definition at line 260 of file debug/list.

◆ begin() [2/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
iterator std::__debug::list< _Tp, _Allocator >::begin ( )
inlinenodiscardnoexcept

Definition at line 255 of file debug/list.

◆ cbegin()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
const_iterator std::__debug::list< _Tp, _Allocator >::cbegin ( ) const
inlinenoexcept

Definition at line 296 of file debug/list.

◆ cend()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
const_iterator std::__debug::list< _Tp, _Allocator >::cend ( ) const
inlinenoexcept

Definition at line 301 of file debug/list.

◆ clear()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::clear ( )
inlinenoexcept

Definition at line 622 of file debug/list.

◆ crbegin()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
const_reverse_iterator std::__debug::list< _Tp, _Allocator >::crbegin ( ) const
inlinenoexcept

Definition at line 306 of file debug/list.

◆ crend()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
const_reverse_iterator std::__debug::list< _Tp, _Allocator >::crend ( ) const
inlinenoexcept

Definition at line 311 of file debug/list.

◆ emplace()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
template<typename... _Args>
iterator std::__debug::list< _Tp, _Allocator >::emplace ( const_iterator __position,
_Args &&... __args )
inline

Definition at line 470 of file debug/list.

◆ end() [1/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
const_iterator std::__debug::list< _Tp, _Allocator >::end ( ) const
inlinenodiscardnoexcept

Definition at line 270 of file debug/list.

◆ end() [2/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
iterator std::__debug::list< _Tp, _Allocator >::end ( )
inlinenodiscardnoexcept

Definition at line 265 of file debug/list.

◆ erase() [1/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
iterator std::__debug::list< _Tp, _Allocator >::erase ( const_iterator __first,
const_iterator __last )
inlinenoexcept

Definition at line 592 of file debug/list.

◆ erase() [2/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
iterator std::__debug::list< _Tp, _Allocator >::erase ( const_iterator __position)
inlinenoexcept

Definition at line 581 of file debug/list.

◆ front() [1/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
const_reference std::__debug::list< _Tp, _Allocator >::front ( ) const
inlinenodiscardnoexcept

Definition at line 411 of file debug/list.

◆ front() [2/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
reference std::__debug::list< _Tp, _Allocator >::front ( )
inlinenodiscardnoexcept

Definition at line 403 of file debug/list.

◆ insert() [1/5]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
iterator std::__debug::list< _Tp, _Allocator >::insert ( const_iterator __p,
initializer_list< value_type > __l )
inline

Definition at line 495 of file debug/list.

◆ insert() [2/5]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
template<class _InputIterator, typename = std::_RequireInputIter<_InputIterator>>
iterator std::__debug::list< _Tp, _Allocator >::insert ( const_iterator __position,
_InputIterator __first,
_InputIterator __last )
inline

Definition at line 522 of file debug/list.

◆ insert() [3/5]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
iterator std::__debug::list< _Tp, _Allocator >::insert ( const_iterator __position,
_Tp && __x )
inline

Definition at line 491 of file debug/list.

◆ insert() [4/5]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
iterator std::__debug::list< _Tp, _Allocator >::insert ( const_iterator __position,
const _Tp & __x )
inline

Definition at line 480 of file debug/list.

◆ insert() [5/5]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
iterator std::__debug::list< _Tp, _Allocator >::insert ( const_iterator __position,
size_type __n,
const _Tp & __x )
inline

Definition at line 504 of file debug/list.

◆ merge() [1/4]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::merge ( list< _Tp, _Allocator > && __x)
inline

Definition at line 896 of file debug/list.

◆ merge() [2/4]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
template<class _Compare>
void std::__debug::list< _Tp, _Allocator >::merge ( list< _Tp, _Allocator > && __x,
_Compare __comp )
inline

Definition at line 921 of file debug/list.

◆ merge() [3/4]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::merge ( list< _Tp, _Allocator > & __x)
inline

Definition at line 914 of file debug/list.

◆ merge() [4/4]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
template<typename _Compare>
void std::__debug::list< _Tp, _Allocator >::merge ( list< _Tp, _Allocator > & __x,
_Compare __comp )
inline

Definition at line 942 of file debug/list.

◆ operator=()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
list & std::__debug::list< _Tp, _Allocator >::operator= ( initializer_list< value_type > __l)
inline

Definition at line 181 of file debug/list.

◆ pop_back()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::pop_back ( )
inlinenoexcept

Definition at line 460 of file debug/list.

◆ pop_front()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::pop_front ( )
inlinenoexcept

Definition at line 446 of file debug/list.

◆ rbegin() [1/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
const_reverse_iterator std::__debug::list< _Tp, _Allocator >::rbegin ( ) const
inlinenodiscardnoexcept

Definition at line 280 of file debug/list.

◆ rbegin() [2/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
reverse_iterator std::__debug::list< _Tp, _Allocator >::rbegin ( )
inlinenodiscardnoexcept

Definition at line 275 of file debug/list.

◆ remove()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
__remove_return_type std::__debug::list< _Tp, _Allocator >::remove ( const _Tp & __value)
inline

Definition at line 745 of file debug/list.

◆ remove_if()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
template<class _Predicate>
__remove_return_type std::__debug::list< _Tp, _Allocator >::remove_if ( _Predicate __pred)
inline

Definition at line 784 of file debug/list.

◆ rend() [1/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
const_reverse_iterator std::__debug::list< _Tp, _Allocator >::rend ( ) const
inlinenodiscardnoexcept

Definition at line 290 of file debug/list.

◆ rend() [2/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
reverse_iterator std::__debug::list< _Tp, _Allocator >::rend ( )
inlinenodiscardnoexcept

Definition at line 285 of file debug/list.

◆ resize() [1/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::resize ( size_type __sz)
inline

Definition at line 322 of file debug/list.

◆ resize() [2/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::resize ( size_type __sz,
const _Tp & __c )
inline

Definition at line 348 of file debug/list.

◆ sort() [1/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::sort ( )
inline

Definition at line 947 of file debug/list.

◆ sort() [2/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
template<typename _StrictWeakOrdering>
void std::__debug::list< _Tp, _Allocator >::sort ( _StrictWeakOrdering __pred)
inline

Definition at line 951 of file debug/list.

◆ splice() [1/6]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::splice ( const_iterator __position,
list< _Tp, _Allocator > && __x )
inlinenoexcept

Definition at line 631 of file debug/list.

◆ splice() [2/6]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::splice ( const_iterator __position,
list< _Tp, _Allocator > && __x,
const_iterator __first,
const_iterator __last )
inlinenoexcept

Definition at line 683 of file debug/list.

◆ splice() [3/6]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::splice ( const_iterator __position,
list< _Tp, _Allocator > && __x,
const_iterator __i )
inlinenoexcept

Definition at line 651 of file debug/list.

◆ splice() [4/6]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::splice ( const_iterator __position,
list< _Tp, _Allocator > & __x )
inlinenoexcept

Definition at line 645 of file debug/list.

◆ splice() [5/6]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::splice ( const_iterator __position,
list< _Tp, _Allocator > & __x,
const_iterator __first,
const_iterator __last )
inlinenoexcept

Definition at line 725 of file debug/list.

◆ splice() [6/6]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::splice ( const_iterator __position,
list< _Tp, _Allocator > & __x,
const_iterator __i )
inlinenoexcept

Definition at line 677 of file debug/list.

◆ swap()

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
void std::__debug::list< _Tp, _Allocator >::swap ( list< _Tp, _Allocator > & __x)
inlinenoexcept

Definition at line 614 of file debug/list.

◆ unique() [1/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
__remove_return_type std::__debug::list< _Tp, _Allocator >::unique ( )
inline

Definition at line 818 of file debug/list.

◆ unique() [2/2]

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
template<class _BinaryPredicate>
__remove_return_type std::__debug::list< _Tp, _Allocator >::unique ( _BinaryPredicate __binary_pred)
inline

Definition at line 855 of file debug/list.

Friends And Related Symbol Documentation

◆ ::__gnu_debug::_Safe_iterator

template<typename _Tp, typename _Allocator = std::allocator<_Tp>>
template<typename _ItT, typename _SeqT, typename _CatT>
friend class ::__gnu_debug::_Safe_iterator
friend

Definition at line 68 of file debug/list.


The documentation for this class was generated from the following file: