Package abstrasy.externals

Source Code of abstrasy.externals.OptAccessProvider

package abstrasy.externals;

import abstrasy.Node;
import abstrasy.SELF;

/**
* Abstrasy Interpreter
*
* Copyright : Copyright (c) 2006-2012, Luc Bruninx.
*
* Concédée sous licence EUPL, version 1.1 uniquement (la «Licence»).
*
* Vous ne pouvez utiliser la présente oeuvre que conformément à la Licence.
* Vous pouvez obtenir une copie de la Licence à l’adresse suivante:
*
*   http://www.osor.eu/eupl
*
* Sauf obligation légale ou contractuelle écrite, le logiciel distribué sous
* la Licence est distribué "en l’état", SANS GARANTIES OU CONDITIONS QUELLES
* QU’ELLES SOIENT, expresses ou implicites.
*
* Consultez la Licence pour les autorisations et les restrictions
* linguistiques spécifiques relevant de la Licence.
*
*
* @author Luc Bruninx
* @version 1.0
*/

public class OptAccessProvider implements OpAccessProviderInterface {

    private OptAccessList optAccessList = new OptAccessList();

    public void setOptAccessList(OptAccessList optAccessList) {
        this.optAccessList = optAccessList;
    }

    public OptAccessList getOptAccessList() {
        return optAccessList;
    }

    public Node external_get_option(Node startAt) throws Exception {
        /*
         * forme (:get-option 'option)
         *
         * Retourne l'état de l'option.
         *
         * Symbole(s) supporté(s): voir ci-dessus.
         *
         */
        startAt.isGoodArgsCnt(2);
        String id = startAt.getSubNode(1, Node.TYPE_QSYMBOL).getSymbol().getStr();
        return optAccessList.get(id);
    }

    public Node external_mutator_set_option(Node startAt) throws Exception {
        /*
         * forme (:set-option! 'option valeur)
         *
         * Fixe l'option dont le symbole est indiqué.
         *
         * Voir symbole(s) supporté(s) ci-dessus
         *
         */
        startAt.isGoodArgsCnt(3);
        SELF.require_SELF_mutable();
        String id = startAt.getSubNode(1, Node.TYPE_QSYMBOL).getSymbol().getStr();
        optAccessList.set(id, startAt.getSubNode(2, Node.VTYPE_VALUABLE));
        return null;
    }

    public Node external_available_options(Node startAt) throws Exception {
        Node opts = Node.createCList();
        for (int i = 0; i < optAccessList.size(); i++)
            opts.addElement(Node.createQSymbol(optAccessList.get(i).getKey()));
        return opts;
    }


}
TOP

Related Classes of abstrasy.externals.OptAccessProvider

TOP
Copyright © 2018 www.massapi.com. 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.