NumeRe v1.1.4
NumeRe: Framework für Numerische Rechnungen
date::zoned_time< Duration, TimeZonePtr > Class Template Reference

#include <tz.h>

Collaboration diagram for date::zoned_time< Duration, TimeZonePtr >:

Public Types

using duration = typename std::common_type< Duration, std::chrono::seconds >::type
 

Public Member Functions

template<class T = TimeZonePtr, class = decltype(zoned_traits<T>::default_zone())>
 zoned_time ()
 
template<class T = TimeZonePtr, class = decltype(zoned_traits<T>::default_zone())>
 zoned_time (const sys_time< Duration > &st)
 
 zoned_time (TimeZonePtr z)
 
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())) >::value, ::type >
 zoned_time (const std::string &name)
 
template<class Duration2 , class = typename std::enable_if < std::is_convertible<sys_time<Duration2>, sys_time<Duration>>::value >::type>
 zoned_time (const zoned_time< Duration2, TimeZonePtr > &zt) NOEXCEPT
 
 zoned_time (TimeZonePtr z, const sys_time< Duration > &st)
 
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible < decltype(std::declval<T&>()->to_sys(local_time<Duration>{})), sys_time<duration> >::value, ::type >
 zoned_time (TimeZonePtr z, const local_time< Duration > &tp)
 
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible < decltype(std::declval<T&>()->to_sys(local_time<Duration>{}, choose::earliest)), sys_time<duration> >::value, ::type >
 zoned_time (TimeZonePtr z, const local_time< Duration > &tp, choose c)
 
template<class Duration2 , class TimeZonePtr2 , class = typename std::enable_if < std::is_convertible<sys_time<Duration2>, sys_time<Duration>>::value >::type>
 zoned_time (TimeZonePtr z, const zoned_time< Duration2, TimeZonePtr2 > &zt)
 
template<class Duration2 , class TimeZonePtr2 , class = typename std::enable_if < std::is_convertible<sys_time<Duration2>, sys_time<Duration>>::value >::type>
 zoned_time (TimeZonePtr z, const zoned_time< Duration2, TimeZonePtr2 > &zt, choose)
 
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), sys_time<Duration> >::value, ::type >
 zoned_time (const std::string &name, const sys_time< Duration > &st)
 
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), sys_time<Duration> >::value, ::type >
 zoned_time (const char *name, const sys_time< Duration > &st)
 
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), local_time<Duration> >::value, ::type >
 zoned_time (const std::string &name, const local_time< Duration > &tp)
 
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), local_time<Duration> >::value, ::type >
 zoned_time (const char *name, const local_time< Duration > &tp)
 
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), local_time<Duration>, choose >::value, ::type >
 zoned_time (const std::string &name, const local_time< Duration > &tp, choose c)
 
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), local_time<Duration>, choose >::value, ::type >
 zoned_time (const char *name, const local_time< Duration > &tp, choose c)
 
template<class Duration2 , class TimeZonePtr2 , class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible<sys_time<Duration2>, sys_time<Duration>>::value && std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), zoned_time >::value, ::type >
 zoned_time (const std::string &name, const zoned_time< Duration2, TimeZonePtr2 > &zt)
 
template<class Duration2 , class TimeZonePtr2 , class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible<sys_time<Duration2>, sys_time<Duration>>::value && std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), zoned_time >::value, ::type >
 zoned_time (const char *name, const zoned_time< Duration2, TimeZonePtr2 > &zt)
 
template<class Duration2 , class TimeZonePtr2 , class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible<sys_time<Duration2>, sys_time<Duration>>::value && std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), zoned_time, choose >::value, ::type >
 zoned_time (const std::string &name, const zoned_time< Duration2, TimeZonePtr2 > &zt, choose)
 
template<class Duration2 , class TimeZonePtr2 , class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible<sys_time<Duration2>, sys_time<Duration>>::value && std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), zoned_time, choose >::value, ::type >
 zoned_time (const char *name, const zoned_time< Duration2, TimeZonePtr2 > &zt, choose)
 
zoned_timeoperator= (const sys_time< Duration > &st)
 
zoned_timeoperator= (const local_time< Duration > &ut)
 
 operator sys_time< duration > () const
 
 operator local_time< duration > () const
 
TimeZonePtr get_time_zone () const
 
local_time< durationget_local_time () const
 
sys_time< durationget_sys_time () const
 
sys_info get_info () const
 
