⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htreg.cc

📁 功能较全面的反汇编器:反汇编器ht-2.0.15.tar.gz
💻 CC
📖 第 1 页 / 共 3 页
字号:
	config_editor->insert(new ht_registry_node(RNT_DWORD, "auto indent", new ht_registry_data_dword(1)));	config_editor->insert(new ht_registry_node(RNT_DWORD, "tab size", new ht_registry_data_dword(8)));	AVLTree *palette_analyser = new AVLTree(true);	AVLTree *palette_generic = new AVLTree(true);	AVLTree *palette_syntax = new AVLTree(true);	AVLTree *palette_tags = new AVLTree(true);	palette->insert(new ht_registry_node(RNT_SUBDIR, "analyser", new ht_registry_data_stree(palette_analyser)));	AVLTree *analyser_default = new AVLTree(true);	palette_analyser->insert(new ht_registry_node(RNT_SUBDIR, "default", new ht_registry_data_stree(analyser_default)));	analyser_default->insert(new ht_registry_node(256, "default", create_empty_palette_entry()));	analyser_default->insert(new ht_registry_node(256, "comment", create_empty_palette_entry()));	analyser_default->insert(new ht_registry_node(256, "label", create_empty_palette_entry()));	analyser_default->insert(new ht_registry_node(256, "number", create_empty_palette_entry()));	analyser_default->insert(new ht_registry_node(256, "string", create_empty_palette_entry()));	analyser_default->insert(new ht_registry_node(256, "symbol-character", create_empty_palette_entry()));	palette->insert(new ht_registry_node(RNT_SUBDIR, "generic", new ht_registry_data_stree(palette_generic)));	AVLTree *palette_generic_black = new AVLTree(true);	AVLTree *palette_generic_blue = new AVLTree(true);	AVLTree *palette_generic_cyan = new AVLTree(true);	AVLTree *palette_generic_gray = new AVLTree(true);	AVLTree *palette_generic_gray2 = new AVLTree(true);	palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "desktop", new ht_registry_data_string("black")));	palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "dialog", new ht_registry_data_string("gray")));	palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "help", new ht_registry_data_string("cyan")));	palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "keyline", new ht_registry_data_string("black")));	palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "menu", new ht_registry_data_string("gray2")));	palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "special", new ht_registry_data_string("cyan")));	palette_generic->insert(new ht_registry_node(RNT_SYMLINK, "window", new ht_registry_data_string("blue")));	palette_generic->insert(new ht_registry_node(RNT_SUBDIR, "black", new ht_registry_data_stree(palette_generic_black)));	palette_generic->insert(new ht_registry_node(RNT_SUBDIR, "blue", new ht_registry_data_stree(palette_generic_blue)));	palette_generic->insert(new ht_registry_node(RNT_SUBDIR, "cyan", new ht_registry_data_stree(palette_generic_cyan)));	palette_generic->insert(new ht_registry_node(RNT_SUBDIR, "gray", new ht_registry_data_stree(palette_generic_gray)));	palette_generic->insert(new ht_registry_node(RNT_SUBDIR, "gray2", new ht_registry_data_stree(palette_generic_gray2)));	// black	palette_generic_black->insert(new ht_registry_node(256, "body", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "text focused", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "text unfocused", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "text shortcut", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "text shortcut selected", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "text selected", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "text disabled", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "frame focused", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "frame unfocused", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "frame move-resize", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "frame killer", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "scrollbar", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "input focused", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "input unfocused", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "input selected", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "input clip-chars", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "button focused", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "button unfocused", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "button shadow", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "button shortcut", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "list focused & selected", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "list focused & unselected", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "list unfocused & selected", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "list unfocused & unselected", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "cluster focused", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "cluster unfocused", create_empty_palette_entry()));	palette_generic_black->insert(new ht_registry_node(256, "cluster shortcut", create_empty_palette_entry()));	// blue	palette_generic_blue->insert(new ht_registry_node(256, "body", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "text focused", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "text unfocused", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "text shortcut", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "text shortcut selected", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "text selected", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "text disabled", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "frame focused", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "frame unfocused", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "frame move-resize", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "frame killer", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "scrollbar", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "input focused", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "input unfocused", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "input selected", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "input clip-chars", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "button focused", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "button unfocused", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "button shadow", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "button shortcut", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "list focused & selected", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "list focused & unselected", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "list unfocused & selected", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "list unfocused & unselected", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "cluster focused", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "cluster unfocused", create_empty_palette_entry()));	palette_generic_blue->insert(new ht_registry_node(256, "cluster shortcut", create_empty_palette_entry()));	// cyan	palette_generic_cyan->insert(new ht_registry_node(256, "body", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "text focused", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "text unfocused", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "text shortcut", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "text shortcut selected", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "text selected", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "text disabled", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "frame focused", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "frame unfocused", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "frame move-resize", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "frame killer", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "scrollbar", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "input focused", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "input unfocused", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "input selected", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "input clip-chars", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "button focused", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "button unfocused", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "button shadow", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "button shortcut", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "list focused & selected", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "list focused & unselected", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "list unfocused & selected", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "list unfocused & unselected", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "cluster focused", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "cluster unfocused", create_empty_palette_entry()));	palette_generic_cyan->insert(new ht_registry_node(256, "cluster shortcut", create_empty_palette_entry()));	// gray	palette_generic_gray->insert(new ht_registry_node(256, "body", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "text focused", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "text unfocused", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "text shortcut", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "text shortcut selected", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "text selected", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "text disabled", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "frame focused", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "frame unfocused", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "frame move-resize", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "frame killer", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "scrollbar", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "input focused", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "input unfocused", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "input selected", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "input clip-chars", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "button focused", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "button unfocused", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "button shadow", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "button shortcut", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "list focused & selected", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "list focused & unselected", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "list unfocused & selected", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "list unfocused & unselected", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "cluster focused", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "cluster unfocused", create_empty_palette_entry()));	palette_generic_gray->insert(new ht_registry_node(256, "cluster shortcut", create_empty_palette_entry()));	// gray2	palette_generic_gray2->insert(new ht_registry_node(256, "body", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "text focused", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "text unfocused", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "text shortcut", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "text shortcut selected", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "text selected", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "text disabled", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "frame focused", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "frame unfocused", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "frame move-resize", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "frame killer", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "scrollbar", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "input focused", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "input unfocused", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "input selected", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "input clip-chars", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "button focused", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "button unfocused", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "button shadow", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "button shortcut", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "list focused & selected", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "list focused & unselected", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "list unfocused & selected", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "list unfocused & unselected", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "cluster focused", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "cluster unfocused", create_empty_palette_entry()));	palette_generic_gray2->insert(new ht_registry_node(256, "cluster shortcut", create_empty_palette_entry()));	palette->insert(new ht_registry_node(RNT_SUBDIR, "syntax", new ht_registry_data_stree(palette_syntax)));	AVLTree *c = new AVLTree(true);	palette_syntax->insert(new ht_registry_node(RNT_SUBDIR, "c", new ht_registry_data_stree(c)));	AVLTree *default1 = new AVLTree(true);	c->insert(new ht_registry_node(RNT_SUBDIR, "default", new ht_registry_data_stree(default1)));	default1->insert(new ht_registry_node(256, "whitespace", create_empty_palette_entry()));	default1->insert(new ht_registry_node(256, "comment", create_empty_palette_entry()));	default1->insert(new ht_registry_node(256, "identifier", create_empty_palette_entry()));	default1->insert(new ht_registry_node(256, "reserved", create_empty_palette_entry()));	default1->insert(new ht_registry_node(256, "integer number", create_empty_palette_entry()));	default1->insert(new ht_registry_node(256, "float number", create_empty_palette_entry()));	default1->insert(new ht_registry_node(256, "string", create_empty_palette_entry()));	default1->insert(new ht_registry_node(256, "character", create_empty_palette_entry()));	default1->insert(new ht_registry_node(256, "symbol", create_empty_palette_entry()));	default1->insert(new ht_registry_node(256, "preprocess", create_empty_palette_entry()));	default1->insert(new ht_registry_node(256, "meta", create_empty_palette_entry()));	palette->insert(new ht_registry_node(RNT_SUBDIR, "tags", new ht_registry_data_stree(palette_tags)));	AVLTree *tag_default = new AVLTree(true);        palette_tags->insert(new ht_registry_node(RNT_SUBDIR, "default", new ht_registry_data_stree(tag_default)));	tag_default->insert(new ht_registry_node(256, "edit-tag cursor select", create_empty_palette_entry()));	tag_default->insert(new ht_registry_node(256, "edit-tag cursor edit", create_empty_palette_entry()));	tag_default->insert(new ht_registry_node(256, "edit-tag cursor unfocused", create_empty_palette_entry()));	tag_default->insert(new ht_registry_node(256, "edit-tag selected", create_empty_palette_entry()));	tag_default->insert(new ht_registry_node(256, "edit-tag modified", create_empty_palette_entry()));	tag_default->insert(new ht_registry_node(256, "edit-tag", create_empty_palette_entry()));	tag_default->insert(new ht_registry_node(256, "sel-tag cursor focused", create_empty_palette_entry()));	tag_default->insert(new ht_registry_node(256, "sel-tag cursor unfocused", create_empty_palette_entry()));	tag_default->insert(new ht_registry_node(256, "sel-tag", create_empty_palette_entry()));	// build node_types tree	node_types = new AVLTree(true);	struct bla {		char *identifier;		ht_registry_node_type type;		create_empty_registry_data_func create_empty_registry_data;	};	bla b[]=	{		{"subdir", RNT_SUBDIR, NULL},		{"symlink", RNT_SYMLINK, create_empty_symlink},		{"dword", RNT_DWORD, create_empty_dword},		{"string", RNT_STRING, create_empty_string},		{"raw", RNT_RAW, create_empty_raw},	};	for (uint i=0; i<sizeof (b) / sizeof b[0]; i++) {		ht_registry_node_type_desc *d=new ht_registry_node_type_desc(			b[i].type, b[i].identifier, b[i].create_empty_registry_data);		node_types->insert(d);	}		ht_registry_node_type_desc *d=new ht_registry_node_type_desc(			256, "palette", create_empty_palette_entry);		node_types->insert(d);#endif}void ht_registry::done(){	delete node_types;	delete root;}int ht_registry::create_node(const char *key, ht_registry_node_type type){	const char *name;	ht_registry_node *m;	if (!splitfind(key, &name, &m)) return EINVAL;	if (!valid_nodename(name)) return EINVAL;	ht_registry_node_type_desc *d = get_node_type_desc(type, NULL);	if (d && d->create_empty_registry_data) {		ht_registry_node t(0, name, NULL);		if (((ht_registry_data_stree*)m->data)->tree->find(&t) != invObjHandle) return EEXIST;		ht_registry_data *data = d->create_empty_registry_data();		ht_registry_node *n=new ht_registry_node(type, name, data);		((ht_registry_data_stree*)m->data)->tree->insert(n);		return 0;	}	return ENOSYS;}int ht_registry::create_subdir(const char *key){	const char *name;	ht_registry_node *m;	if (!splitfind(key, &name, &m)) return EINVAL;	if (!valid_nodename(name)) return EINVAL;	AVLTree *s=new AVLTree(true);	ht_registry_node *n=new ht_registry_node(RNT_SUBDIR, name, new ht_registry_data_stree(s));	bool ins;	((ht_registry_data_stree*)m->data)->tree->findOrInsert(n, ins);	if (!ins) {		delete n;		return EEXIST;	}	return 0;}int ht_registry::delete_node(const char *key){	Container *dir;	ht_registry_node *n = find_entry_i(&dir, key, false);	if (!n) return ENOENT;	const char *s = strrchr(key, '/');	if (s) s++; else s=key;	ht_registry_node ss(0, s, NULL);	return dir->delObj(&ss) ? 0 : ENOENT;}void ht_registry::debug_dump(){#if 0//	FILE *f=fopen("", "");	debug_dump_i(stderr, ((ht_registry_data_stree*)root->data)->tree, 0);//	fclose(f);#endif}void ht_registry::debug_dump_i(FILE *f, Container *t, int ident){#if 0	ht_data_string *key=NULL;	ht_registry_node *n;	while ((key=(ht_data_string*)t->enum_next((ht_data**)&n, key))) {		for (int i=0; i<ident; i++) fprintf(f, "     ");		fprintf(f, "%s ", key->value);		switch (n->type) {		case RNT_DWORD:			fprintf(f, "= (uint32) %08d (%08x)\n", ((ht_data_dword*)n->data)->value, ((ht_data_dword*)n->data)->value);			break;		case RNT_STRING:			fprintf(f, "= (string) \"%s\"\n", ((ht_data_string*)n->data)->value);			break;		case RNT_SYMLINK:			fprintf(f, "=> \"%s\"\n", ((ht_data_string*)n->data)->value);			break;		case RNT_SUBDIR:			fprintf(f, "{\n");			debug_dump_i(f, ((ht_registry_data_stree*)n->data)->tree, ident+1);			for (int i=0; i<ident; i++) fprintf(f, "     ");			fprintf(f, "}\n");			break;		case RNT_RAW:			fprintf(f, "= (raw) nyi!\n");			break;		default: {			char *name = lookup_node_type_name(n->type);			if (!name) name = "?";			fprintf(f, "= ('%s'=%d)\n", name, n->type);			break;		}		}	}#endif}ht_registry_node *ht_registry::enum_next(const char *dir, ht_registry_node *prevkey){	rec_depth = 0;	ht_registry_node *n = find_entry_i(NULL, dir, true);	if (n) {		if (n->type != RNT_SUBDIR) return NULL;		Container *t = ((ht_registry_data_stree*)n->data)->tree;		if (prevkey) {			return (ht_registry_node *)t->get(t->findG(prevkey));		} else {			return (ht_registry_node *)t->get(t->findFirst());		}	}	return NULL;}ht_registry_node *ht_registry::enum_prev(const char *dir, ht_registry_node *prevkey){	rec_depth = 0;	ht_registry_node *n = find_entry_i(NULL, dir, true);	if (n) {		if (n->type != RNT_SUBDIR) return NULL;		Container *t = ((ht_registry_data_stree*)n->data)->tree;		if (prevkey) {			return (ht_registry_node *)t->get(t->findL(prevkey));		} else {			return (ht_registry_node *)t->get(t->findLast());		}	}	return NULL;}bool ht_registry::find_any_entry(const char *key, ht_registry_node **node){	rec_depth = 0;	ht_registry_node *n = find_entry_i(NULL, key, true);	if (n) {		*node = n;		return true;	}	return false;}bool ht_registry::find_data_entry(const char *key, ht_registry_node **node, bool follow_symlinks){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -