From 98596554b3d88a7619bdbc3ac7462a95b7263e96 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Fri, 14 Jul 2017 18:54:54 -0500 Subject: split macro parser into its own crate and improve error handling / reporting --- macros/src/util.rs | 62 ------------------------------------------------------ 1 file changed, 62 deletions(-) delete mode 100644 macros/src/util.rs (limited to 'macros/src/util.rs') diff --git a/macros/src/util.rs b/macros/src/util.rs deleted file mode 100644 index 4722ca7..0000000 --- a/macros/src/util.rs +++ /dev/null @@ -1,62 +0,0 @@ -use std::cmp; -use std::collections::HashMap; - -use syn::Ident; - -use syntax::App; - -pub type Ceilings = HashMap; - -#[derive(Clone, Copy, Debug, PartialEq)] -pub enum Ceiling { - // Owned by one or more tasks that have the same priority - Owned(u8), - // Shared by tasks with different priorities - Shared(u8), -} - -impl Ceiling { - pub fn is_owned(&self) -> bool { - match *self { - Ceiling::Owned(_) => true, - _ => false, - } - } -} - -pub fn compute_ceilings(app: &App) -> Ceilings { - let mut ceilings = HashMap::new(); - - for resource in &app.idle.resources { - ceilings.insert(resource.clone(), Ceiling::Owned(0)); - } - - for task in app.tasks.values() { - for resource in &task.resources { - if let Some(ceiling) = ceilings.get_mut(resource) { - match *ceiling { - Ceiling::Owned(current) => { - if current == task.priority { - *ceiling = Ceiling::Owned(current); - } else { - *ceiling = Ceiling::Shared( - cmp::max(current, task.priority), - ); - } - } - Ceiling::Shared(old) => { - if task.priority > old { - *ceiling = Ceiling::Shared(task.priority); - } - } - } - - continue; - } - - ceilings.insert(resource.clone(), Ceiling::Owned(task.priority)); - } - } - - ceilings -} -- cgit v1.2.3