Subclass.pm 843 B

123456789101112131415161718192021222324252627282930313233
  1. package Logos::Generator::MobileSubstrate::Subclass;
  2. use strict;
  3. use parent qw(Logos::Generator::MobileSubstrate::Class);
  4. # declarations is inherited from Class.
  5. sub _initExpression {
  6. my $self = shift;
  7. my $class = shift;
  8. my $cgen = Logos::Generator::for($class->superclass);
  9. return "objc_allocateClassPair(".$cgen->variable.", \"".$class->name."\", 0); objc_registerClassPair(".$self->variable($class).")";
  10. }
  11. sub initializers {
  12. my $self = shift;
  13. my $class = shift;
  14. my $return = "";
  15. $return .= "{ ";
  16. $return .= $self->SUPER::initializers($class)." ";
  17. # <ivars>
  18. foreach(@{$class->ivars}) {
  19. $return .= Logos::Generator::for($_)->initializers;
  20. }
  21. # </ivars>
  22. foreach(keys %{$class->protocols}) {
  23. $return .= "class_addProtocol(".$self->variable($class).", objc_getProtocol(\"$_\")); ";
  24. }
  25. $return .= "}";
  26. return $return;
  27. }
  28. 1;