PageRenderTime 45ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/Examples/chicken/class/test-lowlevel-class.scm

#
Lisp | 76 lines | 52 code | 16 blank | 8 comment | 0 complexity | 6f994a91b31923c29f091b261b92ac63 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. ;; This file illustrates the low-level C++ interface generated
  2. ;; by SWIG.
  3. (load-library 'example "class.so")
  4. (declare (uses example))
  5. ;; ----- Object creation -----
  6. (display "Creating some objects:\n")
  7. (define c (new-Circle 10.0))
  8. (display " Created circle ")
  9. (display c)
  10. (display "\n")
  11. (define s (new-Square 10.0))
  12. (display " Created square ")
  13. (display s)
  14. (display "\n")
  15. ;; ----- Access a static member -----
  16. (display "\nA total of ")
  17. (display (Shape-nshapes))
  18. (display " shapes were created\n")
  19. ;; ----- Member data access -----
  20. ;; Set the location of the object
  21. (Shape-x-set c 20.0)
  22. (Shape-y-set c 30.0)
  23. (Shape-x-set s -10.0)
  24. (Shape-y-set s 5.0)
  25. (display "\nHere is their current position:\n")
  26. (display " Circle = (")
  27. (display (Shape-x-get c))
  28. (display ", ")
  29. (display (Shape-y-get c))
  30. (display ")\n")
  31. (display " Square = (")
  32. (display (Shape-x-get s))
  33. (display ", ")
  34. (display (Shape-y-get s))
  35. (display ")\n")
  36. ;; ----- Call some methods -----
  37. (display "\nHere are some properties of the shapes:\n")
  38. (let
  39. ((disp (lambda (o)
  40. (display " ")
  41. (display o)
  42. (display "\n")
  43. (display " area = ")
  44. (display (Shape-area o))
  45. (display "\n")
  46. (display " perimeter = ")
  47. (display (Shape-perimeter o))
  48. (display "\n"))))
  49. (disp c)
  50. (disp s))
  51. (display "\nGuess I'll clean up now\n")
  52. ;; Note: this invokes the virtual destructor
  53. (set! c #f)
  54. (set! s #f)
  55. (gc #t)
  56. (set! s 3)
  57. (display (Shape-nshapes))
  58. (display " shapes remain\n")
  59. (display "Goodbye\n")
  60. (exit)