/*******************************************************************************
* Copyright (c) 2016 Rogue Wave Software, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Rogue Wave Software, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.plugin.zdb.server.variables;
import static org.eclipse.che.plugin.zdb.server.expressions.IDbgDataFacet.Facet.KIND_LOCAL;
import static org.eclipse.che.plugin.zdb.server.expressions.IDbgDataFacet.Facet.KIND_SUPER_GLOBAL;
import static org.eclipse.che.plugin.zdb.server.expressions.IDbgDataFacet.Facet.KIND_THIS;
import java.util.Collections;
import org.eclipse.che.plugin.zdb.server.expressions.ZendDbgExpression;
import org.eclipse.che.plugin.zdb.server.expressions.ZendDbgExpressionEvaluator;
import org.eclipse.che.plugin.zdb.server.utils.ZendDbgVariableUtils;
/**
* Expression for fetching current stack frame variables.
*
* @author Bartlomiej Laczkowski
*/
public class ZendDbgVariables extends ZendDbgExpression {
private final static String DUMP_VARIABLES_EXPRESSION = "eval('if (isset($this)) {$this;}; return get_defined_vars();')";
private static final String SIGIL = "$";
public ZendDbgVariables(ZendDbgExpressionEvaluator expressionEvaluator) {
super(expressionEvaluator, DUMP_VARIABLES_EXPRESSION, Collections.emptyList());
}
@Override
protected ZendDbgExpression createChild(String variableName, Facet... facets) {
variableName = SIGIL + variableName;
Facet facet = KIND_LOCAL;
if (ZendDbgVariableUtils.isThis(variableName))
facet = KIND_THIS;
else if (ZendDbgVariableUtils.isSuperGlobal(variableName))
facet = KIND_SUPER_GLOBAL;
return new ZendDbgExpression(getExpressionEvaluator(), variableName, Collections.singletonList(variableName),
facet);
}
}