Fetching modules and their names
This commit is contained in:
@@ -3,13 +3,18 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sword/swmgr.h>
|
#include <sword/swmgr.h>
|
||||||
|
|
||||||
#include "rust/cxx.h"
|
#include "rust/cxx.h"
|
||||||
|
#include "module.h"
|
||||||
|
|
||||||
class Mgr : public sword::SWMgr {
|
class Mgr : public sword::SWMgr {
|
||||||
public:
|
public:
|
||||||
Mgr();
|
Mgr();
|
||||||
Mgr(const char*);
|
Mgr(const char*);
|
||||||
rust::Vec<rust::String> get_modules() const;
|
rust::Vec<rust::String> get_modules() const;
|
||||||
|
std::unique_ptr<Module> get_module(const rust::String &name) {
|
||||||
|
return std::unique_ptr<Module>(new Module(this->getModule(std::string(name).c_str())));
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
std::unique_ptr<Mgr> new_mgr();
|
std::unique_ptr<Mgr> new_mgr();
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <sword/swmodule.h>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "rust/cxx.h"
|
||||||
|
|
||||||
|
class Module {
|
||||||
|
private:
|
||||||
|
sword::SWModule* module;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Module(sword::SWModule* module) : module(module) { };
|
||||||
|
|
||||||
|
rust::String get_name() const {
|
||||||
|
return rust::String(this->module->getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
rust::String strip_text() {
|
||||||
|
return std::string(
|
||||||
|
(const char*) this->module->stripText()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
+11
-2
@@ -4,12 +4,18 @@ pub use ffi::*;
|
|||||||
mod ffi {
|
mod ffi {
|
||||||
unsafe extern "C++" {
|
unsafe extern "C++" {
|
||||||
include!("sword_rs/src/cxx/mgr.h");
|
include!("sword_rs/src/cxx/mgr.h");
|
||||||
|
include!("sword_rs/src/cxx/module.h");
|
||||||
|
|
||||||
type Mgr;
|
type Mgr;
|
||||||
|
type Module;
|
||||||
|
|
||||||
fn new_mgr() -> UniquePtr<Mgr>;
|
fn new_mgr() -> UniquePtr<Mgr>;
|
||||||
fn new_mgr_with_path(path: &String) -> UniquePtr<Mgr>;
|
fn new_mgr_with_path(path: &String) -> UniquePtr<Mgr>;
|
||||||
fn get_modules(&self) -> Vec<String>;
|
fn get_modules(self: &Mgr) -> Vec<String>;
|
||||||
|
fn get_module(self: Pin<&mut Mgr>, name: &String) -> UniquePtr<Module>;
|
||||||
|
|
||||||
|
fn get_name(self: &Module) -> String;
|
||||||
|
fn strip_text(self: Pin<&mut Module>) -> String;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,9 +49,12 @@ mod tests {
|
|||||||
writeln!(file, "Description=Test description").unwrap();
|
writeln!(file, "Description=Test description").unwrap();
|
||||||
writeln!(file, "About=A test conf file").unwrap();
|
writeln!(file, "About=A test conf file").unwrap();
|
||||||
}
|
}
|
||||||
let mgr = ffi::new_mgr_with_path(&dir.path().to_str().unwrap().to_string());
|
let mut mgr = ffi::new_mgr_with_path(&dir.path().to_str().unwrap().to_string());
|
||||||
assert!(mgr.get_modules().len() == 1);
|
assert!(mgr.get_modules().len() == 1);
|
||||||
assert!(mgr.get_modules().contains(&String::from("KJVdummy")));
|
assert!(mgr.get_modules().contains(&String::from("KJVdummy")));
|
||||||
|
|
||||||
|
let mut module = mgr.pin_mut().get_module(&String::from("KJVdummy"));
|
||||||
|
assert!(module.pin_mut().get_name() == "KJVdummy");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
Reference in New Issue
Block a user