int main() { printf("init result:%d\n", init_bitmap(34, &bitmap_objects)); dump_bitmap(&bitmap_objects); printf("firt set result:%d\n", first_set_index(&bitmap_objects)); OBJECT_TYPE *obj = NULL; for (int i = 0; i < bitmap_objects.num_of_objs; ++i) { //for (int i = 0; i < 30; ++i) { obj = alloc_obj(&bitmap_objects); } dump_bitmap(&bitmap_objects); printf("firt set result:%d\n", first_set_index(&bitmap_objects)); obj = bitmap_objects.objects; //for (int i = 0; i < bitmap_objects.num_of_objs; ++i) { for (int i = 0; i < 30; ++i) { free_obj(&bitmap_objects, obj++); } printf("firt set result:%d\n", first_set_index(&bitmap_objects)); dump_bitmap(&bitmap_objects); printf("firt set result:%d\n", first_set_index(&bitmap_objects)); free_obj(&bitmap_objects, obj++); free_obj(&bitmap_objects, obj++); free_obj(&bitmap_objects, obj++); free_obj(&bitmap_objects, obj++); printf("firt set result:%d\n", first_set_index(&bitmap_objects)); printf("uninit result:%d\n", uninit_bitmap(&bitmap_objects)); }
static void rtnl_link_bridge_dump_vlans(struct nl_dump_params *p, struct bridge_data *bd) { nl_dump(p, "pvid %u", bd->vlan_info.pvid); nl_dump(p, " all vlans:"); dump_bitmap(p, bd->vlan_info.vlan_bitmap); nl_dump(p, " untagged vlans:"); dump_bitmap(p, bd->vlan_info.untagged_bitmap); }
void dump_inode_bitmap_cmd(int argc, char **argv) { if (check_fs_open(argv[0])) return; printf("inode bitmap: "); dump_bitmap(test_fs->inode_map, 1, test_fs->super->s_inodes_count); }
void dump_block_bitmap_cmd(int argc, char **argv) { if (check_fs_open(argv[0])) return; printf("block bitmap: "); dump_bitmap(test_fs->block_map, test_fs->super->s_first_data_block, test_fs->super->s_blocks_count); }
void bitmap_writer_finish(struct pack_idx_entry **index, uint32_t index_nr, const char *filename, uint16_t options) { static char tmp_file[PATH_MAX]; static uint16_t default_version = 1; static uint16_t flags = BITMAP_OPT_FULL_DAG; struct sha1file *f; struct bitmap_disk_header header; int fd = odb_mkstemp(tmp_file, sizeof(tmp_file), "pack/tmp_bitmap_XXXXXX"); if (fd < 0) die_errno("unable to create '%s'", tmp_file); f = sha1fd(fd, tmp_file); memcpy(header.magic, BITMAP_IDX_SIGNATURE, sizeof(BITMAP_IDX_SIGNATURE)); header.version = htons(default_version); header.options = htons(flags | options); header.entry_count = htonl(writer.selected_nr); hashcpy(header.checksum, writer.pack_checksum); sha1write(f, &header, sizeof(header)); dump_bitmap(f, writer.commits); dump_bitmap(f, writer.trees); dump_bitmap(f, writer.blobs); dump_bitmap(f, writer.tags); write_selected_commits_v1(f, index, index_nr); if (options & BITMAP_OPT_HASH_CACHE) write_hash_cache(f, index, index_nr); sha1close(f, NULL, CSUM_FSYNC); if (adjust_shared_perm(tmp_file)) die_errno("unable to make temporary bitmap file readable"); if (rename(tmp_file, filename)) die_errno("unable to rename temporary bitmap file to '%s'", filename); }
void bitmap_writer_finish(struct pack_idx_entry **index, uint32_t index_nr, const char *filename, uint16_t options) { static uint16_t default_version = 1; static uint16_t flags = BITMAP_OPT_FULL_DAG; struct strbuf tmp_file = STRBUF_INIT; struct hashfile *f; struct bitmap_disk_header header; int fd = odb_mkstemp(&tmp_file, "pack/tmp_bitmap_XXXXXX"); f = hashfd(fd, tmp_file.buf); memcpy(header.magic, BITMAP_IDX_SIGNATURE, sizeof(BITMAP_IDX_SIGNATURE)); header.version = htons(default_version); header.options = htons(flags | options); header.entry_count = htonl(writer.selected_nr); hashcpy(header.checksum, writer.pack_checksum); hashwrite(f, &header, sizeof(header) - GIT_MAX_RAWSZ + the_hash_algo->rawsz); dump_bitmap(f, writer.commits); dump_bitmap(f, writer.trees); dump_bitmap(f, writer.blobs); dump_bitmap(f, writer.tags); write_selected_commits_v1(f, index, index_nr); if (options & BITMAP_OPT_HASH_CACHE) write_hash_cache(f, index, index_nr); finalize_hashfile(f, NULL, CSUM_HASH_IN_STREAM | CSUM_FSYNC | CSUM_CLOSE); if (adjust_shared_perm(tmp_file.buf)) die_errno("unable to make temporary bitmap file readable"); if (rename(tmp_file.buf, filename)) die_errno("unable to rename temporary bitmap file to '%s'", filename); strbuf_release(&tmp_file); }
static void write_selected_commits_v1(struct hashfile *f, struct pack_idx_entry **index, uint32_t index_nr) { int i; for (i = 0; i < writer.selected_nr; ++i) { struct bitmapped_commit *stored = &writer.selected[i]; int commit_pos = sha1_pos(stored->commit->object.oid.hash, index, index_nr, sha1_access); if (commit_pos < 0) BUG("trying to write commit not in index"); hashwrite_be32(f, commit_pos); hashwrite_u8(f, stored->xor_offset); hashwrite_u8(f, stored->flags); dump_bitmap(f, stored->write_as); } }
static void write_selected_commits_v1(struct sha1file *f, struct pack_idx_entry **index, uint32_t index_nr) { int i; for (i = 0; i < writer.selected_nr; ++i) { struct bitmapped_commit *stored = &writer.selected[i]; struct bitmap_disk_entry on_disk; int commit_pos = sha1_pos(stored->commit->object.sha1, index, index_nr, sha1_access); if (commit_pos < 0) die("BUG: trying to write commit not in index"); on_disk.object_pos = htonl(commit_pos); on_disk.xor_offset = stored->xor_offset; on_disk.flags = stored->flags; sha1write(f, &on_disk, sizeof(on_disk)); dump_bitmap(f, stored->write_as); } }
void Fake_glXUseXFont(Font font, int first, int count, int listbase) { Display *dpy; Window win; Pixmap pixmap; GC gc; XGCValues values; unsigned long valuemask; XFontStruct *fs; GLint swapbytes, lsbfirst, rowlength; GLint skiprows, skippixels, alignment; unsigned int max_width, max_height, max_bm_width, max_bm_height; GLubyte *bm; int i; dpy = glXGetCurrentDisplay(); if (!dpy) return; /* I guess glXMakeCurrent wasn't called */ win = RootWindow(dpy, DefaultScreen(dpy)); fs = XQueryFont(dpy, font); if (!fs) { _mesa_error(NULL, GL_INVALID_VALUE, "Couldn't get font structure information"); return; } /* Allocate a bitmap that can fit all characters. */ max_width = fs->max_bounds.rbearing - fs->min_bounds.lbearing; max_height = fs->max_bounds.ascent + fs->max_bounds.descent; max_bm_width = (max_width + 7) / 8; max_bm_height = max_height; bm = malloc((max_bm_width * max_bm_height) * sizeof(GLubyte)); if (!bm) { XFreeFontInfo(NULL, fs, 1); _mesa_error(NULL, GL_OUT_OF_MEMORY, "Couldn't allocate bitmap in glXUseXFont()"); return; } #if 0 /* get the page info */ pages = fs->max_char_or_byte2 - fs->min_char_or_byte2 + 1; firstchar = (fs->min_byte1 << 8) + fs->min_char_or_byte2; lastchar = (fs->max_byte1 << 8) + fs->max_char_or_byte2; rows = fs->max_byte1 - fs->min_byte1 + 1; unsigned int first_char, last_char, pages, rows; #endif /* Save the current packing mode for bitmaps. */ glGetIntegerv(GL_UNPACK_SWAP_BYTES, &swapbytes); glGetIntegerv(GL_UNPACK_LSB_FIRST, &lsbfirst); glGetIntegerv(GL_UNPACK_ROW_LENGTH, &rowlength); glGetIntegerv(GL_UNPACK_SKIP_ROWS, &skiprows); glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &skippixels); glGetIntegerv(GL_UNPACK_ALIGNMENT, &alignment); /* Enforce a standard packing mode which is compatible with fill_bitmap() from above. This is actually the default mode, except for the (non)alignment. */ glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE); glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE); glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); pixmap = XCreatePixmap(dpy, win, 10, 10, 1); values.foreground = BlackPixel(dpy, DefaultScreen(dpy)); values.background = WhitePixel(dpy, DefaultScreen(dpy)); values.font = fs->fid; valuemask = GCForeground | GCBackground | GCFont; gc = XCreateGC(dpy, pixmap, valuemask, &values); XFreePixmap(dpy, pixmap); #ifdef DEBUG if (debug_xfonts) dump_font_struct(fs); #endif for (i = 0; i < count; i++) { unsigned int width, height, bm_width, bm_height; GLfloat x0, y0, dx, dy; XCharStruct *ch; int x, y; unsigned int c = first + i; int list = listbase + i; int valid; /* check on index validity and get the bounds */ ch = isvalid(fs, c); if (!ch) { ch = &fs->max_bounds; valid = 0; } else { valid = 1; } #ifdef DEBUG if (debug_xfonts) { char s[7]; sprintf(s, isprint(c) ? "%c> " : "\\%03o> ", c); dump_char_struct(ch, s); } #endif /* glBitmap()' parameters: straight from the glXUseXFont(3) manpage. */ width = ch->rbearing - ch->lbearing; height = ch->ascent + ch->descent; x0 = -ch->lbearing; y0 = ch->descent - 0; /* XXX used to subtract 1 here */ /* but that caused a conformace failure */ dx = ch->width; dy = 0; /* X11's starting point. */ x = -ch->lbearing; y = ch->ascent; /* Round the width to a multiple of eight. We will use this also for the pixmap for capturing the X11 font. This is slightly inefficient, but it makes the OpenGL part real easy. */ bm_width = (width + 7) / 8; bm_height = height; glNewList(list, GL_COMPILE); if (valid && (bm_width > 0) && (bm_height > 0)) { memset(bm, '\0', bm_width * bm_height); fill_bitmap(dpy, win, gc, bm_width, bm_height, x, y, c, bm); glBitmap(width, height, x0, y0, dx, dy, bm); #ifdef DEBUG if (debug_xfonts) { printf("width/height = %u/%u\n", width, height); printf("bm_width/bm_height = %u/%u\n", bm_width, bm_height); dump_bitmap(bm_width, bm_height, bm); } #endif } else { glBitmap(0, 0, 0.0, 0.0, dx, dy, NULL); } glEndList(); } free(bm); XFreeFontInfo(NULL, fs, 1); XFreeGC(dpy, gc); /* Restore saved packing modes. */ glPixelStorei(GL_UNPACK_SWAP_BYTES, swapbytes); glPixelStorei(GL_UNPACK_LSB_FIRST, lsbfirst); glPixelStorei(GL_UNPACK_ROW_LENGTH, rowlength); glPixelStorei(GL_UNPACK_SKIP_ROWS, skiprows); glPixelStorei(GL_UNPACK_SKIP_PIXELS, skippixels); glPixelStorei(GL_UNPACK_ALIGNMENT, alignment); }
/* ***************************************************************************** * Function : dump_resources * Syntax : void dump_resources(const resource_t *top) * Input : * top - Top of the resource tree * Output : * nop * Description : Dump the parsed resource-tree to stdout * Remarks : ***************************************************************************** */ void dump_resources(const resource_t *top) { printf("Internal resource-tree dump:\n"); while(top) { printf("Resource: %s\nId: %s\n", get_typename(top), get_nameid_str(top->name)); switch(top->type) { case res_acc: dump_accelerator(top->res.acc); break; case res_bmp: dump_bitmap(top->res.bmp); break; case res_cur: dump_cursor(top->res.cur); break; case res_curg: dump_cursor_group(top->res.curg); break; case res_dlg: dump_dialog(top->res.dlg); break; case res_dlgex: dump_dialogex(top->res.dlgex); break; case res_fnt: dump_font(top->res.fnt); break; case res_icog: dump_icon_group(top->res.icog); break; case res_ico: dump_icon(top->res.ico); break; case res_men: dump_menu(top->res.men); break; case res_menex: dump_menuex(top->res.menex); break; case res_rdt: dump_rcdata(top->res.rdt); break; case res_stt: dump_stringtable(top->res.stt); break; case res_usr: dump_user(top->res.usr); break; case res_msg: dump_messagetable(top->res.msg); break; case res_ver: dump_versioninfo(top->res.ver); break; case res_dlginit: dump_dlginit(top->res.dlgi); break; case res_toolbar: dump_toolbar(top->res.tbt); break; case res_anicur: case res_aniico: dump_ani_curico(top->res.ani); break; default: printf("Report this: Unknown resource type parsed %08x\n", top->type); } printf("\n"); top = top->next; } }