void Motif::read(istream& motin) { char line[200]; vector<int> c; vector<int> p; vector<bool> s; // Read sites // (don't add yet, as they will get screwed up by the column changes) while(motin.getline(line, 200)) { if(line[0] == '*') break; strtok(line, "\t"); c.push_back(atoi(strtok(NULL, "\t"))); p.push_back(atoi(strtok(NULL, "\t"))); s.push_back(atoi(strtok(NULL, "\0"))); } int motwidth = strlen(line); columns.clear(); for(int i = 0; i < motwidth; i++) { if(line[i] == '*') add_col(i); } // Add sites sitelist.clear(); int num_sites = c.size(); for(int i = 0; i < num_sites; i++) { assert(p[i] >= 0); add_site(c[i], p[i], s[i]); } // Read MAP score motin.getline(line, 200); strtok(line, ":"); set_map(atof(strtok(NULL, "\0"))); // Read specificity motin.getline(line, 200); strtok(line, ":"); set_spec(atof(strtok(NULL, "\0"))); // Read sequence cutoff motin.getline(line, 200); strtok(line, ":"); set_seq_cutoff(atof(strtok(NULL, "\0"))); // Read expression cutoff motin.getline(line, 200); strtok(line, ":"); set_expr_cutoff(atof(strtok(NULL, "\0"))); // Read iteration found motin.getline(line, 200); strtok(line, ":"); set_iter(strtok(NULL, "\0")); // Read dejavu motin.getline(line, 200); strtok(line, ":"); set_dejavu(atoi(strtok(NULL, "\0"))); }
int Task_Entry::reframe (ACE_Unbounded_Set <Dispatch_Entry *> &dispatch_entries, Task_Entry &owner, ACE_Ordered_MultiSet <Dispatch_Entry_Link> &set, u_long &set_period, u_long new_period) { int result = 0; // if the set period is zero, treat it as uninitialized, // and simply value the set period with the new period if (set_period) { // make sure the new period is greater than the current // set period, and that they are harmonically related if (new_period <= set_period) // return an error if they're not harmonically related, // do nothing if set's frame is a multiple of the new frame return (set_period % new_period) ? -1 : 0; else if (new_period % set_period) return -1; // make a shallow copy of the set in a new ordered multiset // using the Dispatch_Entry_Link smart pointers ACE_Ordered_MultiSet <Dispatch_Entry_Link> new_set; ACE_Ordered_MultiSet_Iterator <Dispatch_Entry_Link> new_iter (new_set); ACE_Ordered_MultiSet_Iterator <Dispatch_Entry_Link> set_iter (set); for (set_iter.first (); set_iter.done () == 0; set_iter.advance ()) { Dispatch_Entry_Link *link; if (set_iter.next (link) == 0) return -1; else if (new_set.insert (*link, new_iter) < 0) return -1; } // Do a deep copy merge back into the set using the new period // and starting after the 0th sub-frame: this puts all // dispatches after the 0th sub-frame of the new period into the // set, and leaves existing dispatches in the 0th sub-frame of // the new period in the set as well. result = merge_frames (dispatch_entries, owner, set, new_set, new_period, set_period, 1, 1); } // update the set's period to be the new frame set_period = new_period; return result; }
static int _fetch_string_values( struct strset *s, const char **out, int max ) { void *cookie; const char *v; int n = 0; if( set_iter( s, &cookie ) ) { while( n < max && set_next( s, &cookie, &v ) ) { if( _isalpha( v ) ) { out[ n++ ] = v; } } } return n; }