refactor:

- created dsa_tasks crate for task-specific functionality that doesn't belong in common.
This commit is contained in:
2026-08-01 01:44:57 +01:00
parent 27d38eaf89
commit 43f8340f0d
17 changed files with 44 additions and 16 deletions
+2
View File
@@ -9,6 +9,8 @@
<sourceFolder url="file://$MODULE_DIR$/emulator/dsa_gui/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/libraries/common/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/libraries/dsa_formats/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/libraries/dsa_tasks/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/libraries/zxq5_egui/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/tooling/assembler/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/tooling/compiler/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/tooling/disassembler/src" isTestSource="false" />
+1 -1
View File
@@ -3,7 +3,7 @@ members = [
"emulator/dsa_emulator", "emulator/dsa_gui", "emulator/dsa_cli",
"libraries/common", "libraries/dsa_formats",
"tooling/assembler", "tooling/disassembler", "tooling/linker", "tooling/compiler",
"tooling/dsx_build", "tooling/dsx_server", "tooling/dsx_client"]
"tooling/dsx_build", "tooling/dsx_server", "tooling/dsx_client", "libraries/dsa_tasks", "libraries/zxq5_egui"]
resolver = "3"
+3
View File
@@ -15,6 +15,9 @@ path = "src/lib.rs"
[dependencies]
common = { path = "../../libraries/common" }
dsa_formats = { path = "../../libraries/dsa_formats" }
dsa_tasks = { path = "../../libraries/dsa_tasks" }
zxq5_egui = { path = "../../libraries/zxq5_egui" }
assembler = { path = "../../tooling/assembler" }
dsa_emulator = { version = "0.3.0", path = "../dsa_emulator" }
disassembler = { version = "0.3.0", path = "../../tooling/disassembler" }
+2 -2
View File
@@ -1,7 +1,7 @@
use crate::state::Action;
use crate::ui::ui_helpers::text::strip_ansi;
use crate::ui::ui_helpers::painted_tab;
use common::process::{ProcessAgent, TraceableProcess};
use crate::ui::ui_helpers::text::strip_ansi;
use dsa_tasks::{ProcessAgent, TraceableProcess};
use std::collections::VecDeque;
use std::sync::mpsc;
use std::thread::JoinHandle;
+1 -1
View File
@@ -4,8 +4,8 @@ use crate::ui::tiles::TilePane;
use crate::ui::tiles::editor::syntax::SyntaxFrom;
use crate::ui::ui_helpers::PaddedWidget;
use assembler::prelude::Assembler;
use common::process::TraceableProcess;
use dsa_formats::binary_dse::DseExecutable;
use dsa_tasks::TraceableProcess;
use egui::{Color32, Key, Ui, Widget};
use egui_code_editor::{CodeEditor, Completer, Syntax};
use egui_tiles::TileId;
-2
View File
@@ -1,7 +1,5 @@
pub mod asm;
pub mod isa;
pub mod process;
pub mod prelude {
pub use crate::isa::instructions::Instruction;
pub use crate::isa::register::Register;
+7
View File
@@ -0,0 +1,7 @@
[package]
name = "dsa_tasks"
edition.workspace = true
version.workspace = true
authors.workspace = true
[dependencies]
@@ -1,7 +1,6 @@
use std::fmt::Debug;
use std::sync::{mpsc, Arc};
use crate::process::AgentSink::{Callback, Channel};
use std::sync::{Arc, mpsc};
use crate::AgentSink::{Callback, Channel};
pub struct ProcessAgent {
sink: Arc<AgentSink>,
@@ -25,7 +24,7 @@ impl ProcessAgent {
}
}
enum AgentSink {
pub enum AgentSink {
Channel(mpsc::Sender<String>),
Callback(Box<dyn Fn(&str) + Send + Sync>)
}
+7
View File
@@ -0,0 +1,7 @@
[package]
name = "zxq5_egui"
edition.workspace = true
version.workspace = true
authors.workspace = true
[dependencies]
+10
View File
@@ -0,0 +1,10 @@
# zxq5_egui
A set of UI components for the egui UI framework that may be useful across all of my personal projects.
## Features
- buttons & labels styled to my personal liking, meant to achieve a clean modern look.
## TODO:
- File-tree for viewing files within a directory and performing simple directory operations from within the project.
- this will be useful for the DSA user interface and maybe for Worldcoder if I revive that project in the future.
View File
+2
View File
@@ -0,0 +1,2 @@
pub mod buttons;
pub mod tabs;
View File
+1
View File
@@ -16,6 +16,7 @@ path = "src/lib.rs"
clap = { version = "4.6.0", features = ["derive"] }
common = { path = "../../libraries/common" }
dsa_formats = { path = "../../libraries/dsa_formats" }
dsa_tasks = { path = "../../libraries/dsa_tasks" }
num_cpus = "1.17.0"
strum = { version = "0.28.0", features = ["derive"] }
+2 -2
View File
@@ -1,8 +1,8 @@
use common::prelude::*;
use common::process::ProcessAgent;
use crate::assembler::Token;
use crate::assembler::model::{Node, Opcode};
use crate::{assembler::AssembleError, expect_token};
use common::prelude::*;
use dsa_tasks::ProcessAgent;
pub fn codegen(nodes: Vec<Node>, ctx: &ProcessAgent) -> Result<Vec<Instruction>, AssembleError> {
let mut instructions = vec![];
+1 -1
View File
@@ -1,7 +1,7 @@
#![allow(dead_code, unused)]
use dsa_tasks::{ProcessAgent, TraceableProcess};
use crate::assembler::resolver2::{SectionId, resolve_address, resolve_dependencies, resolve_symbols, split_sections};
use common::process::{ProcessAgent, TraceableProcess};
use dsa_formats::binary_dse::{DseExecutable, SymbolEntry};
use std::{
collections::HashSet,
+2 -3
View File
@@ -1,9 +1,8 @@
use assembler::prelude::*;
use clap::{Parser, arg};
use std::{fs, path::PathBuf};
use dsa_tasks::TraceableProcess;
use std::io::Cursor;
use assembler::assembler::AssembleError;
use common::process::TraceableProcess;
use std::{fs, path::PathBuf};
#[derive(Parser, Debug, Clone)]
#[command(version, about, long_about = None)]