[M3devel] some quake proposals for more string functions?

Jay K jay.krell at cornell.edu
Sun Jun 5 09:46:56 CEST 2016

A new abstract type that represents a set of characters:

  It might actually be a string underneath with 0 or 1 at each position, to aid ease of implementation.
  or a 2-array of 64-bit integers (implied that only characters 0-127 can be in a set)

And then functions that indicate how many characters from a set a string contains, or starts with, or ends with?

a = CharSet("a")
fo = CharSet("fo")
foo = CharSet("foo") % redundant but ok
fo == foo

StringCountSet("foo", a) :0 % how many characters in set a are in string "foo"
StringStartsSet("foo", fo) : 3 % how many characters in set fo does string "foo" start with
StringEndSet("food", fo) : 0 % how many characters in set fo does string "food" end with
FindFirstCharInSet("foo", fo): 0
FindFirstCharInSet("foo", CharSet("d"): -1 or length("foo") ?
FindNextCharInSet("foo", fo, 0): 1 ?
Might want to combine first/next functions, and require initialOffset and maximumOffset parameters?

StringOnlyContainsCharsInSet(str, set):
  return StringStartsSet(str, set) = length(str)

StringContainsNoCharsInSet(str, set):
  return StringCountSet(str, set) = 0

StringRemoveCharsInSetFromStart(str, set):
  return sub(str, StringStartsSet(str, set), length(str))

StringRemoveCharsInSetFromEnd(str, set):
  return sub(str, lenth(str) - StringStartsSet(str, set), length(str))

and then, really, we might add regexps find and find+replace, another day/year?

There is some overlap here with the stuff Olaf put in, granted.

Thank you,
 - Jay 		 	   		  

More information about the M3devel mailing list