diff options
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/aterm.cc | 12 | ||||
-rw-r--r-- | src/libutil/aterm.hh | 6 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/libutil/aterm.cc b/src/libutil/aterm.cc index dc6abf9e70e8..fb734b3a0847 100644 --- a/src/libutil/aterm.cc +++ b/src/libutil/aterm.cc @@ -81,6 +81,18 @@ ATMatcher & operator >> (ATMatcher & pos, const string & s) } +ATMatcher & operator >> (ATMatcher & pos, int & n) +{ + n = 0; + ATerm t; + pos = pos >> t; + if (failed(pos)) return pos; + if (ATgetType(t) != AT_INT) return fail(pos); + n = ATgetInt((ATermInt) t); + return pos; +} + + ATMatcher & operator >> (ATMatcher & pos, ATermList & out) { out = 0; diff --git a/src/libutil/aterm.hh b/src/libutil/aterm.hh index d38d8e3f4d7a..577b784be202 100644 --- a/src/libutil/aterm.hh +++ b/src/libutil/aterm.hh @@ -61,7 +61,7 @@ ATMatcher & atMatch(ATMatcher & pos, ATerm t); /* Get the next argument of an application. */ ATMatcher & operator >> (ATMatcher & pos, ATerm & out); -/* Get the name of the function symbol of an applicatin, or the next +/* Get the name of the function symbol of an application, or the next argument of an application as a string. */ ATMatcher & operator >> (ATMatcher & pos, string & out); @@ -70,6 +70,10 @@ ATMatcher & operator >> (ATMatcher & pos, string & out); ATMatcher & operator >> (ATMatcher & pos, const string & s); /* Get the next argument of an application, and verify that it is a + integer. */ +ATMatcher & operator >> (ATMatcher & pos, int & n); + +/* Get the next argument of an application, and verify that it is a list. */ ATMatcher & operator >> (ATMatcher & pos, ATermList & out); |