about summary refs log tree commit diff
path: root/src/libutil
diff options
context:
space:
mode:
Diffstat (limited to 'src/libutil')
-rw-r--r--src/libutil/aterm.cc12
-rw-r--r--src/libutil/aterm.hh6
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);