95 for (;i<3 && file.good();++i){
98 if (pattern ==
"lt;"){
101 else if (pattern ==
"gt;"){
105 for (;i!=0 && file.good();--i){
133 else {
return false; }
157 out.erase(out.size()-1,1);
158 while (file.good() &&
c!=
'\n'){
178 int startpos = out.find_first_not_of(
" \t\n");
179 int endpos = out.find_last_not_of(
" \t\n");
182 if (((
int) std::string::npos ==
startpos ) || ((
int) std::string::npos ==
endpos))
218 if (tag.at(0) !=
'<'){
225 ROOT::TMetaUtils::Error(
nullptr,
"Malformed tag %s (there should be no white-spaces between < and name-of-tag)!\n", tag.c_str());
231 for (std::string::size_type i = tag.length()-2;
true ; --i) {
239 ROOT::TMetaUtils::Error(
nullptr,
"Malformed tag %s (there should be no white-spaces between / and >)!\n", tag.c_str());
252 int pos1 = tag.find(
">");
254 for (std::string::size_type i =
pos1+1,
e = tag.length(); i <
e; ++i) {
278 std::string
tagEnd = tag.substr(tag.length()-2, 2);
288 std::string
tagBegin = tag.substr(0, 2);
299 for (std::string::size_type i = 0,
e = tag.length(); i <
e; ++i) {
302 if ((
c !=
'<') && (
c !=
'>'))
306 std::map<std::string, ETagNames>::iterator it;
331 std::string::size_type
cutend = tag.length() - 1 -
name.length();
337 int pos =
attrstr.find_last_not_of(
" \t\n");
357 for (std::string::size_type i = 0,
e =
attrstr.length()-1; i <
e; ++i) {
405 ROOT::TMetaUtils::Warning(
nullptr,
"At line %s. A pattern, \"%s\", without wildcards is being used. This selection rule would not have any effect. Transforming it to a rule based on name.\n",
lineNum,
attr_value.c_str());
457 std::ifstream file(fileName, std::ios::binary);
475 std::unique_ptr<ClassSelectionRule>
csr;
476 std::unique_ptr<FunctionSelectionRule>
fsr;
477 std::unique_ptr<VariableSelectionRule>
vsr;
478 std::unique_ptr<EnumSelectionRule>
esr;
487 std::ostringstream buf;
498 std::vector<Attributes>
attrs;
528 csr->SetRequestStreamerInfo(
true);
784 attrs.emplace_back(
"fromTypedef",
"true");
833 for (
int i = 0,
n =
attrs.size(); i <
n; ++i) {
838 const std::string
attrs[11] ={
"sourceClass",
850 for (
unsigned int i=0;i<11;++i) {
929 for (
int i = 0,
n =
attrs.size(); i <
n; ++i) {
936 csr->SetRequestNoStreamer(
true);
939 "XML at line %s: class attribute 'noStreamer' must be 'true' or 'false' (it was %s)\n",
947 if (
csr->RequestedRNTupleSerializationMode() == -1) {
950 "XML at line %s: class attribute 'rntupleStreamerMode' must be either 'true' or 'false', "
954 csr->SetRequestedRNTupleSerializationMode(1);
957 if (
csr->RequestedRNTupleSerializationMode() == 1) {
960 "XML at line %s: class attribute 'rntupleStreamerMode' must be either 'true' or 'false', "
964 if (!
csr->RequestedRNTupleSoARecord().empty()) {
967 "XML at line %s: class attributes rntupleStreamerMode and rntupleSoARecord "
968 "are mutually exclusive\n",
971 csr->SetRequestedRNTupleSerializationMode(-1);
976 "XML at line %s: class attribute 'rntupleStreamerMode' must be 'true' or 'false' "
984 if (
csr->RequestedRNTupleSerializationMode() == -1) {
987 "XML at line %s: class attributes rntupleStreamerMode and rntupleSoARecord "
988 "are mutually exclusive\n",
997 csr->SetRequestNoInputOperator(
true);
1000 "XML at line %s: class attribute 'noInputOperator' must be 'true' or 'false' (it was %s)\n",
1024 "Line %s: assigning new value %s to attribue %s (it was %s)\n",
1032 bsr->SetAttributeValue(
"pattern",
"*");
1042 "Line %s: assigning new value %s to attribue %s (it was %s)\n",
1074 csr->AddFieldSelectionRule(*
vsr);
1077 csr->AddMethodSelectionRule(*
fsr);
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t sel
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t attr
VariableSelectionRule EnumSelectionRule
VariableSelectionRule FunctionSelectionRule
const_iterator begin() const
const_iterator end() const
The class representing the collection of selection rules.
void AddVariableSelectionRule(const VariableSelectionRule &varSel)
void AddClassSelectionRule(const ClassSelectionRule &classSel)
void AddEnumSelectionRule(const EnumSelectionRule &enumSel)
void ClearSelectionRules()
void AddFunctionSelectionRule(const FunctionSelectionRule &funcSel)
void SetHasFileNameRule(bool file_rule)
cling::Interpreter & fInterp
static bool IsClosingTag(const std::string &tag)
static void PopulateMap()
static std::map< std::string, ETagNames > fgMapTagNames
static bool CheckIsTagOK(const std::string &tag)
bool Parse(const std::string &fileName, SelectionRules &out)
static bool GetNextTag(std::ifstream &file, std::string &out, int &lineCount)
static bool GetAttributes(const std::string &tag, std::vector< Attributes > &out, const char *lineNum)
static ETagNames GetNameOfTag(const std::string &tag, std::string &name)
static bool IsStandaloneTag(const std::string &tag)
void ProcessReadPragma(const char *args, std::string &error_string)
I am being called when a read pragma is encountered.
void ProcessReadRawPragma(const char *args, std::string &error_string)
I am being called then a readraw pragma is encountered.