Logo ROOT  
Reference Guide
RBrowserData.hxx
Go to the documentation of this file.
1// Author: Sergey Linev <S.Linev@gsi.de>
2// Date: 2019-10-14
3// Warning: This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback is welcome!
4
5/*************************************************************************
6 * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. *
7 * All rights reserved. *
8 * *
9 * For the licensing terms see $ROOTSYS/LICENSE. *
10 * For the list of contributors see $ROOTSYS/README/CREDITS. *
11 *************************************************************************/
12
13#ifndef ROOT7_RBrowserData
14#define ROOT7_RBrowserData
15
17
20
21#include <memory>
22#include <string>
23#include <vector>
24#include <utility>
25
26namespace ROOT {
27namespace Experimental {
28
29class RLogChannel;
30/// Log channel for Browser diagnostics.
31RLogChannel &BrowserLog();
32
33
35
36 std::shared_ptr<Browsable::RElement> fTopElement; ///<! top element
37
38 Browsable::RElementPath_t fWorkingPath; ///<! path showed in Breadcrumb
39
40 std::vector<std::pair<Browsable::RElementPath_t, std::shared_ptr<Browsable::RElement>>> fCache; ///<! already requested elements
41
42 Browsable::RElementPath_t fLastPath; ///<! path to last used element
43 std::shared_ptr<Browsable::RElement> fLastElement; ///<! last element used in request
44 std::vector<std::unique_ptr<Browsable::RItem>> fLastItems; ///<! created browser items - used in requests
45 bool fLastAllChilds{false}; ///<! if all chlds were extracted
46 std::vector<const Browsable::RItem *> fLastSortedItems; ///<! sorted child items, used in requests
47 std::string fLastSortMethod; ///<! last sort method
48 bool fLastSortReverse{false}; ///<! last request reverse order
49
50 void ResetLastRequestData(bool with_element);
51
52 bool ProcessBrowserRequest(const RBrowserRequest &request, RBrowserReply &reply);
53
54public:
55 RBrowserData() = default;
56
57 RBrowserData(std::shared_ptr<Browsable::RElement> elem) { SetTopElement(elem); }
58
59 virtual ~RBrowserData() = default;
60
61 void SetTopElement(std::shared_ptr<Browsable::RElement> elem);
62
64
66
68
69 std::string ProcessRequest(const RBrowserRequest &request);
70
71 std::shared_ptr<Browsable::RElement> GetElement(const std::string &str);
72 std::shared_ptr<Browsable::RElement> GetElementFromTop(const Browsable::RElementPath_t &path);
73
74 Browsable::RElementPath_t DecomposePath(const std::string &path, bool relative_to_work_element);
75 std::shared_ptr<Browsable::RElement> GetSubElement(const Browsable::RElementPath_t &path);
76
77 void ClearCache();
78};
79
80
81} // namespace Experimental
82} // namespace ROOT
83
84#endif
Way to browse (hopefully) everything in ROOT.
void SetTopElement(std::shared_ptr< Browsable::RElement > elem)
set top element for browsing
std::string fLastSortMethod
! last sort method
std::shared_ptr< Browsable::RElement > GetSubElement(const Browsable::RElementPath_t &path)
Returns sub-element starting from top, using cached data.
const Browsable::RElementPath_t & GetWorkingPath() const
Browsable::RElementPath_t DecomposePath(const std::string &path, bool relative_to_work_element)
Decompose path to elements Returns array of names for each element in the path, first element either ...
bool ProcessBrowserRequest(const RBrowserRequest &request, RBrowserReply &reply)
Process browser request.
std::vector< std::pair< Browsable::RElementPath_t, std::shared_ptr< Browsable::RElement > > > fCache
! already requested elements
std::shared_ptr< Browsable::RElement > GetElementFromTop(const Browsable::RElementPath_t &path)
Returns element with path, specified as Browsable::RElementPath_t.
RBrowserData(std::shared_ptr< Browsable::RElement > elem)
void ClearCache()
Clear internal objects cache.
std::vector< const Browsable::RItem * > fLastSortedItems
! sorted child items, used in requests
bool fLastAllChilds
! if all chlds were extracted
std::string ProcessRequest(const RBrowserRequest &request)
Process browser request, returns string with JSON of RBrowserReply data.
Browsable::RElementPath_t fWorkingPath
! path showed in Breadcrumb
bool fLastSortReverse
! last request reverse order
Browsable::RElementPath_t fLastPath
! path to last used element
std::shared_ptr< Browsable::RElement > fTopElement
! top element
void SetWorkingPath(const Browsable::RElementPath_t &path)
set working directory relative to top element
std::shared_ptr< Browsable::RElement > fLastElement
! last element used in request
std::shared_ptr< Browsable::RElement > GetElement(const std::string &str)
Returns element with path, specified as string.
std::vector< std::unique_ptr< Browsable::RItem > > fLastItems
! created browser items - used in requests
void ResetLastRequestData(bool with_element)
Reset all data correspondent to last request.
void CreateDefaultElements()
Create default elements shown in the RBrowser.
Reply on browser request.
Request send from client to get content of path element.
std::vector< std::string > RElementPath_t
Definition: RElement.hxx:21
RLogChannel & BrowserLog()
Log channel for Browser diagnostics.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...