template<class T , class >
 zoned_time (const std::string &name)
 
template<class T , class >
 zoned_time (TimeZonePtr z, const local_time< Duration > &t)
 
template<class T , class >
 zoned_time (TimeZonePtr z, const local_time< Duration > &t, choose c)
 
template<class T , class >
 zoned_time (const std::string &name, const sys_time< Duration > &st)
 
template<class T , class >
 zoned_time (const char *name, const sys_time< Duration > &st)
 
template<class T , class >
 zoned_time (const std::string &name, const local_time< Duration > &t)
 
template<class T , class >
 zoned_time (const char *name, const local_time< Duration > &t)
 
template<class T , class >
 zoned_time (const std::string &name, const local_time< Duration > &t, choose c)
 
template<class T , class >
 zoned_time (const char *name, const local_time< Duration > &t, choose c)
 
template<class Duration2 , class TimeZonePtr2 , class , class >
 zoned_time (const std::string &name, const zoned_time< Duration2, TimeZonePtr2 > &zt)
 
template<class Duration2 , class TimeZonePtr2 , class , class >
 zoned_time (const char *name, const zoned_time< Duration2, TimeZonePtr2 > &zt)
 
template<class Duration2 , class TimeZonePtr2 , class , class >
 zoned_time (const std::string &name, const zoned_time< Duration2, TimeZonePtr2 > &zt, choose c)
 
template<class Duration2 , class TimeZonePtr2 , class , class >
 zoned_time (const char *name, const zoned_time< Duration2, TimeZonePtr2 > &zt, choose c)
 

Static Private Member Functions

template<class TimeZonePtr2 >
static TimeZonePtr2 && check (TimeZonePtr2 &&p)
 

Private Attributes

TimeZonePtr zone_
 
sys_time< durationtp_
 

Friends

template<class D , class T >
class zoned_time
 
template<class Duration1 , class Duration2 , class TimeZonePtr1 >
bool operator== (const zoned_time< Duration1, TimeZonePtr1 > &x, const zoned_time< Duration2, TimeZonePtr1 > &y)
 
template<class CharT , class Traits , class Duration1 , class TimeZonePtr1 >
std::basic_ostream< CharT, Traits > & operator<< (std::basic_ostream< CharT, Traits > &os, const zoned_time< Duration1, TimeZonePtr1 > &t)
 

Detailed Description

template<class Duration, class TimeZonePtr = const time_zone*>
class date::zoned_time< Duration, TimeZonePtr >

Definition at line 336 of file tz.h.

Member Typedef Documentation

◆ duration

template<class Duration , class TimeZonePtr = const time_zone*>
using date::zoned_time< Duration, TimeZonePtr >::duration = typename std::common_type<Duration, std::chrono::seconds>::type

Definition at line 339 of file tz.h.

Constructor & Destructor Documentation

◆ zoned_time() [1/33]

template<class Duration , class TimeZonePtr >
template<class T , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time
inline

Definition at line 1354 of file tz.h.

◆ zoned_time() [2/33]

template<class Duration , class TimeZonePtr >
template<class T , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const sys_time< Duration > &  st)
inline

Definition at line 1363 of file tz.h.

◆ zoned_time() [3/33]

template<class Duration , class TimeZonePtr >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( TimeZonePtr  z)
inlineexplicit

Definition at line 1370 of file tz.h.

◆ zoned_time() [4/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())) >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name)
explicit

◆ zoned_time() [5/33]

template<class Duration , class TimeZonePtr >
template<class Duration2 , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const zoned_time< Duration2, TimeZonePtr > &  zt)
inline

Definition at line 1399 of file tz.h.

◆ zoned_time() [6/33]

template<class Duration , class TimeZonePtr >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( TimeZonePtr  z,
const sys_time< Duration > &  st 
)
inline

Definition at line 1406 of file tz.h.

