TimeRange.h
Go to the documentation of this file.
/* -*- C++ -*- */
/****************************************************************************
** Copyright (c) 2001-2014
**
** This file is part of the QuickFIX FIX Engine
**
** This file may be distributed under the terms of the quickfixengine.org
** license as defined by quickfixengine.org and appearing in the file
** LICENSE included in the packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.quickfixengine.org/LICENSE for licensing information.
**
** Contact ask@quickfixengine.org if any conditions of this licensing are
** not clear to you.
**
****************************************************************************/
#ifndef FIX_TIMERANGE_H
#define FIX_TIMERANGE_H
#ifdef _MSC_VER
#pragma warning( disable : 4503 4355 4786 4290 )
#endif
#include "FieldTypes.h"
namespace FIX
{
class TimeRange
{
public:
TimeRange( const UtcTimeOnly& startTime, const UtcTimeOnly& endTime,
int startDay = -1, int endDay = -1 );
TimeRange( const LocalTimeOnly& startTime, const LocalTimeOnly& endTime,
int startDay = -1, int endDay = -1 );
static bool isInRange( const UtcTimeOnly& start,
const UtcTimeOnly& end,
const DateTime& time )
{
return isInRange
( (DateTime)start, (DateTime)end, (DateTime)time );
}
static bool isInRange( const UtcTimeOnly& startTime,
const UtcTimeOnly& endTime,
int startDay,
int endDay,
const DateTime& time,
int day )
{
return isInRange
( (DateTime)startTime, (DateTime)endTime,
startDay, endDay,
(DateTime)time, day );
}
static bool isInRange( const UtcTimeOnly& startTime,
const UtcTimeOnly& endTime,
int startDay,
int endDay,
const DateTime& time )
{
return isInRange
( (DateTime)startTime, (DateTime)endTime,
startDay, endDay,
(DateTime)time );
}
static bool isInSameRange( const UtcTimeOnly& start,
const UtcTimeOnly& end,
const DateTime& time1,
const DateTime& time2 )
{
return isInSameRange
( (DateTime)start, (DateTime)end,
(DateTime)time1, (DateTime)time2 );
}
static bool isInSameRange( const UtcTimeOnly& startTime,
const UtcTimeOnly& endTime,
int startDay,
int endDay,
const DateTime& time1,
const DateTime& time2 )
{
return isInSameRange
( (DateTime)startTime, (DateTime)endTime,
startDay, endDay,
(DateTime)time1, (DateTime)time2 );
}
static bool isInRange( const LocalTimeOnly& start,
const LocalTimeOnly& end,
const DateTime& time )
{
return isInRange
( (DateTime)start, (DateTime)end, (DateTime)time );
}
static bool isInRange( const LocalTimeOnly& startTime,
const LocalTimeOnly& endTime,
int startDay,
int endDay,
const DateTime& time,
int day )
{
return isInRange
( (DateTime)startTime, (DateTime)endTime,
startDay, endDay,
(DateTime)time, day );
}
static bool isInRange( const LocalTimeOnly& startTime,
const LocalTimeOnly& endTime,
int startDay,
int endDay,
const DateTime& time )
{
return isInRange
( (DateTime)startTime, (DateTime)endTime,
startDay, endDay,
(DateTime)time );
}
static bool isInSameRange( const LocalTimeOnly& start,
const LocalTimeOnly& end,
const DateTime& time1,
const DateTime& time2 )
{
return isInSameRange
( (DateTime)start, (DateTime)end,
(DateTime)time1, (DateTime)time2 );
}
static bool isInSameRange( const LocalTimeOnly& startTime,
const LocalTimeOnly& endTime,
int startDay,
int endDay,
const DateTime& time1,
const DateTime& time2 )
{
return isInSameRange
( (DateTime)startTime, (DateTime)endTime,
startDay, endDay,
(DateTime)time1, (DateTime)time2 );
}
private:
static bool isInRange( const DateTime& start,
const DateTime& end,
const DateTime& time );
static bool isInRange( const DateTime& startTime,
const DateTime& endTime,
int startDay,
int endDay,
const DateTime& time,
int day );
static bool isInRange( const DateTime& startTime,
const DateTime& endTime,
int startDay,
int endDay,
const DateTime& time );
static bool isInSameRange( const DateTime& start,
const DateTime& end,
const DateTime& time1,
const DateTime& time2 );
static bool isInSameRange( const DateTime& startTime,
const DateTime& endTime,
int startDay,
int endDay,
const DateTime& time1,
const DateTime& time2 );
public:
bool isInRange( const DateTime& dateTime, int day )
{
if( m_startDay < 0 && m_endDay < 0 )
return isInRange( m_startTime, m_endTime, dateTime );
else
return isInRange
( m_startTime, m_endTime, m_startDay, m_endDay, dateTime, day );
}
bool isInRange( const UtcTimeStamp& dateTime )
{
if( m_useLocalTime )
{
LocalTimeStamp localDateTime( dateTime.getTimeT() );
return isInRange( localDateTime, localDateTime.getWeekDay() );
}
return isInRange( dateTime, dateTime.getWeekDay() );
}
bool isInRange( const LocalTimeStamp& dateTime )
{
if( !m_useLocalTime )
{
LocalTimeStamp utcDateTime( dateTime.getTimeT() );
return isInRange( utcDateTime, utcDateTime.getWeekDay() );
}
return isInRange( dateTime, dateTime.getWeekDay() );
}
bool isInSameRange( const UtcTimeStamp& time1, const UtcTimeStamp& time2 )
{
if( m_useLocalTime )
{
LocalTimeStamp localTime1( time1.getTimeT() );
LocalTimeStamp localTime2( time2.getTimeT() );
return isInSameRange( (DateTime)localTime1, (DateTime)localTime2 );
}
return isInSameRange( (DateTime)time1, (DateTime)time2 );
}
bool isInSameRange( const LocalTimeStamp& time1, const LocalTimeStamp& time2 )
{
if( !m_useLocalTime )
{
UtcTimeStamp utcTime1( time1.getTimeT() );
UtcTimeStamp utcTime2( time2.getTimeT() );
return isInSameRange( (DateTime)utcTime1, (DateTime)utcTime2 );
}
return isInSameRange( (DateTime)time1, (DateTime)time2 );
}
private:
bool isInSameRange( const DateTime& time1, const DateTime& time2 )
{
if( m_startDay < 0 && m_endDay < 0 )
return isInSameRange( m_startTime, m_endTime, time1, time2 );
else
return isInSameRange
( m_startTime, m_endTime, m_startDay, m_endDay, time1, time2 );
}
UtcTimeOnly m_startTime;
UtcTimeOnly m_endTime;
int m_startDay;
int m_endDay;
bool m_useLocalTime;
};
}
#endif
FIX::DateTime
Definition: FieldTypes.h:77
FIX::TimeRange::m_startTime
UtcTimeOnly m_startTime
Definition: TimeRange.h:284
FIX::TimeRange::m_startDay
int m_startDay
Definition: TimeRange.h:286
FIX::UtcTimeStamp
Date and Time represented in UTC.
Definition: FieldTypes.h:599
FIX::TimeRange::TimeRange
TimeRange(const UtcTimeOnly &startTime, const UtcTimeOnly &endTime, int startDay=-1, int endDay=-1)
Definition: TimeRange.cpp:48
FIX::DateTime::getTimeT
time_t getTimeT() const
Convert the DateTime to a time_t.
Definition: FieldTypes.h:271
FIX::LocalTimeStamp
Date and Time represented in local time.
Definition: FieldTypes.h:650
FIX::TYPE::UtcTimeStamp
@ UtcTimeStamp
Definition: FieldTypes.h:940
FIX::TimeRange::m_endDay
int m_endDay
Definition: TimeRange.h:287
FIX::TYPE::UtcTimeOnly
@ UtcTimeOnly
Definition: FieldTypes.h:950
FIX::TimeRange::m_endTime
UtcTimeOnly m_endTime
Definition: TimeRange.h:285
FIX::LocalTimeOnly
Time only represented in local time.
Definition: FieldTypes.h:759
FIX::TimeRange::isInSameRange
static bool isInSameRange(const UtcTimeOnly &start, const UtcTimeOnly &end, const DateTime &time1, const DateTime &time2)
Definition: TimeRange.h:110
FIX::TimeRange::m_useLocalTime
bool m_useLocalTime
Definition: TimeRange.h:288
FIX
Definition: Acceptor.cpp:34
FIX::TimeRange::isInRange
static bool isInRange(const UtcTimeOnly &start, const UtcTimeOnly &end, const DateTime &time)
Definition: TimeRange.h:77
FIX::DateTime::getWeekDay
int getWeekDay() const
Calculate the weekday of the date (Sunday is 1, Saturday is 7)
Definition: FieldTypes.h:256
FieldTypes.h
FIX::UtcTimeOnly
Time only represented in UTC.
Definition: FieldTypes.h:701