forked from 1b-agent/opencadstudio-upstream
New crate crates/ocs_doc_api: object-centric facade (DocApi -> Document -> collections -> typed handles), transport-agnostic wire layer (DocApiEnvelope = single op | read-only query batch), per-op autocommit (no write transactions), bulk ops with upfront-validation all-or-nothing, structured ApiError, and build-time codegen (spec/entities.toml -> ops/query enums, api_reference.md, binding_schema.json). ocs_plugin_api: append-only PluginRequest::DocApiRequest / PluginResponse:: DocApiResponse (serde_bytes payload) + defaulted HostApi::doc_api_dispatch. Host: DocApiBackend impl for HostSession (src/app/doc_api.rs) mapping to scene primitives (solid_models lift-on-miss, register_prepared_solid_model, meshes metrics), entity conversions (doc_api_convert.rs), HostSession accessors + doc_api_dispatch override. Tests: 592 host lib (incl. 7 DocApi integration tests: create/boolean/query, unknown-id, transform-many all-or-nothing, query-batch cap, 2D/geometric/DWG roundtrips), 8 crate unit tests. Examples + README/ARCHITECTURE/IMPLEMENTATION docs.
17 lines
537 B
Rust
17 lines
537 B
Rust
//! Geometry revision counter (mirrors the host scene's `geometry_epoch`).
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
/// Monotonic revision of a document's geometry. Bumped exactly once per applied
|
|
/// write op (`push_undo` + `finalize_op`). Pure queries return the current
|
|
/// revision without bumping it.
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
|
|
#[serde(transparent)]
|
|
pub struct GeometryRevision(pub u64);
|
|
|
|
impl GeometryRevision {
|
|
pub const fn as_u64(self) -> u64 {
|
|
self.0
|
|
}
|
|
}
|