All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.xowl.infra.engine.ClojureFunction Maven / Gradle / Ivy

/*******************************************************************************
 * Copyright (c) 2015 Laurent Wouters
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General
 * Public License along with this program.
 * If not, see .
 *
 * Contributors:
 *     Laurent Wouters - [email protected]
 ******************************************************************************/

package org.xowl.infra.engine;

import clojure.lang.IFn;

/**
 * Represents the definition of a Clojure function
 *
 * @author Laurent Wouters
 */
class ClojureFunction {
    /**
     * The function's name
     */
    private final String name;
    /**
     * The function's content definition as a string
     */
    private String content;
    /**
     * The function's compiled definition
     */
    private IFn clojure;

    /**
     * Gets the function's name
     *
     * @return The function's name
     */
    public String getName() {
        return name;
    }

    /**
     * Gets the function's content definition as a string
     *
     * @return The function's content definition as a string
     */
    public String getContent() {
        return content;
    }

    /**
     * Gets the function's compiled definition
     *
     * @return The function's compiled definition
     */
    public IFn getClojure() {
        return clojure;
    }

    /**
     * Sets the function's compiled definition
     *
     * @param clojure The function's compiled definition
     */
    public void setClojure(IFn clojure) {
        this.clojure = clojure;
        this.content = null;
    }

    /**
     * Initializes this function
     *
     * @param name    The function's name
     * @param content The function's content definition as a string
     */
    public ClojureFunction(String name, String content) {
        this.name = name;
        this.content = content;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy