Loading...
Searching...
No Matches
ptree.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
43#pragma once
44
45#include "chain.h"
46
47namespace ledger {
48
49class xact_t;
50class account_t;
51class commodity_t;
52class post_t;
53class report_t;
54
60class format_ptree : public item_handler<post_t>
61{
62protected:
64
65 typedef std::map<string, commodity_t *> commodities_map;
66 typedef std::pair<string, commodity_t *> commodities_pair;
67
69 std::set<xact_t *> transactions_set;
70 std::deque<xact_t *> transactions;
71
72public:
76
81 virtual ~format_ptree() {
83 }
84
85 virtual void flush();
86 virtual void operator()(post_t& post);
87
88 virtual void clear() {
89 commodities.clear();
90 transactions_set.clear();
91 transactions.clear();
92
94 }
95};
96
97} // namespace ledger
#define TRACE_DTOR(cls)
Definition utils.h:144
#define TRACE_CTOR(cls, args)
Definition utils.h:143
T & downcast(U &object)
Definition utils.h:468
virtual void clear()
Definition chain.h:84
std::pair< string, commodity_t * > commodities_pair
Definition ptree.h:66
enum ledger::format_ptree::format_t format
virtual ~format_ptree()
Definition ptree.h:81
virtual void flush()
format_ptree(report_t &_report, format_t _format=FORMAT_XML)
Definition ptree.h:77
report_t & report
Definition ptree.h:63
std::deque< xact_t * > transactions
Definition ptree.h:70
virtual void operator()(post_t &post)
std::set< xact_t * > transactions_set
Definition ptree.h:69
commodities_map commodities
Definition ptree.h:68
virtual void clear()
Definition ptree.h:88
std::map< string, commodity_t * > commodities_map
Definition ptree.h:65