--m.stone September 26, 1980 5:47 PM -- Last Edited by: Stone, March 15, 1983 3:27 pm DIRECTORY SplineDefs: FROM "SplineDefs"; Splines: PROGRAM IMPORTS RegularAL: SplineDefs,RegularUM: SplineDefs,LocalSpline: SplineDefs EXPORTS SplineDefs = BEGIN OPEN SplineDefs; TooFewKnots: PUBLIC SIGNAL[numknots: INTEGER] = CODE; UnknownSpline: PUBLIC SIGNAL[splineType: SplineType] = CODE; MakeSpline: PUBLIC PROCEDURE [knots: KnotSequence, splineType: SplineType] RETURNS [CoeffsSequence] = BEGIN allCoeffs: CoeffsSequence; numknots: INTEGER _ knots.length; SELECT splineType FROM IN [naturalUM..cyclicUM] => allCoeffs _ RegularUM.MakeSpline[knots,splineType ! RegularUM.TooFewKnots => BEGIN SIGNAL TooFewKnots[numknots]; CONTINUE; END; RegularUM.UnknownSpline => BEGIN SIGNAL UnknownSpline[splineType]; CONTINUE; END ]; IN [naturalAL..cyclicAL] => allCoeffs _ RegularAL.MakeSpline[knots,splineType ! RegularAL.TooFewKnots => BEGIN SIGNAL TooFewKnots[numknots]; CONTINUE; END; RegularAL.UnknownSpline => BEGIN SIGNAL UnknownSpline[splineType]; CONTINUE; END ]; IN [bezier..crspline] => allCoeffs _ LocalSpline.MakeSpline[knots,splineType ! LocalSpline.TooFewKnots => BEGIN SIGNAL TooFewKnots[numknots]; CONTINUE; END; LocalSpline.UnknownSpline => BEGIN SIGNAL UnknownSpline[splineType]; CONTINUE; END ]; ENDCASE => SIGNAL UnknownSpline[splineType]; RETURN[allCoeffs]; END; END. Ęü˜JšmĪcWĪk œžœžœžœEžœžœžœžœžœ žœžœžœžœžœĪn œžœž œ0žœžœ&žœžœ žœžœqžœžœžœžœ$žœžœžœžœžœqžœžœžœžœ$žœžœžœžœžœržœžœžœžœ&žœžœžœžœ žœžœžœ žœžœ˜Ĩ —…—¨Ē