PandA-2024.02
compute_reserved_memory.cpp
Go to the documentation of this file.
1 /*
2  *
3  * _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
4  * _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
5  * _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
6  * _/ _/ _/ _/ _/ _/ _/ _/ _/
7  * _/ _/ _/ _/ _/ _/_/_/ _/ _/
8  *
9  * ***********************************************
10  * PandA Project
11  * URL: http://panda.dei.polimi.it
12  * Politecnico di Milano - DEIB
13  * System Architectures Group
14  * ***********************************************
15  * Copyright (c) 2018-2024 Politecnico di Milano
16  *
17  * This file is part of the PandA framework.
18  *
19  * The PandA framework is free software; you can redistribute it and/or modify
20  * it under the terms of the GNU General Public License as published by
21  * the Free Software Foundation; either version 3 of the License, or
22  * (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program. If not, see <http://www.gnu.org/licenses/>.
31  *
32  */
43 
45 #include <string>
46 
48 #include "tree_helper.hpp"
49 #include "tree_node.hpp"
50 
52 #include "exceptions.hpp"
53 
55  : TM(_TM), tn(_tn), elements_number(1), depth_level(0)
56 {
57 }
58 
59 unsigned long long ComputeReservedMemory::GetReservedBytes() const
60 {
62  auto reservedMem = elements_number * tree_helper::Size(ptd_type) / 8;
63  return reservedMem ? reservedMem : 1;
64 }
65 
67 {
68  THROW_ASSERT(depth_level == 0, "");
69 }
70 
72 {
73  depth_level++;
74 }
75 
77 {
79  if(depth_level == 0)
80  {
82  }
83  if(depth_level == 1)
84  {
86  }
87 }
88 
90 {
91  THROW_ASSERT(depth_level > 0, "");
92  depth_level--;
93 }
94 
95 void ComputeReservedMemory::Process(const std::string&)
96 {
97 }
unsigned long long GetReservedBytes() const
Return the computed value.
ComputeReservedMemory(const tree_managerConstRef TM, const tree_nodeConstRef tn)
Constructor.
exceptions managed by PandA
static unsigned long long Size(const tree_nodeConstRef &tn)
Return the size of a tree object.
unsigned int elements_number
The number of elements in the top level.
unsigned int depth_level
The current level of {}.
void CheckEnd() override
Check that all the necessary information was present in the initialization string.
void GoUp() override
Ends the initialization of the current aggregated data structure.
Classes specification of the tree_node data structures.
This file collects some utility functions.
Specification of the functor used to compute size of objects starting from C initialization string...
void GoNext() override
Consume an element of an aggregated data structure.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
Definition: refcount.hpp:94
static tree_nodeConstRef CGetType(const tree_nodeConstRef &node)
Return the treenode of the type of node.
static tree_nodeConstRef CGetPointedType(const tree_nodeConstRef &pointer)
Return the pointed type of a pointer object.
void Process(const std::string &content) override
Process an element.
void GoDown() override
Start the initialization of a new aggregated data structure.
const tree_nodeConstRef tn
The tree node to be stored in memory.
#define THROW_ASSERT(cond, str_expr)
helper function used to check an assert and if needed to throw an error in a standard way ...
Definition: exceptions.hpp:289

Generated on Mon Feb 12 2024 13:02:54 for PandA-2024.02 by doxygen 1.8.13