From 36af2ae12427cb624dd65557ca65b26a329ccb64 Mon Sep 17 00:00:00 2001 From: Janis Date: Mon, 19 Jun 2023 18:36:15 +0200 Subject: [PATCH] moving to workspace --- Cargo.toml | 22 +-------- unreal-sdk/.gitignore | 2 + unreal-sdk/Cargo.toml | 20 ++++++++ rust-toolchain => unreal-sdk/rust-toolchain | 0 {src => unreal-sdk/src}/any_type.rs | 0 {src => unreal-sdk/src}/fname.rs | 0 {src => unreal-sdk/src}/global_tables/mod.rs | 0 .../src}/global_tables/names.rs | 0 .../src}/global_tables/objects.rs | 0 {src => unreal-sdk/src}/helper_types.rs | 0 {src => unreal-sdk/src}/lib.rs | 0 {src => unreal-sdk/src}/sdk/mod.rs | 0 {src => unreal-sdk/src}/sdk/output/mod.rs | 0 {src => unreal-sdk/src}/sdk/output/rust.rs | 0 {src => unreal-sdk/src}/sdk/process.rs | 48 ++++++++++++++++++- {src => unreal-sdk/src}/sdk/repr.rs | 2 +- {src => unreal-sdk/src}/tarray.rs | 0 {src => unreal-sdk/src}/types.rs | 0 {src => unreal-sdk/src}/v2_types/any_type.rs | 0 {src => unreal-sdk/src}/v2_types/mod.rs | 0 20 files changed, 72 insertions(+), 22 deletions(-) create mode 100644 unreal-sdk/.gitignore create mode 100644 unreal-sdk/Cargo.toml rename rust-toolchain => unreal-sdk/rust-toolchain (100%) rename {src => unreal-sdk/src}/any_type.rs (100%) rename {src => unreal-sdk/src}/fname.rs (100%) rename {src => unreal-sdk/src}/global_tables/mod.rs (100%) rename {src => unreal-sdk/src}/global_tables/names.rs (100%) rename {src => unreal-sdk/src}/global_tables/objects.rs (100%) rename {src => unreal-sdk/src}/helper_types.rs (100%) rename {src => unreal-sdk/src}/lib.rs (100%) rename {src => unreal-sdk/src}/sdk/mod.rs (100%) rename {src => unreal-sdk/src}/sdk/output/mod.rs (100%) rename {src => unreal-sdk/src}/sdk/output/rust.rs (100%) rename {src => unreal-sdk/src}/sdk/process.rs (91%) rename {src => unreal-sdk/src}/sdk/repr.rs (99%) rename {src => unreal-sdk/src}/tarray.rs (100%) rename {src => unreal-sdk/src}/types.rs (100%) rename {src => unreal-sdk/src}/v2_types/any_type.rs (100%) rename {src => unreal-sdk/src}/v2_types/mod.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index 9a63893..c377111 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,20 +1,2 @@ -[package] -name = "unreal-sdk" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -log = "0.4.0" -thiserror = "1.0.0" -itertools = "0.10.0" -rayon = "1.0.0" -bitflags = "1.0.0" -anyhow = "1.0" -widestring = "1.0" -lazy_static = "1.4.0" -once_cell = "1.17.1" - -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" \ No newline at end of file +[workspace] +members = ["sdk-serializer", "unreal-sdk", "sdk-generator"] \ No newline at end of file diff --git a/unreal-sdk/.gitignore b/unreal-sdk/.gitignore new file mode 100644 index 0000000..4fffb2f --- /dev/null +++ b/unreal-sdk/.gitignore @@ -0,0 +1,2 @@ +/target +/Cargo.lock diff --git a/unreal-sdk/Cargo.toml b/unreal-sdk/Cargo.toml new file mode 100644 index 0000000..9a63893 --- /dev/null +++ b/unreal-sdk/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "unreal-sdk" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +log = "0.4.0" +thiserror = "1.0.0" +itertools = "0.10.0" +rayon = "1.0.0" +bitflags = "1.0.0" +anyhow = "1.0" +widestring = "1.0" +lazy_static = "1.4.0" +once_cell = "1.17.1" + +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" \ No newline at end of file diff --git a/rust-toolchain b/unreal-sdk/rust-toolchain similarity index 100% rename from rust-toolchain rename to unreal-sdk/rust-toolchain diff --git a/src/any_type.rs b/unreal-sdk/src/any_type.rs similarity index 100% rename from src/any_type.rs rename to unreal-sdk/src/any_type.rs diff --git a/src/fname.rs b/unreal-sdk/src/fname.rs similarity index 100% rename from src/fname.rs rename to unreal-sdk/src/fname.rs diff --git a/src/global_tables/mod.rs b/unreal-sdk/src/global_tables/mod.rs similarity index 100% rename from src/global_tables/mod.rs rename to unreal-sdk/src/global_tables/mod.rs diff --git a/src/global_tables/names.rs b/unreal-sdk/src/global_tables/names.rs similarity index 100% rename from src/global_tables/names.rs rename to unreal-sdk/src/global_tables/names.rs diff --git a/src/global_tables/objects.rs b/unreal-sdk/src/global_tables/objects.rs similarity index 100% rename from src/global_tables/objects.rs rename to unreal-sdk/src/global_tables/objects.rs diff --git a/src/helper_types.rs b/unreal-sdk/src/helper_types.rs similarity index 100% rename from src/helper_types.rs rename to unreal-sdk/src/helper_types.rs diff --git a/src/lib.rs b/unreal-sdk/src/lib.rs similarity index 100% rename from src/lib.rs rename to unreal-sdk/src/lib.rs diff --git a/src/sdk/mod.rs b/unreal-sdk/src/sdk/mod.rs similarity index 100% rename from src/sdk/mod.rs rename to unreal-sdk/src/sdk/mod.rs diff --git a/src/sdk/output/mod.rs b/unreal-sdk/src/sdk/output/mod.rs similarity index 100% rename from src/sdk/output/mod.rs rename to unreal-sdk/src/sdk/output/mod.rs diff --git a/src/sdk/output/rust.rs b/unreal-sdk/src/sdk/output/rust.rs similarity index 100% rename from src/sdk/output/rust.rs rename to unreal-sdk/src/sdk/output/rust.rs diff --git a/src/sdk/process.rs b/unreal-sdk/src/sdk/process.rs similarity index 91% rename from src/sdk/process.rs rename to unreal-sdk/src/sdk/process.rs index e6e8d33..367f242 100644 --- a/src/sdk/process.rs +++ b/unreal-sdk/src/sdk/process.rs @@ -2,8 +2,9 @@ use std::collections::{btree_map::Entry, BTreeMap}; use anyhow::Context; use itertools::Itertools; -use rayon::prelude::{IntoParallelRefIterator, ParallelIterator}; +use rayon::prelude::{IntoParallelIterator, IntoParallelRefIterator, ParallelIterator}; +use crate::global_tables::objects::GOBJECTS; use crate::sdk::repr::*; use crate::v2_types::{ any_type::{self, AnyField, AnyObject, AnyProperty, AnyStruct}, @@ -18,6 +19,51 @@ use crate::v2_types::{UScriptStruct, UStruct}; use super::repr::{ Class, ClassField, ClassMethod, Enum, Package, ProcessedPackage, Type, UnrealType, }; +use super::FoldIntoPackages; + +impl Sdk { + pub fn build() -> anyhow::Result { + let packages = Self::get_packages()?; + + let packages = packages + .into_par_iter() + .map(|pkg| { + let package_ref = pkg + .package_object + .as_package_ref() + .context("object was not a package object."); + + let output = + package_ref.and_then(|package_ref| pkg.process().map(|pkg| (package_ref, pkg))); + + output + }) + .collect::>>()?; + + Ok(Self { packages }) + } + fn get_packages() -> anyhow::Result> { + let objects = GOBJECTS + .read() + .map_err(|_| anyhow::anyhow!("couldn't read gobject table"))?; + let objects = objects.as_objects().context("no object array")?; + + let sorted_objects = objects + .iter() + .filter_map(|item| item.object()) + .fold_into_packages(); + + let packages = sorted_objects + .into_iter() + .map(|(package_object, children)| Package { + package_object, + children, + }) + .collect::>(); + + Ok(packages) + } +} fn default_or_anon(name: &str) -> bool { name.contains("Default__") diff --git a/src/sdk/repr.rs b/unreal-sdk/src/sdk/repr.rs similarity index 99% rename from src/sdk/repr.rs rename to unreal-sdk/src/sdk/repr.rs index ca610cf..e2d94ba 100644 --- a/src/sdk/repr.rs +++ b/unreal-sdk/src/sdk/repr.rs @@ -35,7 +35,7 @@ pub struct ObjectRef { #[derive(Debug, Serialize, Deserialize)] pub struct Sdk { - packages: BTreeMap, + pub packages: BTreeMap, } /// A package represents some group of packages that are related to another, diff --git a/src/tarray.rs b/unreal-sdk/src/tarray.rs similarity index 100% rename from src/tarray.rs rename to unreal-sdk/src/tarray.rs diff --git a/src/types.rs b/unreal-sdk/src/types.rs similarity index 100% rename from src/types.rs rename to unreal-sdk/src/types.rs diff --git a/src/v2_types/any_type.rs b/unreal-sdk/src/v2_types/any_type.rs similarity index 100% rename from src/v2_types/any_type.rs rename to unreal-sdk/src/v2_types/any_type.rs diff --git a/src/v2_types/mod.rs b/unreal-sdk/src/v2_types/mod.rs similarity index 100% rename from src/v2_types/mod.rs rename to unreal-sdk/src/v2_types/mod.rs