◆ zoned_time() [7/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible < decltype(std::declval<T&>()->to_sys(local_time<Duration>{})), sys_time<duration> >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( TimeZonePtr  z,
const local_time< Duration > &  tp 
)

◆ zoned_time() [8/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible < decltype(std::declval<T&>()->to_sys(local_time<Duration>{}, choose::earliest)), sys_time<duration> >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( TimeZonePtr  z,
const local_time< Duration > &  tp,
choose  c 
)

◆ zoned_time() [9/33]

template<class Duration , class TimeZonePtr >
template<class Duration2 , class TimeZonePtr2 , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( TimeZonePtr  z,
const zoned_time< Duration2, TimeZonePtr2 > &  zt 
)
inline

Definition at line 1435 of file tz.h.

◆ zoned_time() [10/33]

template<class Duration , class TimeZonePtr >
template<class Duration2 , class TimeZonePtr2 , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( TimeZonePtr  z,
const zoned_time< Duration2, TimeZonePtr2 > &  zt,
choose   
)
inline

Definition at line 1444 of file tz.h.

◆ zoned_time() [11/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), sys_time<Duration> >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name,
const sys_time< Duration > &  st 
)

◆ zoned_time() [12/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), sys_time<Duration> >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const char *  name,
const sys_time< Duration > &  st 
)

◆ zoned_time() [13/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), local_time<Duration> >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name,
const local_time< Duration > &  tp 
)

◆ zoned_time() [14/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), local_time<Duration> >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const char *  name,
const local_time< Duration > &  tp 
)

◆ zoned_time() [15/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), local_time<Duration>, choose >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name,
const local_time< Duration > &  tp,
choose  c 
)

◆ zoned_time() [16/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T = TimeZonePtr, class = typename std::enable_if < std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), local_time<Duration>, choose >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const char *  name,
const local_time< Duration > &  tp,
choose  c 
)

◆ zoned_time() [17/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class Duration2 , class TimeZonePtr2 , class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible<sys_time<Duration2>, sys_time<Duration>>::value && std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), zoned_time >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name,
const zoned_time< Duration2, TimeZonePtr2 > &  zt 
)

◆ zoned_time() [18/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class Duration2 , class TimeZonePtr2 , class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible<sys_time<Duration2>, sys_time<Duration>>::value && std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), zoned_time >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const char *  name,
const zoned_time< Duration2, TimeZonePtr2 > &  zt 
)

◆ zoned_time() [19/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class Duration2 , class TimeZonePtr2 , class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible<sys_time<Duration2>, sys_time<Duration>>::value && std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), zoned_time, choose >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name,
const zoned_time< Duration2, TimeZonePtr2 > &  zt,
choose   
)

◆ zoned_time() [20/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class Duration2 , class TimeZonePtr2 , class T = TimeZonePtr, class = typename std::enable_if < std::is_convertible<sys_time<Duration2>, sys_time<Duration>>::value && std::is_constructible < zoned_time, decltype(zoned_traits<T>::locate_zone(std::string())), zoned_time, choose >::value, ::type >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const char *  name,
const zoned_time< Duration2, TimeZonePtr2 > &  zt,
choose   
)

◆ zoned_time() [21/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name)
inline

Definition at line 1390 of file tz.h.

