#![allow(non_snake_case)]
#![allow(non_upper_case_globals)] #![allow(dead_code)]
use core::any::Any;
use std::os::raw::c_void;
use crate::ported::machine::Machine;
use crate::ported::object::{Object, ObjectClass};
use crate::ported::process::{
Process, ProcessClass, Process_class, Process_compare, Process_compareByKey_Base,
Process_compareByParent, Process_init, Process_rowGetSortKey, Process_rowIsHighlighted,
Process_rowIsVisible, Process_writeField,
};
use crate::ported::richstring::RichString;
use crate::ported::row::{Row, RowClass, Row_display};
use crate::ported::settings::RowField;
#[repr(C)]
pub struct OpenBSDProcess {
pub super_: Process,
pub addr: u64,
}
pub static OpenBSDProcess_class: ProcessClass = ProcessClass {
super_: RowClass {
super_: ObjectClass {
extends: Some(&Process_class.super_.super_),
},
isHighlighted: Some(Process_rowIsHighlighted),
isVisible: Some(Process_rowIsVisible),
writeField: Some(OpenBSDProcess_rowWriteField),
matchesFilter: None,
sortKeyString: Some(Process_rowGetSortKey),
compareByParent: Some(Process_compareByParent),
},
compareByKey: Some(OpenBSDProcess_compareByKey),
};
impl Object for OpenBSDProcess {
fn klass(&self) -> &'static ObjectClass {
&OpenBSDProcess_class.super_.super_
}
fn display(&self, out: &mut RichString) {
Row_display(self, out)
}
fn compare(&self, other: &dyn Object) -> i32 {
Process_compare(self, other)
}
fn row_class(&self) -> Option<&'static RowClass> {
Some(&OpenBSDProcess_class.super_)
}
fn process_class(&self) -> Option<&'static ProcessClass> {
Some(&OpenBSDProcess_class)
}
fn as_row(&self) -> Option<&Row> {
Some(&self.super_.super_)
}
fn as_row_mut(&mut self) -> Option<&mut Row> {
Some(&mut self.super_.super_)
}
fn as_process(&self) -> Option<&Process> {
Some(&self.super_)
}
fn as_process_mut(&mut self) -> Option<&mut Process> {
Some(&mut self.super_)
}
}
pub fn OpenBSDProcess_new(host: *const Machine) -> Box<OpenBSDProcess> {
let mut this = Box::new(OpenBSDProcess {
super_: Process::default(),
addr: 0,
});
Process_init(&mut this.super_, host as *const c_void);
this
}
pub fn Process_delete() {
todo!("port of OpenBSDProcess.c:217 — pure free() teardown; Rust Drop handles it")
}
pub fn OpenBSDProcess_rowWriteField(super_: &dyn Object, str: &mut RichString, field: RowField) {
let op = (super_ as &dyn Any)
.downcast_ref::<OpenBSDProcess>()
.expect("OpenBSDProcess_rowWriteField: row is not an OpenBSDProcess");
Process_writeField(&op.super_, str, field);
}
pub fn OpenBSDProcess_compareByKey(v1: &dyn Object, v2: &dyn Object, key: RowField) -> i32 {
let p1 = (v1 as &dyn Any)
.downcast_ref::<OpenBSDProcess>()
.expect("OpenBSDProcess_compareByKey: v1 is not an OpenBSDProcess");
let p2 = (v2 as &dyn Any)
.downcast_ref::<OpenBSDProcess>()
.expect("OpenBSDProcess_compareByKey: v2 is not an OpenBSDProcess");
Process_compareByKey_Base(&p1.super_, &p2.super_, key)
}