]> Git Repo - binutils.git/blob - gprofng/src/Filter.h
Automatic date update in version.in
[binutils.git] / gprofng / src / Filter.h
1 /* Copyright (C) 2021 Free Software Foundation, Inc.
2    Contributed by Oracle.
3
4    This file is part of GNU Binutils.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3, or (at your option)
9    any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, 51 Franklin Street - Fifth Floor, Boston,
19    MA 02110-1301, USA.  */
20
21 #ifndef _FILTER_H
22 #define _FILTER_H
23
24 // A sample selection specifies a set of samples the user is interested in
25 // viewing as a whole.
26
27 #include "vec.h"
28 #include "data_pckts.h"
29
30 class Experiment;
31
32 class FilterNumeric
33 {
34 public:
35   FilterNumeric (Experiment *, const char *, const char *);
36   ~FilterNumeric ();
37
38   // set or update the range of items first and last
39   void set_range (uint64_t findex, uint64_t lindex, uint64_t total);
40
41   // Return a string representation of the current ranges
42   //    E.g. "1-5,7,9,10,12-13,73"
43   char *get_pattern ();
44
45   // Return a string for the current status: %, range, ...
46   //    E.g. "100%" "100% [1-7]"  "25% [1-4]"
47   char *get_status ();
48
49   char *get_advanced_filter ();
50
51   // Sets selection according to the string representation
52   // See above for return values and error handling
53   bool set_pattern (char *, bool *);
54
55     // Return true if "number" is included in selection
56   bool is_selected (uint64_t number);
57
58   char *
59   get_cmd ()
60   {
61     return cmd;
62   };
63
64   char *
65   get_name ()
66   {
67     return name;
68   };
69
70   uint64_t
71   nelem ()
72   {
73     return nitems;
74   };
75
76   char *prop_name; // name in advanced filter
77
78 private:
79
80   typedef struct
81   {
82     uint64_t first;
83     uint64_t last;
84   } RangePair;
85
86   void update_status ();
87   void update_range ();
88
89   // Include "range" in selection
90   bool include_range (uint64_t findex, uint64_t lindex);
91
92   // Parse a number from the string
93   uint64_t get_next_number (char *s, char **e, bool *fail);
94
95   // Data
96   Vector<RangePair *> *items; // sorted array of items
97   uint64_t nselected;
98   uint64_t nitems;
99
100   Experiment *exp;
101   char *cmd;
102   char *name;
103   char *pattern;
104   char *status;
105
106   // First and Last items in selection
107   uint64_t first;
108   uint64_t last;
109 };
110
111 #endif /* _FILTER_H */
This page took 0.027882 seconds and 4 git commands to generate.