Beispiel #1
0
void dij_pop_code()
   {
   struct _fnode *fnode; 
   struct iCode *icode;
   struct _context_stack *kill_me;
   struct iContext *context;
   int i;
   printf("enter pop_code\n");
   context = new_context();
   context->append_codeblock(context, dij_box( close_buffer() ));
   context->i_namespace->size_namespace(context->i_namespace,
            write_code->num_parameters , 
            write_code->num_locals , 
            write_code->num_returns,
            0
         );
   context->i_namespace->write_namespace(context->i_namespace,
        write_code->parameters,
        write_code->locals,
        write_code->returns
        );    
   fnode = fgraph->ground(fgraph, context);
   kill_me = write_code;

   write_code = write_code->under;
   if( kill_me )
      {
      if( kill_me->parameters) free(kill_me->parameters);
      if( kill_me->locals) free(kill_me->locals);
      if( kill_me->returns) free(kill_me->returns);
      free(kill_me);
      }
   dij_write( (long int) fnode );
   printf("exit pop_code\n");
   }
Beispiel #2
0
void 
render_release(struct render *R, enum RENDER_OBJ what, RID id) {
	switch (what) {
	case VERTEXBUFFER:
	case INDEXBUFFER: {
		struct buffer * buf = (struct buffer *)array_ref(&R->buffer, id);
		if (buf) {
			close_buffer(buf, R);
			array_free(&R->buffer, buf);
		}
		break;
	}
	case SHADER: {
		struct shader * shader = (struct shader *)array_ref(&R->shader, id);
		if (shader) {
			close_shader(shader, R);
			array_free(&R->shader, shader);
		}
		break;
	}
	case TEXTURE : {
		struct texture * tex = (struct texture *) array_ref(&R->texture, id);
		if (tex) {
			close_texture(tex, R);
			array_free(&R->texture, tex);
		}
		break;
	}
	case TARGET : {
		struct target * tar = (struct target *)array_ref(&R->target, id);
		if (tar) {
			close_target(tar, R);
			array_free(&R->target, tar);
		}
		break;
	}
	default:
		assert(0);
		break;
	}
}
Beispiel #3
0
/*
 * Free everything that we allocated.
 * Can be used to detect memory leaks, e.g., with ccmalloc.
 * NOTE: This is tricky!  Things are freed that functions depend on.  Don't be
 * surprised if Vim crashes...
 * Some things can't be freed, esp. things local to a library function.
 */
void free_all_mem(void)
{
  buf_T       *buf, *nextbuf;
  static int entered = FALSE;

  /* When we cause a crash here it is caught and Vim tries to exit cleanly.
   * Don't try freeing everything again. */
  if (entered)
    return;
  entered = TRUE;

  block_autocmds();         /* don't want to trigger autocommands here */

  /* Close all tabs and windows.  Reset 'equalalways' to avoid redraws. */
  p_ea = FALSE;
  if (first_tabpage->tp_next != NULL)
    do_cmdline_cmd((char_u *)"tabonly!");
  if (firstwin != lastwin)
    do_cmdline_cmd((char_u *)"only!");

  /* Free all spell info. */
  spell_free_all();

  /* Clear user commands (before deleting buffers). */
  ex_comclear(NULL);

  /* Clear menus. */
  do_cmdline_cmd((char_u *)"aunmenu *");
  do_cmdline_cmd((char_u *)"menutranslate clear");

  /* Clear mappings, abbreviations, breakpoints. */
  do_cmdline_cmd((char_u *)"lmapclear");
  do_cmdline_cmd((char_u *)"xmapclear");
  do_cmdline_cmd((char_u *)"mapclear");
  do_cmdline_cmd((char_u *)"mapclear!");
  do_cmdline_cmd((char_u *)"abclear");
  do_cmdline_cmd((char_u *)"breakdel *");
  do_cmdline_cmd((char_u *)"profdel *");
  do_cmdline_cmd((char_u *)"set keymap=");

  free_titles();
  free_findfile();

  /* Obviously named calls. */
  free_all_autocmds();
  clear_termcodes();
  free_all_options();
  free_all_marks();
  alist_clear(&global_alist);
  free_homedir();
  free_users();
  free_search_patterns();
  free_old_sub();
  free_last_insert();
  free_prev_shellcmd();
  free_regexp_stuff();
  free_tag_stuff();
  free_cd_dir();
  free_signs();
  set_expr_line(NULL);
  diff_clear(curtab);
  clear_sb_text();            /* free any scrollback text */

  /* Free some global vars. */
  vim_free(last_cmdline);
  vim_free(new_last_cmdline);
  set_keep_msg(NULL, 0);

  /* Clear cmdline history. */
  p_hi = 0;
  init_history();

  {
    win_T       *win;
    tabpage_T   *tab;

    qf_free_all(NULL);
    /* Free all location lists */
    FOR_ALL_TAB_WINDOWS(tab, win)
    qf_free_all(win);
  }

  /* Close all script inputs. */
  close_all_scripts();

  /* Destroy all windows.  Must come before freeing buffers. */
  win_free_all();

  /* Free all buffers.  Reset 'autochdir' to avoid accessing things that
   * were freed already. */
  p_acd = FALSE;
  for (buf = firstbuf; buf != NULL; ) {
    nextbuf = buf->b_next;
    close_buffer(NULL, buf, DOBUF_WIPE, FALSE);
    if (buf_valid(buf))
      buf = nextbuf;            /* didn't work, try next one */
    else
      buf = firstbuf;
  }

  free_cmdline_buf();

  /* Clear registers. */
  clear_registers();
  ResetRedobuff();
  ResetRedobuff();


  /* highlight info */
  free_highlight();

  reset_last_sourcing();

  free_tabpage(first_tabpage);
  first_tabpage = NULL;

# ifdef UNIX
  /* Machine-specific free. */
  mch_free_mem();
# endif

  /* message history */
  for (;; )
    if (delete_first_msg() == FAIL)
      break;

  eval_clear();

  free_termoptions();

  /* screenlines (can't display anything now!) */
  free_screenlines();

  clear_hl_tables();

  vim_free(NameBuff);
}
Beispiel #4
0
void dij_pop_data()
   {
   long int *result = close_buffer();
   dij_write( (long int)result );
   }