<?php
/**
 * 長い説明文
 * 
 * @package aowp.aspect.pointcut.designators
 */
/**
 * 現在、サポートされていません (ver. 0.8)。
 * 次期リリース予定です。
 * メソッドの中身のジョインポイントを選択します。
 * 
 * @package aowp.aspect.pointcut.designators
 */
class AOWP_WithincodePointcut extends AOWP_StaticPointcut {
    private $_modifiers;
	private $_className;
	private $_methodName;
	private $_argumentsCount;
	
	/**
	 * Constructor.
	 */
    public function __construct ($modifiers, $className, $methodName, $argumentsCount) {
		$this->_modifiers      = $modifiers;
		$this->_className      = $className;
		$this->_methodName     = $methodName;
		$this->_argumentsCount = $argumentsCount;
	}
   
    protected function _isJoinPointShadow(AOWP_JoinPoint $joinPoint) {
    	return AOWP_Pointcut::patternMatch($this->_modifiers, $joinPoint->getBelongMethodModifiers()) &&
			AOWP_Pointcut::patternMatch($this->_className, $joinPoint->getBelongClassName()) &&
			AOWP_Pointcut::patternMatch($this->_methodName, $joinPoint->getBelongMethodName()) &&
			(($this->_argumentsCount === -1) || ($this->_argumentsCount === $joinPoint->getBelongMethodArgumentsCount()));
    }
}
?>
