Class.pm 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package Logos::Generator::Base::Class;
  2. use Logos::Generator;
  3. use strict;
  4. sub _initExpression {
  5. my $self = shift;
  6. my $class = shift;
  7. return $class->expression if $class->expression;
  8. return "objc_getClass(\"".$class->name."\")";
  9. }
  10. sub _metaInitExpression {
  11. my $self = shift;
  12. my $class = shift;
  13. return $class->metaexpression if $class->metaexpression;
  14. return "object_getClass(".$self->variable($class).")";
  15. }
  16. sub variable {
  17. my $self = shift;
  18. my $class = shift;
  19. return Logos::sigil("class").$class->group->name."\$".$class->name;
  20. }
  21. sub metaVariable {
  22. my $self = shift;
  23. my $class = shift;
  24. return Logos::sigil("metaclass").$class->group->name."\$".$class->name;
  25. }
  26. sub declarations {
  27. my $self = shift;
  28. my $class = shift;
  29. my $return = "";
  30. for(@{$class->methods}) {
  31. $return .= Logos::Generator::for($_)->declarations;
  32. }
  33. return $return;
  34. }
  35. sub initializers {
  36. my $self = shift;
  37. my $class = shift;
  38. my $return = "";
  39. for(@{$class->methods}) {
  40. $return .= Logos::Generator::for($_)->initializers;
  41. }
  42. for(@{$class->properties}) {
  43. $return .= Logos::Generator::for($_)->initializers;
  44. }
  45. return $return;
  46. }
  47. 1;