- Added many comments.
This commit is contained in:
		
							parent
							
								
									3ca180d968
								
							
						
					
					
						commit
						1c5a9986f6
					
				
							
								
								
									
										37
									
								
								src/system.c
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								src/system.c
									
									
									
									
									
								
							@ -635,21 +635,24 @@ roleInstanceArachne (const System sys, const Protocol protocol,
 | 
				
			|||||||
  Run runs;
 | 
					  Run runs;
 | 
				
			||||||
  Roledef rd;
 | 
					  Roledef rd;
 | 
				
			||||||
  Termlist scanfrom, scanto;
 | 
					  Termlist scanfrom, scanto;
 | 
				
			||||||
  Termlist fromlist = NULL;
 | 
					  Termlist fromlist = NULL;		// deleted at the end
 | 
				
			||||||
  Termlist tolist = NULL;
 | 
					  Termlist tolist = NULL;		// -> .locals
 | 
				
			||||||
  Termlist artefacts = NULL;
 | 
					  Termlist artefacts = NULL;		// -> .artefacts
 | 
				
			||||||
  Term extterm = NULL;
 | 
					  Term extterm = NULL;			// construction thing (will go to artefacts)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* claim runid, allocate space */
 | 
					  /* claim runid, allocate space */
 | 
				
			||||||
  rid = sys->maxruns;
 | 
					  rid = sys->maxruns;
 | 
				
			||||||
  ensureValidRun (sys, rid);
 | 
					  ensureValidRun (sys, rid);		// creates a new block
 | 
				
			||||||
  runs = sys->runs;
 | 
					  runs = sys->runs;			// simple structure pointer transfer (shortcut)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* duplicate roledef in buffer rd */
 | 
					  /* duplicate roledef in buffer rd */
 | 
				
			||||||
 | 
					  /* Notice that it is not stored (yet) in the run structure,
 | 
				
			||||||
 | 
					   * and that termDuplicate is used internally
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
  rd = roledefDuplicate (role->roledef);
 | 
					  rd = roledefDuplicate (role->roledef);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* set parameters */
 | 
					  /* set parameters */
 | 
				
			||||||
  /* generic setup */
 | 
					  /* generic setup of inherited stuff */
 | 
				
			||||||
  runs[rid].protocol = protocol;
 | 
					  runs[rid].protocol = protocol;
 | 
				
			||||||
  runs[rid].role = role;
 | 
					  runs[rid].role = role;
 | 
				
			||||||
  runs[rid].step = 0;
 | 
					  runs[rid].step = 0;
 | 
				
			||||||
@ -668,22 +671,28 @@ roleInstanceArachne (const System sys, const Protocol protocol,
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
      Term newt, oldt;
 | 
					      Term newt, oldt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* Some care has to be taken: after we use this instantiation, we might reset it.
 | 
				
			||||||
 | 
					       * That is not strictly necessary: whoever set it first, is responsible for getting rid
 | 
				
			||||||
 | 
					       * of it again.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      oldt = scanfrom->term;
 | 
					      oldt = scanfrom->term;
 | 
				
			||||||
      newt = oldt;
 | 
					      newt = deVar(oldt);
 | 
				
			||||||
      if (realTermVariable (newt))
 | 
					      if (realTermVariable (newt))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	  // Make new var for this run
 | 
						  /* This is a variable of the role, that is not instantiated yet.
 | 
				
			||||||
 | 
						   * Thus, it needs a local copy.
 | 
				
			||||||
 | 
						   */
 | 
				
			||||||
	  newt = makeTermType (VARIABLE, TermSymb (newt), rid);
 | 
						  newt = makeTermType (VARIABLE, TermSymb (newt), rid);
 | 
				
			||||||
	  artefacts = termlistAddNew (artefacts, newt);
 | 
						  artefacts = termlistAddNew (artefacts, newt);
 | 
				
			||||||
	  newt->stype = oldt->stype;
 | 
						  newt->stype = oldt->stype;
 | 
				
			||||||
	  // Copy substitution
 | 
					 | 
				
			||||||
	  newt->subst = oldt->subst;
 | 
					 | 
				
			||||||
	  // Remove any old substitution! It is now propagated!
 | 
					 | 
				
			||||||
	  oldt->subst = NULL;
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
      // Add to agent list, possibly
 | 
					      /* Now we add any role names to the agent list. Note that instantiations do not matter:
 | 
				
			||||||
 | 
					       * because if the variable is instantiated, the rolename will be as well, and thus they will
 | 
				
			||||||
 | 
					       * be equal anyway.
 | 
				
			||||||
 | 
					       */
 | 
				
			||||||
      if (inTermlist (protocol->rolenames, oldt))
 | 
					      if (inTermlist (protocol->rolenames, oldt))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
						  /* Add the agent name or role variable... */
 | 
				
			||||||
	  runs[rid].agents = termlistAppend (runs[rid].agents, newt);
 | 
						  runs[rid].agents = termlistAppend (runs[rid].agents, newt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	  if (isTermVariable (newt))
 | 
						  if (isTermVariable (newt))
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user