Example #1
0
template <class D> AVL_RES avl_tree<D>::internal_insert(avl_node<D> **node,D *data,D **result_data)
{
  AVL_RES result;

  if(!(*node))
  {
    if(!(*node=new avl_node<D>(data)))
    {
      return AVL_ERROR;
    }
    *result_data=(*node)->data;
    node_count++;
    return AVL_BALANCE;
  }
  long diff=compare(*node,data);
  if(diff<0)
  {
    if((result=internal_insert(&(*node)->left,data,result_data))==AVL_BALANCE)
    {
      return leftgrown(node);
    }
    return result;
  }
  if(diff>0)
  {
    if((result=internal_insert(&(*node)->right,data,result_data))==AVL_BALANCE)
    {
      return rightgrown(node);
    }
    return result;
  }
  *result_data=(*node)->data;
  delete data;
  return AVL_ERROR;
}
Example #2
0
/* This is the final leg of main() */
int main_loop(const char *filename, system_t type)
{
   vidinfo_t video;

   /* register shutdown, in case of assertions, etc. */
//   atexit(shutdown_everything);

   //if (config.open()) // JMH
   //   return -1;

   if (osd_init())
      return -1;

   osd_getvideoinfo(&video);
   if (vid_init(video.default_width, video.default_height, video.driver))
      return -1;
	//log printf("vid_init done\n");

   console.nextfilename = strdup(filename);
   console.nexttype = type;

//   while (false == console.quit)
//   {
//emu_printf("internal_insert in loop\n");    
      if (internal_insert(console.nextfilename, console.nexttype))
         return 1;
//   }

   return 0;
}
Example #3
0
/* This assumes there is no current context */
static int internal_insert(const char *filename, system_t type)
{
   /* autodetect system type? */
   if (system_autodetect == type)
      type = detect_systemtype(filename);

   console.filename = strdup(filename);
   console.type = type;

   /* set up the event system for this system type */
   event_set_system(type);

   switch (console.type)
   {
   case system_nes:
      console.machine.nes = nes_create();
      if (NULL == console.machine.nes)
      {
         log_printf("Failed to create NES instance.\n");
         return -1;
      }
      if (nes_insertcart(console.filename, console.machine.nes))
         return -1;
      vid_setmode(NES_SCREEN_WIDTH, NES_VISIBLE_HEIGHT);
      if (install_timer(NES_REFRESH_RATE))
         return -1;

      nes_emulate();
      break;
   
   case system_unknown:
   default:
      log_printf("system type unknown, playing nofrendo NES intro.\n");
      if (NULL != console.filename)
         free(console.filename);

      /* oooh, recursion */
      return internal_insert(filename, system_nes);
   }

   return 0;
}
Example #4
0
template <class D> D *avl_tree<D>::insert(D *data)
{
  D *result=NULL;
  internal_insert(&root,data,&result);
  return result;
}