Example #1
0
void readAssignmnet(assignment_node *assignmentList, teacher_node *teacherList, course_node *courseList, char *s)
{
	int teacher_number;
	int course_number;
	if (sscanf(s, "A %d %d", &teacher_number, &course_number) > 0){
		teacher *myTeacher = get_teacher(teacher_number, teacherList);
		course *myCourse = get_course(course_number, courseList);
		assignment *newAssignment = create_assignment(myTeacher, myCourse);
		add_assignment(assignmentList, newAssignment);
	}
}
Example #2
0
int assign_teacher(assignment_node *assignmentList, teacher_node *teacherList, course_node *courseList, int teacher_number, int course_number)
{
	teacher *myTeacher = get_teacher(teacher_number, teacherList);
	if (myTeacher == NULL)
	{
		//student doesn't exist
		printf("Teacher doesn't exist\n");
		return 0;
	}
	course *myCourse = get_course(course_number, courseList);
	if (myCourse == NULL)
	{
		//course doesn't exist
		printf("Course doesn't exist\n");
		return 0;
	}
	assignment *myAssignment = create_assignment(myTeacher, myCourse);
	add_enrollment(assignmentList, myAssignment);
	return 1;
}
Example #3
0
static list expandtransition(struct trans_object *trans_el, struct net_object *net, struct net_object *unf_net)
{
  struct trans_object *unf_trans;
  bool Found;
  struct lisp_object *lisp;
  struct arc_object *arc, *new_arc, *prev_arc;
  guard_exprPTR g;  
  arcPTR *parsedArcs;
  operandPTR op;
  list arcs, l=NULL, curr=NULL;
  int i, j, noarc, otd, vtd;
  multisetPTR p_MS;
  AssignmentPTR gamma;
  status state;
  char *new_var;
  
 init_list(&gListParsedArcs);
 init_list(&YACCParsedVarList);

 
 #if DEBUG_UNFOLD
   printf("Expand transition %s\n\n", trans_el->tag);
 #endif
 
  new_var = FreeVarName();

  for (arc = trans_el->arcs, noarc = 0; arc != NULL; arc = arc->next, noarc++);
                
  parsedArcs = (arcPTR *) Ecalloc( noarc , sizeof(arcPTR));
   
  init_list(&YACCParsedVarList);   

  i = 0; 
  for( arc = trans_el->arcs; arc != NULL; arc = arc->next){
      
   init_list(&l);
   
   if((find_key(gListDomain, (generic_ptr) (arc->place)->tag , CmpDomainName, &l))==OK) 
   {      
     YACCparsedDomain = ((DomainObjPTR) DATA(l));
     Found = FALSE;
     if ( arc->color != NULL ) {
       for ( lisp = net->lisps; lisp != NULL; lisp = lisp->next){       
         if(lisp->type=='f' && (strcmp(arc->color, lisp->tag)==0)) {
	   parsedArcs[i++]= ParseArc(lisp->text);
	   Found = TRUE;
	 }   
       }
       if(Found == FALSE){
        parsedArcs[i++]= ParseArc(arc->color);
	Found = TRUE;
       }
     }
     else if(Found == FALSE && arc->lisp != NULL)
       parsedArcs[i++]= ParseArc(arc->lisp->text);
     else
       parsedArcs[i++]= ParseNoColoredArc(arc, new_var);
   }
   else
     Error(UNDEF_DOM_ERR, "DefTransitions", (arc->place)->tag);
    
  }
   
 
  g = ParseGuard(trans_el, net);      
  create_assignment(&gamma, YACCParsedVarList); 
  
  
  otd = atoi(opt_list[OPT_ORIZ_TRANS_DISPLACEMENT].arg_val);
  vtd = atoi(opt_list[OPT_VERT_TRANS_DISPLACEMENT].arg_val);
  
  l = NULL;
  j = 0;
  init_list(&l);
  for(state = first_assignment(gamma) ; state != ERROR ; j++) {
    #if DEBUG_UNFOLD      
      printf("Assignment %s\n%",print_assignment(gamma));
    #endif
    if(eval_guard_expr(g, gamma) == TRUE){
      unf_trans = unfolding_transition(trans_el, j, gamma, &(unf_net->rpars));      
      unf_trans->center.x += j*otd;
      unf_trans->center.y += j*vtd;
      head_insert(&l, (generic_ptr) unf_trans);
    
      
      i = 0; 
      for( arc = trans_el->arcs; arc != NULL; arc = arc->next)
      {
        #if DEBUG_UNFOLD
          printf("Arc %s \n", PrintArcExpression(parsedArcs[i]));
	#endif        
	
	
	eval_arc(parsedArcs[i], gamma, &p_MS);	
        
		
	arcs = expand_arc(arc, p_MS, parsedArcs[i++]->domain->create_place, unf_net);
// 	destroy_multiset(p_MS);
	curr = NULL;
	while ( (curr = list_iterator(arcs, curr)) != NULL )
	{
	  new_arc = (struct arc_object *) DATA(curr);          
          if(unf_trans->arcs == NULL)
            unf_trans->arcs = new_arc;
          else
            prev_arc->next = new_arc;
          prev_arc = new_arc; 
         
	}
// 	destroy(&arcs, NULL);
      }
            
    } 
    state = next_assignment(gamma);
  }  
  
  return(l);
}