ledger 3.3.2
Home
Features
Docs
Download
Contribute
Wiki
Loading...
Searching...
No Matches
timelog.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2003-2023, John Wiegley. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are
6
* met:
7
*
8
* - Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
*
11
* - Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
*
15
* - Neither the name of New Artisans LLC nor the names of its
16
* contributors may be used to endorse or promote products derived from
17
* this software without specific prior written permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
*/
31
42
#pragma once
43
44
#include "
utils.h
"
45
#include "
times.h
"
46
#include "
item.h
"
47
48
namespace
ledger
{
49
50
class
account_t;
51
class
journal_t;
52
class
parse_context_t;
53
54
class
time_xact_t
55
{
56
public
:
57
datetime_t
checkin
;
58
bool
completed
;
59
account_t
*
account
;
60
string
desc
;
61
string
note
;
62
position_t
position
;
63
64
time_xact_t
() :
account
(
NULL
) {
65
TRACE_CTOR
(
time_xact_t
,
""
);
66
}
67
time_xact_t
(
const
optional<position_t>
&
_position
,
68
const
datetime_t
&
_checkin
,
69
const
bool
_completed
=
false
,
70
account_t
*
_account
=
NULL
,
71
const
string
&
_desc
=
""
,
72
const
string
&
_note
=
""
)
73
:
checkin
(
_checkin
),
completed
(
_completed
),
account
(
_account
),
74
desc
(
_desc
),
note
(
_note
),
75
position
(
_position
? *
_position
:
position_t
()) {
76
TRACE_CTOR
(
time_xact_t
,
77
"position_t, datetime_t, bool, account_t *, string, string"
);
78
}
79
time_xact_t
(
const
time_xact_t
& xact)
80
:
checkin
(xact.
checkin
),
completed
(xact.
completed
),
account
(xact.
account
),
81
desc
(xact.
desc
),
note
(xact.
note
),
position
(xact.
position
) {
82
TRACE_CTOR
(
time_xact_t
,
"copy"
);
83
}
84
~time_xact_t
()
throw
() {
85
TRACE_DTOR
(
time_xact_t
);
86
}
87
};
88
89
class
time_log_t
:
public
boost::noncopyable
90
{
91
std::list<time_xact_t> time_xacts;
92
parse_context_t
& context;
93
94
public
:
95
time_log_t
(
parse_context_t
&
_context
) : context(
_context
) {
96
TRACE_CTOR
(
time_log_t
,
"parse_context_t&"
);
97
}
98
~time_log_t
() {
99
TRACE_DTOR
(
time_log_t
);
100
}
101
102
void
clock_in
(
time_xact_t
event
);
103
std::size_t
clock_out
(
time_xact_t
event
);
104
105
void
close
();
106
};
107
108
}
// namespace ledger
utils.h
General utility facilities used by Ledger.
TRACE_DTOR
#define TRACE_DTOR(cls)
Definition
utils.h:144
TRACE_CTOR
#define TRACE_CTOR(cls, args)
Definition
utils.h:143
times.h
datetime_t and date_t objects
item.h
ledger
Definition
account.h:46
ledger::downcast
T & downcast(U &object)
Definition
utils.h:468
ledger::datetime_t
boost::posix_time::ptime datetime_t
Definition
times.h:53
ledger::account_t
Definition
account.h:59
ledger::parse_context_t
Definition
context.h:58
ledger::position_t
Definition
item.h:49
ledger::time_xact_t
Definition
timelog.h:55
ledger::time_xact_t::checkin
datetime_t checkin
Definition
timelog.h:57
ledger::time_xact_t::note
string note
Definition
timelog.h:61
ledger::time_xact_t::time_xact_t
time_xact_t()
Definition
timelog.h:64
ledger::time_xact_t::account
account_t * account
Definition
timelog.h:59
ledger::time_xact_t::time_xact_t
time_xact_t(const time_xact_t &xact)
Definition
timelog.h:79
ledger::time_xact_t::time_xact_t
time_xact_t(const optional< position_t > &_position, const datetime_t &_checkin, const bool _completed=false, account_t *_account=NULL, const string &_desc="", const string &_note="")
Definition
timelog.h:67
ledger::time_xact_t::~time_xact_t
~time_xact_t()
Definition
timelog.h:84
ledger::time_xact_t::desc
string desc
Definition
timelog.h:60
ledger::time_xact_t::position
position_t position
Definition
timelog.h:62
ledger::time_xact_t::completed
bool completed
Definition
timelog.h:58
ledger::time_log_t
Definition
timelog.h:90
ledger::time_log_t::close
void close()
ledger::time_log_t::clock_out
std::size_t clock_out(time_xact_t event)
ledger::time_log_t::time_log_t
time_log_t(parse_context_t &_context)
Definition
timelog.h:95
ledger::time_log_t::~time_log_t
~time_log_t()
Definition
timelog.h:98
ledger::time_log_t::clock_in
void clock_in(time_xact_t event)
src
timelog.h
Generated on Wed Dec 11 2024 01:48:13 for ledger by
1.10.0