Interface for qBeta module object

Origin: LIB

StringLib: obj
   %id "String module"
   %module LIB
   %public
   String:
      %id "String pattern"
      %OSDvisibility disguised
      %basic
      %immutable
      %public
      length:
         out V: var integer
      @get::
         %basic
         in get: var integer
         out ch: var char
      +:
         in S: ref String
         out V: ref String
         L: var integer
      asLowerCase:
         in T: ref String
            --.. primitive or ?
            
      scan:
         %Public
         current: var char
      print:
         gogo:
      =:
         in V: ref String
         out B: var boolean
      <>:
         in V: ref String
         out B: var boolean
      <=:
         in V: ref string
         out B: var boolean
         loop: obj
            -- "Hello" <= "World" since H <= W
            -- "Qweabc" <= "Qwevwxy" since a <= e
            -- "Qweayc" <= "Qwexby"
            -- "Qwe" <= "Qwerty"
            -- "Qwerty" <= "Qwe" - false
            -- "" <= "qwerty" - true
            -- "qwerty" <= "" - false
            -- "" <= "" - true
            matchEq:
               inx: var integer
               c1: var char
               c2: var char
               isEmpty: obj
               loop: obj
               doit: obj
            L: var integer
            L1: var integer
            L2: var integer
   C:
      in ch: var char
      out S: ref LIB.StringLib.String
      D: obj Indexed(,char)
   I2S:
      %id "I2s"
      %globals
      in V: var integer
      out S: ref LIB.StringLib.String
      D: obj Indexed(,char)
      D2: obj Indexed(,char)
      L: var integer
      isNeg: var Boolean
      T: ref LIB.stringLib.String