int GLUI_Listbox::special_handler( int key,int modifiers ) { GLUI_Listbox_Item *node, *new_node; node = get_item_ptr( int_val ); new_node = NULL; if ( key == GLUT_KEY_DOWN ) { new_node = (GLUI_Listbox_Item*) node->next(); } else if ( key == GLUT_KEY_UP ) { new_node = (GLUI_Listbox_Item*) node->prev(); } else if ( key == GLUT_KEY_HOME ) { new_node = (GLUI_Listbox_Item*) items_list.first_child(); } else if ( key == GLUT_KEY_END ) { new_node = (GLUI_Listbox_Item*) items_list.last_child(); } if ( new_node != NULL AND new_node != node ) { node = new_node; set_int_val( node->id ); execute_callback(); return true; } else { return false; } }
void* pool_remove(struct pool_t* pool, void* item) { LOGD("Removing item data %p", item); struct pool_item_t* ptr = get_item_ptr(item); struct pool_item_t* next = ptr->next; if (ptr->prev != NULL) { ptr->prev->next = ptr->next; } else { pool->items = ptr->next; } if (ptr->next != NULL) { ptr->next->prev = NULL; } ptr->prev = NULL; ptr->next = pool->free_items; pool->free_items = ptr; return get_data_ptr(next); }
void* pool_get_next(struct pool_t* pool, void* item) { if (item == NULL) { return get_data_ptr(pool->items); } struct pool_item_t* ptr = get_item_ptr(item); return get_data_ptr(ptr->next); }
void* pool_insert(struct pool_t* pool, void* item, const void* after) { if (pool->free_items == NULL) { LOGE("Pool is full"); return NULL; } LOGD("Inserting item %p after %p", item, after); // take new item from free items pool struct pool_item_t* ptr = pool->free_items; if (ptr->next != NULL) { ptr->next->prev = NULL; } pool->free_items = ptr->next; if (after != NULL) { // insert item struct pool_item_t* after_ptr = get_item_ptr(after); ptr->next = after_ptr->next; ptr->prev = after_ptr; after_ptr->next = ptr; if (ptr->next != NULL) { ptr->next->prev = ptr; } } else { // prepend item ptr->prev = NULL; ptr->next = pool->items; if (ptr->next) { ptr->next->prev = ptr; } pool->items = ptr; } ++pool->nitems; void* ptr_data = get_data_ptr(ptr); memcpy(ptr_data, item, pool->item_size); LOGD("Returning ptr to data %p", ptr_data); return ptr_data; }
int GLUI_Listbox::delete_item(int id) { GLUI_Listbox_Item *node = get_item_ptr(id); if (node) { node->unlink(); delete node; return true; } if (recalculate_item_width()) glui->refresh(); return false; }
int GLUI_List::delete_item( int id ) { GLUI_List_Item *node = get_item_ptr( id ); if ( node ) { node->unlink(); delete node; num_lines--; return true; } else { return false; } }
int GLUI_List::delete_item( const char *text ) { GLUI_List_Item *node = get_item_ptr( text ); if ( node ) { node->unlink(); delete node; num_lines--; return true; } else { return false; } }
/** * \brief Member by pointer. Returns a pointer on the colliding item. */ const bear::engine::base_item* bear::engine::collision_in_expression::operator->() const { return get_item_ptr(); } // collision_in_expression::operator->()