[go: up one dir, main page]

Menu

[r49]: / trunk / class.ex  Maximize  Restore  History

Download this file

118 lines (86 with data), 2.2 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
with trace
global euclass person( sequence p )
sequence name
function create( sequence name )
return { name }
end function
procedure say( sequence speech )
printf( 1, "%s: \"%s\"\n", { this.name, speech})
end procedure
end euclass
global euclass coder( person c )
sequence language
procedure execute( sequence program )
this.say( "Running " & program )
end procedure
integer Integer
procedure debug( sequence program )
this.say( sprintf("Dang, %s didn't work...", {program}))
this.say( "Oh, there's the problem..." )
end procedure
end euclass
global euclass euphoria_coder( coder e )
function create( sequence name )
this = person.create( this, name )
this &= { "", 0 }
this.language = "Euphoria"
return this
end function
procedure test( sequence program )
coder c
c = this
this.execute( program )
this.debug( program )
this.execute( program )
this.say( "Excellent!")
end procedure
end euclass
global euclass c_coder( coder c )
sequence language
procedure compile( sequence program )
this.say( sprintf("Compiling %s...",{program}))
end procedure
procedure link( sequence program )
this.say( sprintf("Linking %s...",{program}))
end procedure
procedure execute( sequence program )
this.compile( program )
this.link( program )
coder.execute( this, program )
end procedure
procedure test( sequence program )
integer x, y, z
this.execute( program )
this.debug( program )
this.execute( program )
end procedure
function create( sequence name )
this = person.create( this, name )
this &= {"",0,""}
this.language = "C"
return this
end function
end euclass
euphoria_coder me
c_coder you
procedure foo( integer x )
? x
end procedure
me = euphoria_coder.create( "", "Matt" )
foo(3)
you = c_coder.create( "", "Fred" )
? you[coder.language]
puts(1,"\n")
me.say( sprintf( "I like to code in %s", {me.language}))
me.test( "EuApp.ex" )
puts(1, "\n")
you.say( sprintf( "I like to code in %s", {you.language}))
you.test( "CApp.c" )
include machine.e
function my_crash( object o )
puts(1,"You crashed!\n")
return 0
end function
? routine_id("my_crash")
crash_routine(routine_id("my_crash"))
? 1/0