Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.jruby.ir.operands;
 
// This represents a backtick string in Ruby
// Ex: `ls .`; `cp #{src} #{dst}`
//
// NOTE: This operand is only used in the initial stages of optimization.
// Further down the line, this string operand could get converted to calls
public class BacktickString extends Operand {
    final public List<Operandpieces;
    public BacktickString(Operand val) {
         = new ArrayList<Operand>();
        .add(val);
    }
    public BacktickString(List<Operandpieces) {
        this. = pieces;
    }
    @Override
    public boolean hasKnownValue() {
        for (Operand o : ) {
            if (!o.hasKnownValue()) return false;
        }
        return true;
    }
    @Override
    public Operand getSimplifiedOperand(Map<OperandOperandvalueMapboolean force) {
        List<OperandnewPieces = new ArrayList<Operand>();
        for (Operand p : ) {
            newPieces.add(p.getSimplifiedOperand(valueMapforce));
        }
        return new BacktickString(newPieces);
    }

    
Append the list of variables used in this operand to the input list
    @Override
    public void addUsedVariables(List<Variablel) {
        for (Operand o : ) {
            o.addUsedVariables(l);
        }
    }
    @Override
    public Operand cloneForInlining(InlinerInfo ii) {
        if (hasKnownValue()) return this;
        List<OperandnewPieces = new ArrayList<Operand>();
        for (Operand p : ) {
            newPieces.add(p.cloneForInlining(ii));
        }
        
        return new BacktickString(newPieces);
    }
    @Override
    public Object retrieve(ThreadContext contextIRubyObject selfDynamicScope currDynScopeObject[] temp) {
        RubyString newString = context.runtime.newString();
        for (Operand p) {
            RubyBasicObject piece = (RubyBasicObjectp.retrieve(contextselfcurrDynScopetemp);
            newString.append((piece instanceof RubyString) ? (RubyStringpiece : piece.to_s());
        }
        
        return self.callMethod(context"`"newString);
    }
    @Override
    public void visit(IRVisitor visitor) {
        visitor.BacktickString(this);
    }
    
    @Override
    public String toString() {
        return "`" + ( == null ? "[]" : ) + "`";
    }
New to GrepCode? Check out our FAQ X