/* PSPP - computes sample statistics.
Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
- Written by Ben Pfaff <blp@gnu.org>.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
/* Divides SS into tokens separated by any of the DELIMITERS,
merging adjacent delimiters so that the empty string is never
produced as a token. Each call replaces TOKEN by the next
- token in SS, or by an empty string if no tokens remain.
+ token in SS, or by an empty string if no tokens remain, and
+ then skips past the first delimiter following the token.
Returns true if a token was obtained, false otherwise.
Before the first call, initialize *SAVE_IDX to 0. Do not
{
ss_advance (&ss, *save_idx);
*save_idx += ss_ltrim (&ss, delimiters);
- *save_idx += ss_get_chars (&ss, ss_cspan (ss, delimiters), token);
+ ss_get_chars (&ss, ss_cspan (ss, delimiters), token);
+ *save_idx += ss_length (*token) + 1;
return ss_length (*token) > 0;
}
return false;
}
+/* If SS begins with TARGET, removes it and returns true.
+ Otherwise, returns false without changing SS. */
+bool
+ss_match_string (struct substring *ss, const struct substring target)
+{
+ size_t length = ss_length (target);
+ if (ss_equals (ss_head (*ss, length), target))
+ {
+ ss_advance (ss, length);
+ return true;
+ }
+ else
+ return false;
+}
+
/* Removes the first character from SS and returns it.
If SS is empty, returns EOF without modifying SS. */
int