Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Moves intern and label modules into bevy_ecs #12772

Merged
merged 6 commits into from
Apr 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions crates/bevy_app/src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,25 @@ use crate::{
};
pub use bevy_derive::AppLabel;
use bevy_ecs::{
intern::Interned,
prelude::*,
schedule::{ScheduleBuildSettings, ScheduleLabel},
system::SystemId,
};
#[cfg(feature = "trace")]
use bevy_utils::tracing::info_span;
use bevy_utils::{intern::Interned, tracing::debug, HashMap};
use bevy_utils::{tracing::debug, HashMap};
use std::fmt::Debug;
use std::panic::{catch_unwind, resume_unwind, AssertUnwindSafe};
use thiserror::Error;

bevy_utils::define_label!(
bevy_ecs::define_label!(
/// A strongly-typed class of labels used to identify an [`App`].
AppLabel,
APP_LABEL_INTERNER
);

pub use bevy_utils::label::DynEq;
pub use bevy_ecs::label::DynEq;

/// A shorthand for `Interned<dyn AppLabel>`.
pub type InternedAppLabel = Interned<dyn AppLabel>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use std::{
sync::{OnceLock, PoisonError, RwLock},
};

use crate::HashSet;
use bevy_utils::HashSet;

/// An interned value. Will stay valid until the end of the program and will not drop.
///
Expand All @@ -26,7 +26,7 @@ use crate::HashSet;
// NOTE: This type must NEVER implement Borrow since it does not obey that trait's invariants.
///
/// ```
/// # use bevy_utils::intern::*;
/// # use bevy_ecs::intern::*;
/// #[derive(PartialEq, Eq, Hash, Debug)]
/// struct Value(i32);
/// impl Internable for Value {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ where
/// # Example
///
/// ```
/// # use bevy_utils::define_label;
/// # use bevy_ecs::define_label;
/// define_label!(
/// /// Documentation of label trait
/// MyNewLabelTrait,
Expand Down Expand Up @@ -125,7 +125,7 @@ macro_rules! define_label {
/// Feeds this value into the given [`Hasher`].
fn dyn_hash(&self, state: &mut dyn ::std::hash::Hasher);

/// Returns an [`Interned`](bevy_utils::intern::Interned) value corresponding to `self`.
/// Returns an [`Interned`] value corresponding to `self`.
fn intern(&self) -> $crate::intern::Interned<dyn $label_trait_name>
where Self: Sized {
$interner_name.intern(self)
Expand Down Expand Up @@ -175,7 +175,7 @@ macro_rules! define_label {

fn ref_eq(&self, other: &Self) -> bool {
if self.as_dyn_eq().type_id() == other.as_dyn_eq().type_id() {
(self as *const Self as *const ()) == (other as *const Self as *const ())
(self as *const Self).cast::<()>() == (other as *const Self).cast::<()>()
} else {
false
}
Expand All @@ -184,7 +184,7 @@ macro_rules! define_label {
fn ref_hash<H: ::std::hash::Hasher>(&self, state: &mut H) {
use ::std::hash::Hash;
self.as_dyn_eq().type_id().hash(state);
(self as *const Self as *const ()).hash(state);
(self as *const Self).cast::<()>().hash(state);
}
}

Expand Down
2 changes: 2 additions & 0 deletions crates/bevy_ecs/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ pub mod component;
pub mod entity;
pub mod event;
pub mod identifier;
pub mod intern;
pub mod label;
pub mod query;
#[cfg(feature = "bevy_reflect")]
pub mod reflect;
Expand Down
16 changes: 9 additions & 7 deletions crates/bevy_ecs/src/schedule/set.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,20 @@ use std::fmt::Debug;
use std::hash::{Hash, Hasher};
use std::marker::PhantomData;

pub use crate::label::DynEq;
pub use bevy_ecs_macros::{ScheduleLabel, SystemSet};
use bevy_utils::define_label;
use bevy_utils::intern::Interned;
pub use bevy_utils::label::DynEq;

use crate::system::{
ExclusiveFunctionSystem, ExclusiveSystemParamFunction, FunctionSystem,
IsExclusiveFunctionSystem, IsFunctionSystem, SystemParamFunction,
use crate::{
define_label,
intern::Interned,
system::{
ExclusiveFunctionSystem, ExclusiveSystemParamFunction, FunctionSystem,
IsExclusiveFunctionSystem, IsFunctionSystem, SystemParamFunction,
},
};

define_label!(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you just need to make this [`Schedule`](crate::schedule::Schedule).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be fixed in the latest change @james7132

/// A strongly-typed class of labels used to identify an [`Schedule`].
/// A strongly-typed class of labels used to identify a [`Schedule`](crate::schedule::Schedule).
ScheduleLabel,
SCHEDULE_LABEL_INTERNER
);
Expand Down
4 changes: 2 additions & 2 deletions crates/bevy_render/src/render_graph/graph.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use crate::{
},
renderer::RenderContext,
};
use bevy_ecs::{prelude::World, system::Resource};
use bevy_utils::{define_label, intern::Interned, HashMap};
use bevy_ecs::{define_label, intern::Interned, prelude::World, system::Resource};
use bevy_utils::HashMap;
use std::fmt::Debug;

use super::{EdgeExistence, InternedRenderLabel, IntoRenderNodeArray};
Expand Down
6 changes: 4 additions & 2 deletions crates/bevy_render/src/render_graph/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@ use crate::{
},
renderer::RenderContext,
};
pub use bevy_ecs::label::DynEq;
use bevy_ecs::{
define_label,
intern::Interned,
query::{QueryItem, QueryState, ReadOnlyQueryData},
world::{FromWorld, World},
};
pub use bevy_utils::label::DynEq;
use bevy_utils::{all_tuples_with_size, define_label, intern::Interned};
use bevy_utils::all_tuples_with_size;
use downcast_rs::{impl_downcast, Downcast};
use std::fmt::Debug;
use thiserror::Error;
Expand Down
2 changes: 0 additions & 2 deletions crates/bevy_utils/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,13 @@ pub mod prelude {
}

pub mod futures;
pub mod label;
mod short_names;
pub use short_names::get_short_name;
pub mod synccell;
pub mod syncunsafecell;

mod cow_arc;
mod default;
pub mod intern;
mod once;
mod parallel_queue;

Expand Down