◆ zoned_time() [22/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( TimeZonePtr  z,
const local_time< Duration > &  t 
)
inline

Definition at line 1416 of file tz.h.

◆ zoned_time() [23/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( TimeZonePtr  z,
const local_time< Duration > &  t,
choose  c 
)
inline

Definition at line 1426 of file tz.h.

◆ zoned_time() [24/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name,
const sys_time< Duration > &  st 
)
inline

Definition at line 1499 of file tz.h.

◆ zoned_time() [25/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const char *  name,
const sys_time< Duration > &  st 
)
inline

Definition at line 1509 of file tz.h.

◆ zoned_time() [26/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name,
const local_time< Duration > &  t 
)
inline

Definition at line 1519 of file tz.h.

◆ zoned_time() [27/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const char *  name,
const local_time< Duration > &  t 
)
inline

Definition at line 1529 of file tz.h.

◆ zoned_time() [28/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name,
const local_time< Duration > &  t,
choose  c 
)
inline

Definition at line 1539 of file tz.h.

◆ zoned_time() [29/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class T , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const char *  name,
const local_time< Duration > &  t,
choose  c 
)
inline

Definition at line 1549 of file tz.h.

◆ zoned_time() [30/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class Duration2 , class TimeZonePtr2 , class , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name,
const zoned_time< Duration2, TimeZonePtr2 > &  zt 
)
inline

Definition at line 1561 of file tz.h.

◆ zoned_time() [31/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class Duration2 , class TimeZonePtr2 , class , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const char *  name,
const zoned_time< Duration2, TimeZonePtr2 > &  zt 
)
inline

Definition at line 1573 of file tz.h.

◆ zoned_time() [32/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class Duration2 , class TimeZonePtr2 , class , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const std::string &  name,
const zoned_time< Duration2, TimeZonePtr2 > &  zt,
choose  c 
)
inline

Definition at line 1585 of file tz.h.

◆ zoned_time() [33/33]

template<class Duration , class TimeZonePtr = const time_zone*>
template<class Duration2 , class TimeZonePtr2 , class , class >
date::zoned_time< Duration, TimeZonePtr >::zoned_time ( const char *  name,
const zoned_time< Duration2, TimeZonePtr2 > &  zt,
choose  c 
)
inline

Definition at line 1598 of file tz.h.

Member Function Documentation

◆ check()

template<class Duration , class TimeZonePtr >
template<class TimeZonePtr2 >
TimeZonePtr2 && date::zoned_time< Duration, TimeZonePtr >::check ( TimeZonePtr2 &&  p)
inlinestaticprivate

Definition at line 1341 of file tz.h.

References date::detail::to_raw_pointer().

Here is the call graph for this function:

◆ get_info()

template<class Duration , class TimeZonePtr >
sys_info date::zoned_time< Duration, TimeZonePtr >::get_info
inline

Definition at line 1665 of file tz.h.

◆ get_local_time()

template<class Duration , class TimeZonePtr >
local_time< typename zoned_time< Duration, TimeZonePtr >::duration > date::zoned_time< Duration, TimeZonePtr >::get_local_time
inline

Definition at line 1649 of file tz.h.

◆ get_sys_time()

template<class Duration , class TimeZonePtr >
sys_time< typename zoned_time< Duration, TimeZonePtr >::duration > date::zoned_time< Duration, TimeZonePtr >::get_sys_time
inline

Definition at line 1657 of file tz.h.

Referenced by date::operator<<().

◆ get_time_zone()

template<class Duration , class TimeZonePtr >
TimeZonePtr date::zoned_time< Duration, TimeZonePtr >::get_time_zone
inline

Definition at line 1641 of file tz.h.

Referenced by date::operator<<().

◆ operator local_time< duration >()

template<class Duration , class TimeZonePtr = const time_zone*>
date::zoned_time< Duration, TimeZonePtr >::operator local_time< duration > ( ) const
explicit

◆ operator sys_time< duration >()

template<class Duration , class TimeZonePtr = const time_zone*>
date::zoned_time< Duration, TimeZonePtr >::operator sys_time< duration > ( ) const
explicit

◆ operator=() [1/2]

template<class Duration , class TimeZonePtr >
zoned_time< Duration, TimeZonePtr > & date::zoned_time< Duration, TimeZonePtr >::operator= ( const local_time< Duration > &  ut)
inline

Definition at line 1618 of file tz.h.

◆ operator=() [2/2]

template<class Duration , class TimeZonePtr >
zoned_time< Duration, TimeZonePtr > & date::zoned_time< Duration, TimeZonePtr >::operator= ( const sys_time< Duration > &  st)
inline

Definition at line 1609 of file tz.h.

Friends And Related Function Documentation

◆ operator<<

template<class Duration , class TimeZonePtr = const time_zone*>
template<class CharT , class Traits , class Duration1 , class TimeZonePtr1 >
std::basic_ostream< CharT, Traits > & operator<< ( std::basic_ostream< CharT, Traits > &  os,
const zoned_time< Duration1, TimeZonePtr1 > &  t 
)
friend

◆ operator==

template<class Duration , class TimeZonePtr = const time_zone*>
template<class Duration1 , class Duration2 , class TimeZonePtr1 >
bool operator== ( const zoned_time< Duration1, TimeZonePtr1 > &  x,
const zoned_time< Duration2, TimeZonePtr1 > &  y 
)
friend

◆ zoned_time

template<class Duration , class TimeZonePtr = const time_zone*>
template<class D , class T >
friend class zoned_time
friend

Definition at line 696 of file tz.h.

Member Data Documentation

◆ tp_

template<class Duration , class TimeZonePtr = const time_zone*>
sys_time<duration> date::zoned_time< Duration, TimeZonePtr >::tp_
private

Definition at line 343 of file tz.h.

Referenced by date::operator==().

◆ zone_

template<class Duration , class TimeZonePtr = const time_zone*>
TimeZonePtr date::zoned_time< Duration, TimeZonePtr >::zone_
private

Definition at line 342 of file tz.h.

Referenced by date::operator==().


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