Skip to main content

oop_values/
oop_values.rs

1// Requires a live GemStone/S stone.
2//
3// Expected output includes explicit OOP and value conversions for small
4// integers, booleans, strings, symbols, and an export-set handle.
5
6use gemstone_rs::{Config, Session, Value};
7
8fn main() -> gemstone_rs::Result<()> {
9    let mut session = Session::login(Config::from_env()?)?;
10
11    let seven = session.value_to_oop(&Value::SmallInt(7))?;
12    let printed = session.perform_oop(seven, "printString", &[])?;
13    println!(
14        "small integer printString: {}",
15        session.fetch_string(printed)?
16    );
17
18    let text = session.new_string("retained by gemstone-rs")?;
19    {
20        let handle = session.retain_oop(text)?;
21        println!("retained string OOP: {}", handle.oop().raw());
22        handle.release()?;
23    }
24
25    let symbol = session.new_symbol("GemStoneRsExampleSymbol")?;
26    println!("new symbol OOP: {}", symbol.raw());
27    Ok(())
28}