#include <functional>
#include <stdexcept>
#include <algorithm>
#include "TGTextView.h"
#include "TGLabel.h"
#include "TGTab.h"
#include "TGButton.h"
#include "TGNumberEntry.h"
#include "TGSplitter.h"
#include "TGButtonGroup.h"
#include "TGComboBox.h"
#include "TObjArray.h"
#include "TMemStat.h"
#include "TMemStatViewerGUI.h"
#include "TMemStatResource.h"
#include "TMemStatDrawDlg.h"
ClassImp(TMemStatViewerGUI)
using namespace std;
struct SStringToListBox_t : public binary_function<string, TGComboBox*, bool> {
bool operator()(string str, TGComboBox* box) const {
if (!box)
return false;
box->AddEntry(str.c_str(), box->GetNumberOfEntries());
return true;
}
};
struct SFillListBox_t : public binary_function<TObject*, TGComboBox*, bool> {
bool operator()(TObject *aObj, TGComboBox* box) const {
if (!aObj || !box)
return false;
if ((aObj->IsA() == TObjString::Class())) {
TObjString *str(dynamic_cast<TObjString*>(aObj));
if (!str)
return false;
SStringToListBox_t()(str->String().Data(), box);
}
return true;
}
};
TMemStatViewerGUI::TMemStatViewerGUI(const TGWindow *p, UInt_t w, UInt_t h, Option_t* option):
TGCompositeFrame(p, w, h),
fViewer(NULL),
fText(NULL),
fNmbStackDeep(NULL),
fNmbSortDeep(NULL)
{
SetCleanup(kDeepCleanup);
TGCompositeFrame *contMain = new TGCompositeFrame(this, w, h, kVerticalFrame | kFixedWidth | kFixedHeight);
AddFrame(contMain, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
TGCompositeFrame *contLCR = new TGCompositeFrame(contMain, w, h, kHorizontalFrame | kFixedWidth | kFixedHeight);
contMain->AddFrame(contLCR, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
TGCompositeFrame *contLeft = new TGCompositeFrame(contLCR, 160, 200, kVerticalFrame | kFixedWidth | kFitHeight);
contLCR->AddFrame(contLeft, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandY, 5, 3, 3, 3));
TGVSplitter *splitLeft = new TGVSplitter(contLCR);
splitLeft->SetFrame(contLeft, kTRUE);
contLCR->AddFrame(splitLeft, new TGLayoutHints(kLHintsLeft | kLHintsExpandY));
TGCompositeFrame *contCenter = new TGCompositeFrame(contLCR, 150, 200, kVerticalFrame | kFixedWidth | kFitHeight);
contLCR->AddFrame(contCenter, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
TGTab *tab = new TGTab(contCenter, 150, 200);
contCenter->AddFrame(tab, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
TGCompositeFrame *text = tab->AddTab("Text");
TGCompositeFrame *graphics = tab->AddTab("Graphics");
fText = new TGTextView(text);
text->AddFrame(fText, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
Initialize(option);
new TMemStatDrawDlg(graphics, fViewer);
MakeStampList(contLeft);
MakeSelection(contLeft);
MakeContSortStat(contLeft);
MakeContSortStamp(contLeft);
MakeContDeep(contLeft);
MapSubwindows();
Resize(GetDefaultSize());
MapWindow();
fViewer->SetSortStat( TMemStat::kTotalAllocCount );
fViewer->SetSortStamp( TMemStat::kCurrent );
MakePrint();
}
TMemStatViewerGUI::~TMemStatViewerGUI()
{
Cleanup();
if (fViewer)
fViewer->Delete();
}
void TMemStatViewerGUI::Initialize(Option_t* option)
{
delete fViewer;
fViewer = new TMemStat(option);
fViewer->Report();
}
void TMemStatViewerGUI::MakeContSortStat(TGCompositeFrame *frame)
{
TGVButtonGroup *sortStatGroup = new TGVButtonGroup(frame, "Statistic type");
frame->AddFrame(sortStatGroup, new TGLayoutHints(kLHintsExpandX));
new TGRadioButton(sortStatGroup, "Total Alloc Count", rbtnTotalAllocCount);
new TGRadioButton(sortStatGroup, "Total Alloc Size", rbtnTotalAllocSize);
new TGRadioButton(sortStatGroup, "Alloc Count", rbtnAllocCount);
new TGRadioButton(sortStatGroup, "Alloc Size", rbtnAllocSize);
sortStatGroup->SetButton(rbtnTotalAllocCount);
sortStatGroup->Connect("Pressed(Int_t)", "TMemStatViewerGUI", this, "HandleButtonsSortStat(Int_t)");
}
void TMemStatViewerGUI::MakeContSortStamp(TGCompositeFrame *frame)
{
TGVButtonGroup *sortStampGroup = new TGVButtonGroup(frame, "Sorting stamp");
frame->AddFrame(sortStampGroup, new TGLayoutHints(kLHintsExpandX));
new TGRadioButton(sortStampGroup, "Current", rbtnCurrent);
new TGRadioButton(sortStampGroup, "Max Size", rbtnMaxSize);
new TGRadioButton(sortStampGroup, "Max Count", rbtnMaxCount);
sortStampGroup->SetButton(rbtnCurrent);
sortStampGroup->Connect("Pressed(Int_t)", "TMemStatViewerGUI", this, "HandleButtonsSortStamp(Int_t)");
}
void TMemStatViewerGUI::MakeStampList(TGCompositeFrame *frame)
{
if (!fViewer)
return;
const TObjArray *stampList = fViewer->GetStampList();
if (!stampList)
return;
TGHorizontalFrame *horz = new TGHorizontalFrame(frame);
frame->AddFrame(horz, new TGLayoutHints(kLHintsExpandX, 2, 2, 10, 2));
TGLabel *lblName = new TGLabel(horz, "Stamp name:");
horz->AddFrame(lblName,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
TGComboBox *stampListBox = new TGComboBox(horz, lstStamps);
stampListBox->Resize(100, 20);
horz->AddFrame(stampListBox, new TGLayoutHints(kLHintsExpandX));
stampListBox->Connect("Selected(const char*)", "TMemStatViewerGUI", this, "HandleStampSelect(const char*)");
TIter iter(stampList);
for_each(iter.Begin(), TIter::End(),
bind2nd(SFillListBox_t(), stampListBox));
const Int_t count(stampListBox->GetNumberOfEntries());
if (count <= 0)
return;
stampListBox->Select(count - 1);
TObjString *str(dynamic_cast<TObjString*>(stampList->At(stampListBox->GetSelected())));
if (!str)
return;
fViewer->SetCurrentStamp(*str);
}
void TMemStatViewerGUI::HandleStampSelect(const char* value)
{
fViewer->SetCurrentStamp(value);
MakePrint();
}
void TMemStatViewerGUI::MakeContDeep(TGCompositeFrame *frame)
{
TGGroupFrame *contDeep = new TGGroupFrame(frame, "Deepnes");
contDeep->SetLayoutManager(new TGMatrixLayout(contDeep, 0, 2, 5));
frame->AddFrame(contDeep, new TGLayoutHints(kLHintsExpandX));
TGLabel *lblStackDeep = new TGLabel(contDeep, "Stack Deep:");
contDeep->AddFrame(lblStackDeep, 0);
fNmbStackDeep = new TGNumberEntry(contDeep, fViewer->GetStackDeep(), 1, -1, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative, TGNumberFormat::kNELLimitMinMax, 1, 50);
contDeep->AddFrame(fNmbStackDeep, 0);
fNmbStackDeep->Connect("ValueSet(Long_t)", "TMemStatViewerGUI", this, "HandleDeep(Long_t)");
fNmbStackDeep->Resize(60, 20);
TGLabel *lSortDeep = new TGLabel(contDeep, "Sort Deep:");
contDeep->AddFrame(lSortDeep, 0);
fNmbSortDeep = new TGNumberEntry(contDeep, fViewer->GetSortDeep(), 1, -1, TGNumberFormat::kNESInteger,
TGNumberFormat::kNEANonNegative, TGNumberFormat::kNELLimitMinMax, 1, 50);
contDeep->AddFrame(fNmbSortDeep, 0);
fNmbSortDeep->Connect("ValueSet(Long_t)", "TMemStatViewerGUI", this, "HandleDeep(Long_t)");
fNmbSortDeep->Resize(60, 20);
}
void TMemStatViewerGUI::HandleButtonsSortStat(Int_t id)
{
TMemStat::StatType val;
HandleRButtons(id, rbtnTotalAllocCount, &val);
fViewer->SetSortStat(val);
MakePrint();
}
void TMemStatViewerGUI::HandleButtonsSortStamp(Int_t id)
{
TMemStat::StampType val;
HandleRButtons(id, rbtnCurrent, &val);
fViewer->SetSortStamp(val);
MakePrint();
}
void TMemStatViewerGUI::HandleDeep(Long_t )
{
fViewer->SetStackDeep( fNmbStackDeep->GetIntNumber() );
fViewer->SetSortDeep( fNmbSortDeep->GetIntNumber() );
MakePrint();
}
void TMemStatViewerGUI::ShowGUI()
{
TGMainFrame* frmMain = new TGMainFrame(gClient->GetRoot(), 950, 600);
frmMain->SetWindowName("TMemStat analysis console");
frmMain->SetCleanup(kDeepCleanup);
TMemStatViewerGUI* calibViewer1 = new TMemStatViewerGUI(frmMain, 950, 600, "read");
frmMain->AddFrame(calibViewer1, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
frmMain->MapSubwindows();
frmMain->Resize();
frmMain->MapWindow();
}
void TMemStatViewerGUI::MakePrint()
{
fViewer->MakeReport( fCurLib.c_str(), fCurFunc.c_str(), 0, "/tmp/memstatprint.txt");
fText->LoadFile("/tmp/memstatprint.txt");
}
void TMemStatViewerGUI::MakeSelection(TGCompositeFrame *frame)
{
if (!fViewer)
return;
TGGroupFrame *grp = new TGGroupFrame(frame, "Selections");
frame->AddFrame(grp, new TGLayoutHints(kLHintsExpandX));
TGLabel *lblFun = new TGLabel(grp, "Function");
grp->AddFrame(lblFun, new TGLayoutHints(kLHintsExpandX ));
TGComboBox *lboxFunctions = new TGComboBox(grp);
lboxFunctions->Resize(100, 20);
grp->AddFrame(lboxFunctions, new TGLayoutHints(kLHintsExpandX ));
lboxFunctions->Connect("Selected(const char*)", "TMemStatViewerGUI", this, "HandleFuncSelect(const char*)");
lboxFunctions->AddEntry("*", 0);
TMemStat::Selection_t container;
fViewer->GetFillSelection( &container, TMemStat::kFunction );
for_each(container.begin(), container.end(),
bind2nd(SStringToListBox_t(), lboxFunctions));
lboxFunctions->Select(0);
TGLabel *lblLib = new TGLabel(grp, "Libraries");
grp->AddFrame(lblLib, new TGLayoutHints(kLHintsExpandX));
TGComboBox *lboxLibraries = new TGComboBox(grp);
lboxLibraries->Resize(100, 20);
grp->AddFrame(lboxLibraries, new TGLayoutHints(kLHintsExpandX ));
lboxLibraries->Connect("Selected(const char*)", "TMemStatViewerGUI", this, "HandleLibSelect(const char*)");
lboxLibraries->AddEntry("*", 0);
container.clear();
fViewer->GetFillSelection( &container, TMemStat::kLibrary );
for_each(container.begin(), container.end(),
bind2nd(SStringToListBox_t(), lboxLibraries));
lboxLibraries->Select(0);
}
void TMemStatViewerGUI::HandleFuncSelect(const char* _val)
{
fCurFunc = _val;
if ( fCurFunc.find("*") != string::npos )
fCurFunc.clear();
MakePrint();
}
void TMemStatViewerGUI::HandleLibSelect(const char* _val)
{
fCurLib = _val;
if ( fCurLib.find("*") != string::npos )
fCurLib.clear();
MakePrint();
}
TMemStatViewerGUI.cxx:100 TMemStatViewerGUI.cxx:101 TMemStatViewerGUI.cxx:102 TMemStatViewerGUI.cxx:103 TMemStatViewerGUI.cxx:104 TMemStatViewerGUI.cxx:105 TMemStatViewerGUI.cxx:106 TMemStatViewerGUI.cxx:107 TMemStatViewerGUI.cxx:108 TMemStatViewerGUI.cxx:109 TMemStatViewerGUI.cxx:110 TMemStatViewerGUI.cxx:111 TMemStatViewerGUI.cxx:112 TMemStatViewerGUI.cxx:113 TMemStatViewerGUI.cxx:114 TMemStatViewerGUI.cxx:115 TMemStatViewerGUI.cxx:116 TMemStatViewerGUI.cxx:117 TMemStatViewerGUI.cxx:118 TMemStatViewerGUI.cxx:119 TMemStatViewerGUI.cxx:120 TMemStatViewerGUI.cxx:121 TMemStatViewerGUI.cxx:122 TMemStatViewerGUI.cxx:123 TMemStatViewerGUI.cxx:124 TMemStatViewerGUI.cxx:125 TMemStatViewerGUI.cxx:126 TMemStatViewerGUI.cxx:127 TMemStatViewerGUI.cxx:128 TMemStatViewerGUI.cxx:129 TMemStatViewerGUI.cxx:130 TMemStatViewerGUI.cxx:131 TMemStatViewerGUI.cxx:132 TMemStatViewerGUI.cxx:133 TMemStatViewerGUI.cxx:134 TMemStatViewerGUI.cxx:135 TMemStatViewerGUI.cxx:136 TMemStatViewerGUI.cxx:137 TMemStatViewerGUI.cxx:138 TMemStatViewerGUI.cxx:139 TMemStatViewerGUI.cxx:140 TMemStatViewerGUI.cxx:141 TMemStatViewerGUI.cxx:142 TMemStatViewerGUI.cxx:143 TMemStatViewerGUI.cxx:144 TMemStatViewerGUI.cxx:145 TMemStatViewerGUI.cxx:146 TMemStatViewerGUI.cxx:147 TMemStatViewerGUI.cxx:148 TMemStatViewerGUI.cxx:149 TMemStatViewerGUI.cxx:150 TMemStatViewerGUI.cxx:151 TMemStatViewerGUI.cxx:152 TMemStatViewerGUI.cxx:153 TMemStatViewerGUI.cxx:154 TMemStatViewerGUI.cxx:155 TMemStatViewerGUI.cxx:156 TMemStatViewerGUI.cxx:157 TMemStatViewerGUI.cxx:158 TMemStatViewerGUI.cxx:159 TMemStatViewerGUI.cxx:160 TMemStatViewerGUI.cxx:161 TMemStatViewerGUI.cxx:162 TMemStatViewerGUI.cxx:163 TMemStatViewerGUI.cxx:164 TMemStatViewerGUI.cxx:165 TMemStatViewerGUI.cxx:166 TMemStatViewerGUI.cxx:167 TMemStatViewerGUI.cxx:168 TMemStatViewerGUI.cxx:169 TMemStatViewerGUI.cxx:170 TMemStatViewerGUI.cxx:171 TMemStatViewerGUI.cxx:172 TMemStatViewerGUI.cxx:173 TMemStatViewerGUI.cxx:174 TMemStatViewerGUI.cxx:175 TMemStatViewerGUI.cxx:176 TMemStatViewerGUI.cxx:177 TMemStatViewerGUI.cxx:178 TMemStatViewerGUI.cxx:179 TMemStatViewerGUI.cxx:180 TMemStatViewerGUI.cxx:181 TMemStatViewerGUI.cxx:182 TMemStatViewerGUI.cxx:183 TMemStatViewerGUI.cxx:184 TMemStatViewerGUI.cxx:185 TMemStatViewerGUI.cxx:186 TMemStatViewerGUI.cxx:187 TMemStatViewerGUI.cxx:188 TMemStatViewerGUI.cxx:189 TMemStatViewerGUI.cxx:190 TMemStatViewerGUI.cxx:191 TMemStatViewerGUI.cxx:192 TMemStatViewerGUI.cxx:193 TMemStatViewerGUI.cxx:194 TMemStatViewerGUI.cxx:195 TMemStatViewerGUI.cxx:196 TMemStatViewerGUI.cxx:197 TMemStatViewerGUI.cxx:198 TMemStatViewerGUI.cxx:199 TMemStatViewerGUI.cxx:200 TMemStatViewerGUI.cxx:201 TMemStatViewerGUI.cxx:202 TMemStatViewerGUI.cxx:203 TMemStatViewerGUI.cxx:204 TMemStatViewerGUI.cxx:205 TMemStatViewerGUI.cxx:206 TMemStatViewerGUI.cxx:207 TMemStatViewerGUI.cxx:208 TMemStatViewerGUI.cxx:209 TMemStatViewerGUI.cxx:210 TMemStatViewerGUI.cxx:211 TMemStatViewerGUI.cxx:212 TMemStatViewerGUI.cxx:213 TMemStatViewerGUI.cxx:214 TMemStatViewerGUI.cxx:215 TMemStatViewerGUI.cxx:216 TMemStatViewerGUI.cxx:217 TMemStatViewerGUI.cxx:218 TMemStatViewerGUI.cxx:219 TMemStatViewerGUI.cxx:220 TMemStatViewerGUI.cxx:221 TMemStatViewerGUI.cxx:222 TMemStatViewerGUI.cxx:223 TMemStatViewerGUI.cxx:224 TMemStatViewerGUI.cxx:225 TMemStatViewerGUI.cxx:226 TMemStatViewerGUI.cxx:227 TMemStatViewerGUI.cxx:228 TMemStatViewerGUI.cxx:229 TMemStatViewerGUI.cxx:230 TMemStatViewerGUI.cxx:231 TMemStatViewerGUI.cxx:232 TMemStatViewerGUI.cxx:233 TMemStatViewerGUI.cxx:234 TMemStatViewerGUI.cxx:235 TMemStatViewerGUI.cxx:236 TMemStatViewerGUI.cxx:237 TMemStatViewerGUI.cxx:238 TMemStatViewerGUI.cxx:239 TMemStatViewerGUI.cxx:240 TMemStatViewerGUI.cxx:241 TMemStatViewerGUI.cxx:242 TMemStatViewerGUI.cxx:243 TMemStatViewerGUI.cxx:244 TMemStatViewerGUI.cxx:245 TMemStatViewerGUI.cxx:246 TMemStatViewerGUI.cxx:247 TMemStatViewerGUI.cxx:248 TMemStatViewerGUI.cxx:249 TMemStatViewerGUI.cxx:250 TMemStatViewerGUI.cxx:251 TMemStatViewerGUI.cxx:252 TMemStatViewerGUI.cxx:253 TMemStatViewerGUI.cxx:254 TMemStatViewerGUI.cxx:255 TMemStatViewerGUI.cxx:256 TMemStatViewerGUI.cxx:257 TMemStatViewerGUI.cxx:258 TMemStatViewerGUI.cxx:259 TMemStatViewerGUI.cxx:260 TMemStatViewerGUI.cxx:261 TMemStatViewerGUI.cxx:262 TMemStatViewerGUI.cxx:263 TMemStatViewerGUI.cxx:264 TMemStatViewerGUI.cxx:265 TMemStatViewerGUI.cxx:266 TMemStatViewerGUI.cxx:267 TMemStatViewerGUI.cxx:268 TMemStatViewerGUI.cxx:269 TMemStatViewerGUI.cxx:270 TMemStatViewerGUI.cxx:271 TMemStatViewerGUI.cxx:272 TMemStatViewerGUI.cxx:273 TMemStatViewerGUI.cxx:274 TMemStatViewerGUI.cxx:275 TMemStatViewerGUI.cxx:276 TMemStatViewerGUI.cxx:277 TMemStatViewerGUI.cxx:278 TMemStatViewerGUI.cxx:279 TMemStatViewerGUI.cxx:280 TMemStatViewerGUI.cxx:281 TMemStatViewerGUI.cxx:282 TMemStatViewerGUI.cxx:283 TMemStatViewerGUI.cxx:284 TMemStatViewerGUI.cxx:285 TMemStatViewerGUI.cxx:286 TMemStatViewerGUI.cxx:287 TMemStatViewerGUI.cxx:288 TMemStatViewerGUI.cxx:289 TMemStatViewerGUI.cxx:290 TMemStatViewerGUI.cxx:291 TMemStatViewerGUI.cxx:292 TMemStatViewerGUI.cxx:293 TMemStatViewerGUI.cxx:294 TMemStatViewerGUI.cxx:295 TMemStatViewerGUI.cxx:296 TMemStatViewerGUI.cxx:297 TMemStatViewerGUI.cxx:298 TMemStatViewerGUI.cxx:299 TMemStatViewerGUI.cxx:300 TMemStatViewerGUI.cxx:301 TMemStatViewerGUI.cxx:302 TMemStatViewerGUI.cxx:303 TMemStatViewerGUI.cxx:304 TMemStatViewerGUI.cxx:305 TMemStatViewerGUI.cxx:306 TMemStatViewerGUI.cxx:307 TMemStatViewerGUI.cxx:308 TMemStatViewerGUI.cxx:309 TMemStatViewerGUI.cxx:310 TMemStatViewerGUI.cxx:311 TMemStatViewerGUI.cxx:312 TMemStatViewerGUI.cxx:313 TMemStatViewerGUI.cxx:314 TMemStatViewerGUI.cxx:315 TMemStatViewerGUI.cxx:316 TMemStatViewerGUI.cxx:317 TMemStatViewerGUI.cxx:318 TMemStatViewerGUI.cxx:319 TMemStatViewerGUI.cxx:320 TMemStatViewerGUI.cxx:321 TMemStatViewerGUI.cxx:322 TMemStatViewerGUI.cxx:323 TMemStatViewerGUI.cxx:324 TMemStatViewerGUI.cxx:325 TMemStatViewerGUI.cxx:326 TMemStatViewerGUI.cxx:327 TMemStatViewerGUI.cxx:328 TMemStatViewerGUI.cxx:329 TMemStatViewerGUI.cxx:330 TMemStatViewerGUI.cxx:331 TMemStatViewerGUI.cxx:332 TMemStatViewerGUI.cxx:333 TMemStatViewerGUI.cxx:334 TMemStatViewerGUI.cxx:335 TMemStatViewerGUI.cxx:336 TMemStatViewerGUI.cxx:337 TMemStatViewerGUI.cxx:338 TMemStatViewerGUI.cxx:339 TMemStatViewerGUI.cxx:340 TMemStatViewerGUI.cxx:341 TMemStatViewerGUI.cxx:342 TMemStatViewerGUI.cxx:343 TMemStatViewerGUI.cxx:344 TMemStatViewerGUI.cxx:345 TMemStatViewerGUI.cxx:346 TMemStatViewerGUI.cxx:347 TMemStatViewerGUI.cxx:348 TMemStatViewerGUI.cxx:349 TMemStatViewerGUI.cxx:350 TMemStatViewerGUI.cxx:351 TMemStatViewerGUI.cxx:352 TMemStatViewerGUI.cxx:353 TMemStatViewerGUI.cxx:354 TMemStatViewerGUI.cxx:355 TMemStatViewerGUI.cxx:356 TMemStatViewerGUI.cxx:357 TMemStatViewerGUI.cxx:358 TMemStatViewerGUI.cxx:359 TMemStatViewerGUI.cxx:360 TMemStatViewerGUI.cxx:361 TMemStatViewerGUI.cxx:362 TMemStatViewerGUI.cxx:363 TMemStatViewerGUI.cxx:364 TMemStatViewerGUI.cxx:365 TMemStatViewerGUI.cxx:366 TMemStatViewerGUI.cxx:367 TMemStatViewerGUI.cxx:368 TMemStatViewerGUI.cxx:369 TMemStatViewerGUI.cxx:370 TMemStatViewerGUI.cxx:371 TMemStatViewerGUI.cxx:372 TMemStatViewerGUI.cxx:373 TMemStatViewerGUI.cxx:374 TMemStatViewerGUI.cxx:375 TMemStatViewerGUI.cxx:376 TMemStatViewerGUI.cxx:377 TMemStatViewerGUI.cxx:378 TMemStatViewerGUI.cxx:379 TMemStatViewerGUI.cxx:380 TMemStatViewerGUI.cxx:381 TMemStatViewerGUI.cxx:382 TMemStatViewerGUI.cxx:383 TMemStatViewerGUI.cxx:384 TMemStatViewerGUI.cxx:385 TMemStatViewerGUI.cxx:386 TMemStatViewerGUI.cxx:387 TMemStatViewerGUI.cxx:388 TMemStatViewerGUI.cxx:389 TMemStatViewerGUI.cxx:390 TMemStatViewerGUI.cxx:391 TMemStatViewerGUI.cxx:392 TMemStatViewerGUI.cxx:393 TMemStatViewerGUI.cxx:394 TMemStatViewerGUI.cxx:395 TMemStatViewerGUI.cxx:396 TMemStatViewerGUI.cxx:397 TMemStatViewerGUI.cxx:398 TMemStatViewerGUI.cxx:399 TMemStatViewerGUI.cxx:400 TMemStatViewerGUI.cxx:401 TMemStatViewerGUI.cxx:402 TMemStatViewerGUI.cxx:403 TMemStatViewerGUI.cxx:404 TMemStatViewerGUI.cxx:405 TMemStatViewerGUI.cxx:406 TMemStatViewerGUI.cxx:407 TMemStatViewerGUI.cxx:408 TMemStatViewerGUI.cxx:409 TMemStatViewerGUI.cxx:410