Require Class/basicCurveOnSurface

basicCurveOnSurface Subclass CurveOnSurface {
  Var "domain {[basicCurveOnSurface get domain]}"
  Method <Domain> {domain} {set [var domain] $domain}
  ClassVar "Domain-template {{[basicCurveOnSurface get domain]}}"

  Var "param [basicCurveOnSurface get param]" f-xy
  Method <Function> {param script} {
    if {[llength $param] != 1} {Error "Function must be of one variable"}
    set [var param] $param
    set [var f-xy] $script
  }
  ClassVar "Function-template {{t} {\n  let (x,y) = (t,t^2)\n}}"

  ClassVar {script-templates {Domain Function}}

  Method ScriptBegin {} {
    Vars domain param function
    Parent ScriptBegin
    set domain [Parent get domain]
    set f-xy {}
    set param [Parent get param]
  }
}

CurveOnSurface Register
