예제 #1
0
void DestroyStatementList(struct StatementList *sl)
{
  register unsigned long c,len;
  if (sl == NULL) return;
  assert(sl->ref_count!=0);
  if (sl->ref_count < MAXREFCOUNT) sl->ref_count--;
  if (sl->ref_count==0) {
    len = gl_length(sl->l);
    for(c=1;c<=len;c++)
      DestroyStatement((struct Statement *)gl_fetch(sl->l,c));
    gl_destroy(sl->l);
    ascfree((char *)sl);
  }
}
예제 #2
0
/**
  Free resources of a Form

  @param  Form                   Pointer of the Form

  @return None.

**/
VOID
DestroyForm (
  IN OUT FORM_BROWSER_FORM  *Form
  )
{
  LIST_ENTRY              *Link;
  FORM_BROWSER_STATEMENT  *Statement;

  //
  // Free Statements/Questions
  //
  while (!IsListEmpty (&Form->StatementListHead)) {
    Link = GetFirstNode (&Form->StatementListHead);
    Statement = FORM_BROWSER_STATEMENT_FROM_LINK (Link);
    RemoveEntryList (&Statement->Link);

    DestroyStatement (Statement);
  }

  //
  // Free this Form
  //
  gBS->FreePool (Form);
}