home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / oper_sys / emerald / emrldsys.lha / Language / Compiler / Builtins / phoney_String.m < prev    next >
Encoding:
Text File  |  1990-08-16  |  2.6 KB  |  83 lines

  1. % @(#)phoney_String.m    1.2  3/4/88
  2. %
  3. export _StringObject to "Builtins"
  4.  
  5. const _StringObject == immutable object _StringObject
  6.   export getSignature, create, literal
  7.  
  8.   const StringType == immutable type StringType
  9.     function getElement [index : Integer] -> [e : Character]
  10.     function getSlice [lb : Integer, length : Integer] -> [a : String]
  11.     function || [o : String] -> [r : String]
  12.       % r <- self || o
  13.     function asString -> [r : String]
  14.       % r <- self
  15.     function > [o : String] -> [r : Boolean]
  16.       % r <- self > o
  17.     function >= [o : String] -> [r : Boolean]
  18.       % r <- self >= o
  19.     function < [o : String] -> [r : Boolean]
  20.       % r <- self < o
  21.     function <= [o : String] -> [r : Boolean]
  22.       % r <- self <= o
  23.     function = [o : String] -> [r : Boolean]
  24.       % r <- self = o
  25.     function != [o : String] -> [r : Boolean]
  26.       % r <- self != o
  27.     function length -> [ r : Integer ]
  28.     operation lowlevelsleazysetelement [Integer, Character]
  29.   end StringType
  30.   function getSignature -> [result : Signature]
  31.     result <- StringType
  32.   end getSignature
  33.   
  34.   function literal [rep : Any, offset : Integer, length : Integer]
  35.     -> [result : StringType]
  36.     result <- self.create[length]
  37.   end literal
  38.   function create [length : Integer] -> [result : StringType]
  39.     result <- immutable object aString
  40.       export getElement, getSlice, ||, asString, >, >=, <, <=, =, !=, length,
  41.         lowlevelsleazysetelement
  42.  
  43.       function getElement [index : Integer] -> [e : Character]
  44.     primitive 011 [e] <- [index]
  45.       end getElement
  46.       function getSlice [lb : Integer, length : Integer] -> [a : String]
  47.     primitive 111 [a] <- [lb, length]
  48.       end getSlice
  49.       function || [o : String] -> [r : String]
  50.     primitive 211 [r] <- [o]
  51.       end ||
  52.       function asString -> [r : String]
  53.     primitive 311 [r] <- []
  54.       end asString
  55.       function > [o : String] -> [r : Boolean]
  56.     primitive 411 [r] <- [o]
  57.       end >
  58.       function >= [o : String] -> [r : Boolean]
  59.     primitive 511 [r] <- [o]
  60.       end >=
  61.       function < [o : String] -> [r : Boolean]
  62.     primitive 611 [r] <- [o]
  63.       end <
  64.       function <= [o : String] -> [r : Boolean]
  65.     primitive 711 [r] <- [o]
  66.       end <=
  67.       function = [o : String] -> [r : Boolean]
  68.     primitive 811 [r] <- [o]
  69.       end =
  70.       function != [o : String] -> [r : Boolean]
  71.     primitive 911 [r] <- [o]
  72.       end !=
  73.       function length -> [ r : Integer ]
  74.     primitive 1011 [r] <- []
  75.       end length
  76.       operation lowlevelsleazysetelement [i : Integer, c : Character]
  77.     primitive 1111 [] <- [i, c]
  78.       end lowlevelsleazysetelement
  79.     end aString
  80.   end create
  81. end _StringObject
  82.