ViewBuilder.scm 1.1 KB

1234567891011121314151617181920212223242526
  1. (require 'android-defs)
  2. (define-simple-class ViewBuilder (gnu.kawa.reflect.CompileBuildObject)
  3. (activityType ::gnu.bytecode.ClassType allocation: 'static
  4. init: (gnu.bytecode.ClassType:make "android.app.Activity"))
  5. ((hasAddChildMethod) #t)
  6. ((getAddChildMethodName)
  7. "addView")
  8. ((useBuilder numCode::int visitor::gnu.expr.InlineCalls) ::boolean
  9. (if (or (< (getArgCount) 2)
  10. (let* ((arg1 (visitor:visit (getArg 1) #!null))
  11. (type1 (arg1:getType))
  12. (cmp (invoke activityType 'compare type1)))
  13. (setArg 1 arg1)
  14. (< cmp 0)))
  15. (let ((activity-decl (((getCompilation):getModule):lookup 'current-activity)))
  16. (insertArgument 1
  17. (visitor:visit
  18. ((getCompilation):makeCoercion
  19. (gnu.expr.ApplyExp (gnu.expr.ReferenceExp activity-decl))
  20. android.app.Activity)
  21. #!null))
  22. #t)
  23. (invoke-special gnu.kawa.reflect.CompileBuildObject (this) 'useBuilder numCode visitor))
  24. ))