rvs-c-api 0.5.0

C-API for Rvs - A library for defining and evaluating random variables using a simple DSL
Documentation
use rvs;

use std::io;
use std::path::Path;
use std::path::PathBuf;

pub struct Context {
    parser: rvs::Parser,
    seed: rvs::Seed,
    search_path: rvs::SearchPath,
}

impl Context {
    pub fn new(search_path: rvs::SearchPath, seed: rvs::Seed) -> Context {
        Context {
            parser: rvs::Parser::new(&search_path),
            seed,
            search_path,
        }
    }

    pub fn parse(&mut self, s: &str) -> rvs::Result<()> {
        self.parser.parse(s)
    }

    pub fn transform(&self, model: &mut rvs::Model) -> rvs::Result<()> {
        let mut transform = rvs::Transform::new(self.seed.clone());

        transform.transform(model, self.parser.ast())?;

        Ok(())
    }

    pub fn find_file(&self, path: &Path) -> io::Result<PathBuf> {
        self.search_path.find(path)
    }
}