You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

IWeavingSupport.java 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /* *******************************************************************
  2. * Copyright (c) 2008 Contributors
  3. * All rights reserved.
  4. * This program and the accompanying materials are made available
  5. * under the terms of the Eclipse Public License v1.0
  6. * which accompanies this distribution and is available at
  7. * http://www.eclipse.org/legal/epl-v10.html
  8. *
  9. * Contributors:
  10. * Andy Clement initial implementation
  11. * ******************************************************************/
  12. package org.aspectj.weaver;
  13. import org.aspectj.weaver.ast.Var;
  14. import org.aspectj.weaver.patterns.PerClause;
  15. import org.aspectj.weaver.patterns.Pointcut;
  16. /**
  17. * Encapsulates operations that a world will need to support if it is actually going to modify bytecode rather than just match
  18. * against it. @see BcelWeavingSupport
  19. *
  20. * @author Andy Clement
  21. */
  22. public interface IWeavingSupport {
  23. Advice createAdviceMunger(AjAttribute.AdviceAttribute attribute, Pointcut pointcut, Member signature,
  24. ResolvedType concreteAspect);
  25. ConcreteTypeMunger makeCflowStackFieldAdder(ResolvedMember cflowField);
  26. ConcreteTypeMunger makeCflowCounterFieldAdder(ResolvedMember cflowField);
  27. /**
  28. * Register a munger for perclause {@literal @}AJ aspect so that we add aspectOf(..) to them as needed
  29. *
  30. * @see org.aspectj.weaver.bcel.BcelWeavingSupport#makePerClauseAspect(ResolvedType, org.aspectj.weaver.patterns.PerClause.Kind)
  31. */
  32. ConcreteTypeMunger makePerClauseAspect(ResolvedType aspect, PerClause.Kind kind);
  33. ConcreteTypeMunger concreteTypeMunger(ResolvedTypeMunger munger, ResolvedType aspectType);
  34. ConcreteTypeMunger createAccessForInlineMunger(ResolvedType inAspect);
  35. Var makeCflowAccessVar(ResolvedType formalType, Member cflowField, int arrayIndex);
  36. }