aboutsummaryrefslogtreecommitdiff
path: root/macros/src/util.rs
diff options
context:
space:
mode:
authorGravatar Jorge Aparicio <jorge@japaric.io> 2017-07-04 11:26:11 -0500
committerGravatar Jorge Aparicio <jorge@japaric.io> 2017-07-04 11:26:11 -0500
commit86a360a3964ecb04a37c0424c76d7b43a9fd40fe (patch)
treecbf0ebee17a588f8f004bdd27e590ee6c958761b /macros/src/util.rs
parent2bf5401439df4494b33ef87201ee013eb1f167e8 (diff)
downloadrtic-86a360a3964ecb04a37c0424c76d7b43a9fd40fe.tar.gz
rtic-86a360a3964ecb04a37c0424c76d7b43a9fd40fe.tar.zst
rtic-86a360a3964ecb04a37c0424c76d7b43a9fd40fe.zip
rtfm! macro take 2
Diffstat (limited to 'macros/src/util.rs')
-rw-r--r--macros/src/util.rs48
1 files changed, 48 insertions, 0 deletions
diff --git a/macros/src/util.rs b/macros/src/util.rs
new file mode 100644
index 00000000..45f1feef
--- /dev/null
+++ b/macros/src/util.rs
@@ -0,0 +1,48 @@
+use std::collections::HashMap;
+
+use syn::Ident;
+
+use syntax::App;
+
+pub type Ceilings = HashMap<Ident, Ceiling>;
+
+#[derive(Clone, Copy, Debug, PartialEq)]
+pub enum Ceiling {
+ Owned,
+ Shared(u8),
+}
+
+impl Ceiling {
+ pub fn is_owned(&self) -> bool {
+ *self == Ceiling::Owned
+ }
+}
+
+pub fn compute_ceilings(app: &App) -> Ceilings {
+ let mut ceilings = HashMap::new();
+
+ for resource in &app.idle.resources {
+ ceilings.insert(resource.clone(), Ceiling::Owned);
+ }
+
+ for task in app.tasks.values() {
+ for resource in &task.resources {
+ if let Some(ceiling) = ceilings.get_mut(resource) {
+ match *ceiling {
+ Ceiling::Owned => *ceiling = Ceiling::Shared(task.priority),
+ Ceiling::Shared(old) => {
+ if task.priority > old {
+ *ceiling = Ceiling::Shared(task.priority);
+ }
+ }
+ }
+
+ continue;
+ }
+
+ ceilings.insert(resource.clone(), Ceiling::Owned);
+ }
+ }
+
+ ceilings
+}
value='rfc/bunfig-overhaul'>rfc/bunfig-overhaul Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/src/nullable_allocator.zig (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2023-10-09fix(AbortSignal/fetch) fix AbortSignal.timeout, fetch lock behavior and fetch...Gravatar Ciro Spaciari 29-61/+303
2023-10-09Fix npm tag for canary bun-types, againGravatar Ashcon Partovi 2-56/+10
2023-10-09Add Fedora build instructions to development.md (#6359)Gravatar otterDeveloper 1-0/+10
2023-10-09added commands (#6314)Gravatar babar 1-1/+2
2023-10-09Update README.md (#6291)Gravatar TPLJ 1-1/+1
2023-10-09docs: fixing a couple typos (#6331)Gravatar Michael Di Prisco 2-2/+2
2023-10-09fix: support uint8 exit code range (#6303)Gravatar Liz 2-2/+11
2023-10-09Fix array variables preview in debugger (#6379)Gravatar 2hu 1-1/+4
2023-10-07feat(KeyObject) (#5940)Gravatar Ciro Spaciari 106-67/+9342
2023-10-07Exclude more filesGravatar Jarred Sumner 1-1/+1
2023-10-07Exclude more filesGravatar Jarred Sumner 1-1/+2
2023-10-07Update settings.jsonGravatar Jarred Sumner 1-1/+2
2023-10-07Update settings.jsonGravatar Jarred Sumner 1-2/+3
2023-10-06fix a couple install testsGravatar Dylan Conway 1-8/+8
2023-10-06formatGravatar Dylan Conway 1-1/+2
2023-10-06Fix memory leak in fetch() (#6350)Gravatar Jarred Sumner 1-2/+0
2023-10-06[types] allow onLoad plugin callbacks to return undefined (#6346)Gravatar Silver 1-1/+1
2023-10-06docs: `file.stream()` is not a promise (#6337)Gravatar Paul Nodet 1-1/+1