mirror of
https://github.com/autc04/Retro68.git
synced 2024-06-07 13:33:06 +00:00
101 lines
4.4 KiB
C++
101 lines
4.4 KiB
C++
/* Copyright (C) 2021 Free Software Foundation, Inc.
|
|
Contributed by Oracle.
|
|
|
|
This file is part of GNU Binutils.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3, or (at your option)
|
|
any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, 51 Franklin Street - Fifth Floor, Boston,
|
|
MA 02110-1301, USA. */
|
|
|
|
#ifndef _BASEMETRICTREENODE_H
|
|
#define _BASEMETRICTREENODE_H
|
|
|
|
#include "BaseMetric.h"
|
|
|
|
// Unit values
|
|
#define UNIT_SECONDS "SECONDS"
|
|
#define UNIT_SECONDS_UNAME GTXT("secs.")
|
|
#define UNIT_BYTES "BYTES"
|
|
#define UNIT_BYTES_UNAME GTXT("bytes")
|
|
|
|
// Name values for intermediate parent nodes that aren't defined elsewhere
|
|
#define L1_DURATION "PROFDATA_TYPE_DURATION"
|
|
#define L1_DURATION_UNAME GTXT("Experiment Duration")
|
|
#define L1_GCDURATION "PROFDATA_TYPE_GCDURATION"
|
|
#define L1_GCDURATION_UNAME GTXT("Java Garbage Collection Duration")
|
|
#define L2_HWC_DSPACE "PROFDATA_TYPE_HWC_DSPACE"
|
|
#define L2_HWC_DSPACE_UNAME GTXT("Memoryspace Hardware Counters")
|
|
#define L2_HWC_GENERAL "PROFDATA_TYPE_HWC_GENERAL"
|
|
#define L2_HWC_GENERAL_UNAME GTXT("General Hardware Counters")
|
|
#define L1_MPI_STATES "PROFDATA_TYPE_MPI_STATES"
|
|
#define L1_MPI_STATES_UNAME GTXT("MPI States")
|
|
#define L1_OTHER "PROFDATA_TYPE_OTHER"
|
|
#define L1_OTHER_UNAME GTXT("Derived and Other Metrics")
|
|
#define L1_STATIC "PROFDATA_TYPE_STATIC"
|
|
#define L1_STATIC_UNAME GTXT("Static")
|
|
#define L_CP_TOTAL "L_CP_TOTAL"
|
|
#define L_CP_TOTAL_CPU "L_CP_TOTAL_CPU"
|
|
|
|
class BaseMetricTreeNode
|
|
{
|
|
public:
|
|
BaseMetricTreeNode (); // builds basic metric tree (not including HWCs)
|
|
virtual ~BaseMetricTreeNode ();
|
|
BaseMetricTreeNode *register_metric (BaseMetric *item);
|
|
BaseMetricTreeNode *find (const char *name);
|
|
void get_nearest_registered_descendents (Vector<BaseMetricTreeNode*> *new_vec);
|
|
void get_all_registered_descendents (Vector<BaseMetricTreeNode*> *new_vec);
|
|
char *get_description();
|
|
char *dump();
|
|
|
|
BaseMetricTreeNode *get_root () { return root; }
|
|
BaseMetricTreeNode *get_parent () { return parent; }
|
|
Vector<BaseMetricTreeNode*> *get_children () { return children; }
|
|
bool is_registered () { return registered; }
|
|
int get_num_registered_descendents () { return num_registered_descendents; }
|
|
bool is_composite_metric () { return isCompositeMetric; }
|
|
BaseMetric *get_BaseMetric () { return bm; }
|
|
char *get_name () { return name; }
|
|
char *get_user_name () { return uname; }
|
|
char *get_unit () { return unit; }
|
|
char *get_unit_uname () { return unit_uname; }
|
|
|
|
private:
|
|
BaseMetricTreeNode (BaseMetric *item);
|
|
BaseMetricTreeNode (const char *name, const char *uname,
|
|
const char *_unit, const char *_unit_uname);
|
|
void init_vars ();
|
|
void build_basic_tree ();
|
|
BaseMetricTreeNode *add_child (BaseMetric *item);
|
|
BaseMetricTreeNode *add_child (const char *name, const char *uname,
|
|
const char *unit = NULL, const char *unit_uname = NULL);
|
|
BaseMetricTreeNode *add_child (BaseMetricTreeNode *new_node);
|
|
void register_node (BaseMetricTreeNode *);
|
|
|
|
BaseMetricTreeNode *root; // root of tree
|
|
BaseMetricTreeNode *parent; // my parent
|
|
bool aggregation; // value is based on children's values
|
|
char *name; // bm->get_cmd() for metrics, unique string otherwise
|
|
char *uname; // user-visible text
|
|
char *unit; // see UNIT_* defines
|
|
char *unit_uname; // see UNIT_*_UNAME defines
|
|
Vector<BaseMetricTreeNode*> *children; // my children
|
|
bool isCompositeMetric; // value is sum of children
|
|
BaseMetric *bm; // metric for this node, or null
|
|
bool registered; // metric has been officially registered
|
|
int num_registered_descendents; // does not include self
|
|
};
|
|
|
|
#endif /* _BASEMETRICTREENODE_H */
|