Package org.cx4a.rsense.ruby

Examples of org.cx4a.rsense.ruby.Ruby


    public static Vertex globalAssign(Graph graph, GlobalAsgnNode node) {
        return globalAssign(graph, node, null);
    }

    public static Vertex globalAssign(Graph graph, GlobalAsgnNode node, Vertex src) {
        Ruby runtime = graph.getRuntime();
        VertexHolder holder = (VertexHolder) runtime.getGlobalVar(node.getName());
        if (src == null) {
            src = graph.createVertex(node.getValueNode());
        }
        if (holder == null) {
            holder = graph.createFreeVertexHolder();
            runtime.setGlobalVar(node.getName(), holder);
        }
        // Clear older types (performance issue)
        holder.getVertex().getTypeSet().clear();
        graph.addEdgeAndPropagate(src, holder.getVertex());
        return src;
View Full Code Here


        graph.addEdgeAndPropagate(src, holder.getVertex());
        return src;
    }

    public static Vertex globalVariable(Graph graph, GlobalVarNode node) {
        Ruby runtime = graph.getRuntime();
        VertexHolder holder = (VertexHolder) runtime.getGlobalVar(node.getName());
        if (holder == null) {
            holder = graph.createFreeVertexHolder();
            runtime.setGlobalVar(node.getName(), holder);
        }
        return holder.getVertex();
    }
View Full Code Here

        }
        return holder.getVertex();
    }

    public static void aliasGlobalVaraibles(Graph graph, String newName, String oldName) {
        Ruby runtime = graph.getRuntime();
        VertexHolder holder = (VertexHolder) runtime.getGlobalVar(oldName);
        if (holder == null) {
            holder = graph.createFreeVertexHolder();
            runtime.setGlobalVar(oldName, holder);
        }
        runtime.setGlobalVar(newName, holder); // no propagation ?
    }
View Full Code Here

        Vertex[] argVertices = new Vertex[args.length];
        for (int i = 0; i < argVertices.length; i++) {
            argVertices[i] = graph.createFreeSingleTypeVertex(args[i]);
        }

        Ruby runtime = graph.getRuntime();
        Context context = runtime.getContext();

        Block block = attr.getBlock();
        Scope scope = new LocalScope(method.getModule());
        context.pushFrame(context.getFrameModule(), name, receiver, block, Visibility.PUBLIC);
        context.pushScope(scope);
View Full Code Here

   
    public static Vertex yield(Graph graph, Block block, Collection<IRubyObject> args, boolean expanded, Vertex returnVertex) {
        if (block == null) {
            return Vertex.EMPTY;
        }
        Ruby runtime = graph.getRuntime();
        Context context = runtime.getContext();
       
        Node varNode = block.getVarNode();
        boolean noargblock = false;
        MultipleAsgnNode masgn = null;
        int preCount = 0;
View Full Code Here

    public static void toAryValue(Graph graph, ToAryVertex vertex) {
        vertex.addTypes(arrayValue(graph, vertex.getValueVertex()));
    }

    public static TypeSet arrayValue(Graph graph, Vertex vertex) {
        Ruby runtime = graph.getRuntime();
        TypeSet typeSet = new TypeSet();
        for (IRubyObject object : vertex.getTypeSet()) {
            if (object.isKindOf(runtime.getArray())) {
                typeSet.add(object);
            } else {
                CallVertex callVertex = new CallVertex(vertex.getNode(), "to_a", vertex, null, null);
                for (IRubyObject array : call(graph, callVertex).getTypeSet()) {
                    if (array.isKindOf(runtime.getArray())) {
                        typeSet.add(array);
                    } else {
                        Logger.warn("to_a should be return Array");
                    }
                }
View Full Code Here

    protected NodeDiff nodeDiff;
    protected Queue<DummyCall> dummyCallQueue = new LinkedList<DummyCall>();
    protected List<EventListener> eventListeners;

    public Graph() {
        this.runtime = new Ruby();
        this.runtime.setObjectAllocator(new ObjectAllocator());
        this.context = runtime.getContext();
        this.specialMethods = new HashMap<String, SpecialMethod>();
        this.eventListeners = new ArrayList<EventListener>();
        init();
View Full Code Here

TOP

Related Classes of org.cx4a.rsense.ruby.Ruby

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.