• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ promote函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中promote函数的典型用法代码示例。如果您正苦于以下问题:C++ promote函数的具体用法?C++ promote怎么用?C++ promote使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了promote函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: two_three_insert_balance

void two_three_insert_balance (Tree *T, Node *x)
{
    Node *sibling, *g; g = NULL;
    bool side, p_side; side = p_side = 0;

    while (x->rd == 0 && x->p != T->head) {                         // VIOLATION
        g = x->p->p;
        sibling = return_sibling (x);
        if ((x->p->rd == 1 || g == T->head) && sibling->rd == 0) {  // Case 1
                promote (T, x->p);
                x = x->p;
        }
        else if (x->p->rd == 0 && g != T->head) {
            side = (x == x->p->child[R]);
            p_side = (x->p == g->child[R]);
            if (side != p_side) {                                   // Case 3
                rotate_balance(x);
                rotate (T, x->p, p_side);
            }
            rotate_balance(g->child[p_side]);                       // Case 2
            rotate (T, g, !p_side);
            promote (T, g->p);
            x = g->p;
        }
        else {                                                      // Balanced
            return; // or x = x->p
        }
    }
}
开发者ID:makow,项目名称:Rank-balanced_binary_trees,代码行数:29,代码来源:two-three.c


示例2: set

	void set(int key, int value) {
		//update
		if (hashtable[key]) {
			Node* p = this->hashtable[key];
			p->val = value;
			promote(p);
			return;
		}

		Node *p = NULL;

		if (this->size < this->capacity) {
			p = & entries[size];
			p->next = this->head->next;
			p->pre = this->head;
			this->head->next->pre = p;
			this->head->next = p;
			size += 1;
		} else {
			this->hashtable.erase(this->tail->pre->key);
			p = this->tail->pre;
			promote(p);
		}

		p->key = key;
		p->val = value;
		this->hashtable[key] = p;
		return;
	}
开发者ID:Qbuer,项目名称:LeetCode,代码行数:29,代码来源:146.LRU+Cache.cpp


示例3: MALLOC

static mle *build_mission_list(int anarchy_mode)
{
	mle *mission_list;
	int top_place;
    char	builtin_mission_filename[FILENAME_LEN];
	char	search_str[PATH_MAX] = MISSION_DIR;

	//now search for levels on disk

//@@Took out this code because after this routine was called once for
//@@a list of single-player missions, a subsequent call for a list of
//@@anarchy missions would not scan again, and thus would not find the
//@@anarchy-only missions.  If we retain the minimum level of install,
//@@we may want to put the code back in, having it always scan for all
//@@missions, and have the code that uses it sort out the ones it wants.
//@@	if (num_missions != -1) {
//@@		if (Current_mission_num != 0)
//@@			load_mission(0);				//set built-in mission as default
//@@		return num_missions;
//@@	}

	MALLOC(mission_list, mle, MAX_MISSIONS);
	num_missions = 0;
	
	add_builtin_mission_to_list(mission_list + num_missions, builtin_mission_filename);  //read built-in first
	add_d1_builtin_mission_to_list(mission_list + num_missions);
	add_missions_to_list(mission_list, search_str, search_str + strlen(search_str), anarchy_mode);
	
	// move original missions (in story-chronological order)
	// to top of mission list
	top_place = 0;
	promote(mission_list, "descent", &top_place); // original descent 1 mission
	promote(mission_list, builtin_mission_filename, &top_place); // d2 or d2demo
	promote(mission_list, "d2x", &top_place); // vertigo

	if (num_missions > top_place)
		qsort(&mission_list[top_place],
		      num_missions - top_place,
		      sizeof(*mission_list),
 				(int (*)( const void *, const void * ))ml_sort_func);


	if (num_missions > top_place)
		qsort(&mission_list[top_place],
		      num_missions - top_place,
		      sizeof(*mission_list),
		      (int (*)( const void *, const void * ))ml_sort_func);

	return mission_list;
}
开发者ID:Foran,项目名称:dxx-rebirth,代码行数:50,代码来源:mission.cpp


示例4: retcode

void retcode(Tree p) {
	Type ty;

	if (p == NULL) {
		if (events.returns)
			apply(events.returns, cfunc, NULL);
		return;
	}
	p = pointer(p);
	ty = assign(freturn(cfunc->type), p);
	if (ty == NULL) {
		error("illegal return type; found `%t' expected `%t'\n",
			p->type, freturn(cfunc->type));
		return;
	}
	p = cast(p, ty);
	if (retv)
		{
			if (iscallb(p))
				p = tree(RIGHT, p->type,
					tree(CALL+B, p->type,
						p->kids[0]->kids[0], idtree(retv)),
					rvalue(idtree(retv)));
			else {
				Type ty = retv->type->type;
				assert(isstruct(ty));
				if (ty->u.sym->u.s.cfields) {
					ty->u.sym->u.s.cfields = 0;
					p = asgntree(ASGN, rvalue(idtree(retv)), p);
					ty->u.sym->u.s.cfields = 1;
				} else
					p = asgntree(ASGN, rvalue(idtree(retv)), p);
			}
			walk(p, 0, 0);
			if (events.returns)
				apply(events.returns, cfunc, rvalue(idtree(retv)));
			return;
		}
	if (events.returns)
		{
			Symbol t1 = genident(AUTO, p->type, level);
			addlocal(t1);
			walk(asgn(t1, p), 0, 0);
			apply(events.returns, cfunc, idtree(t1));
			p = idtree(t1);
		}
	if (!isfloat(p->type))
		p = cast(p, promote(p->type));
	if (isptr(p->type))
		{
			Symbol q = localaddr(p);
			if (q && (q->computed || q->generated))
				warning("pointer to a %s is an illegal return value\n",
					q->scope == PARAM ? "parameter" : "local");
			else if (q)
				warning("pointer to %s `%s' is an illegal return value\n",
					q->scope == PARAM ? "parameter" : "local", q->name);
		}
	walk(tree(mkop(RET,p->type), p->type, p, NULL), 0, 0);
}
开发者ID:HanumathRao,项目名称:lcc,代码行数:60,代码来源:stmt.c


示例5: priorityQueueInsert

/* Construct a binary tree node with given data and insert it into the heap */
priorityQueueEntry priorityQueueInsert(priorityQueue* queue, int key, void* data)
{	
	/* Construction */
	priorityQueueEntry* entry =	(priorityQueueEntry*) malloc(sizeof (priorityQueueEntry));
	entry->key=key;
	entry->data=data;
	entry->parent=NULL;
	entry->childl=NULL;
	entry->childr=NULL;

	/* Insertion */
	queue->size++;
	if(queue->size==1)
		queue->root=entry;
	else {
		/* Find the variable that shall store the new entry */
		priorityQueueEntry* parent=nodeAt(queue, (queue->size)/2);
		priorityQueueEntry* *destination;
		if(queue->size%2==0)
			destination=&(parent->childl);
		else
			destination=&(parent->childr);
		assert(*destination==NULL);
		
		*destination=entry;
		entry->parent=parent;
		promote(entry);
	}
	
	return* entry;
}
开发者ID:pscha,项目名称:bin_heap,代码行数:32,代码来源:PriorityQueue.c


示例6: subtree

/* subtree - construct tree for l - r */
static Tree subtree(int op, Tree l, Tree r) {
	long n;
	Type ty = inttype;

	if (isarith(l->type) && isarith(r->type)) {
		ty = binary(l->type, r->type);
		l = cast(l, ty);
		r = cast(r, ty);		
	} else if (isptr(l->type) && !isfunc(l->type->type) && isint(r->type)) {
		ty = unqual(l->type);
		n = unqual(ty->type)->size;
		if (n == 0)
			error("unknown size for type `%t'\n", ty->type);
		r = cast(r, promote(r->type));
		if (n > 1)
			r = multree(MUL, cnsttree(signedptr, n), r);
		if (isunsigned(r->type))
			r = cast(r, unsignedptr);
		else
			r = cast(r, signedptr);
		return simplify(SUB+P, ty, l, r);
	} else if (compatible(l->type, r->type)) {
		ty = unqual(l->type);
		n = unqual(ty->type)->size;
		if (n == 0)
			error("unknown size for type `%t'\n", ty->type);
		l = simplify(SUB+U, unsignedptr,
			cast(l, unsignedptr), cast(r, unsignedptr));
		return simplify(DIV+I, longtype,
			cast(l, longtype), cnsttree(longtype, n));
	} else
		typeerror(op, l, r);
	return simplify(op, ty, l, r);
}
开发者ID:haplesshero13,项目名称:lcc-lc3,代码行数:35,代码来源:enode.c


示例7: addtree

static Tree addtree(int op, Tree l, Tree r) {
	Type ty = inttype;

	if (isarith(l->type) && isarith(r->type)) {
		ty = binary(l->type, r->type);
		l = cast(l, ty);
		r = cast(r, ty);		
	} else if (isptr(l->type) && isint(r->type))
		return addtree(ADD, r, l);
	else if (  isptr(r->type) && isint(l->type)
	&& !isfunc(r->type->type))
		{
			long n;
			ty = unqual(r->type);
			n = unqual(ty->type)->size;
			if (n == 0)
				error("unknown size for type `%t'\n", ty->type);
			l = cast(l, promote(l->type));
			if (n > 1)
				l = multree(MUL, cnsttree(signedptr, n), l);
			if (isunsigned(l->type))
				l = cast(l, unsignedptr);
			else
				l = cast(l, signedptr);
			if (YYcheck && !isaddrop(r->op))		/* omit */
				return nullcall(ty, YYcheck, r, l);	/* omit */
			return simplify(ADD, ty, l, r);
		}

	else
		typeerror(op, l, r);
	return simplify(op, ty, l, r);
}
开发者ID:haplesshero13,项目名称:lcc-lc3,代码行数:33,代码来源:enode.c


示例8: close

 void close(F& f) noexcept(noexcept(f(std::declval<pointer>()))) {
   node_pointer ptr = take_head(stack_closed_tag());
   while (ptr != nullptr) {
     auto next = ptr->next;
     f(promote(ptr));
     ptr = next;
   }
 }
开发者ID:YulinWu,项目名称:actor-framework,代码行数:8,代码来源:lifo_inbox.hpp


示例9: main

int main(int argc, const char *argv[]) {
	char *titleid = get_title_id(PACKAGE_DIR "/sce_sys/param.sfo");
	if (titleid && strcmp(titleid, "VITASHELL") == 0) {
		if (promote(PACKAGE_DIR) >= 0)
			launchAppByUriExit("VITASHELL");
	}

	return sceKernelExitProcess(0);
}
开发者ID:henkaku,项目名称:VitaShell,代码行数:9,代码来源:main.c


示例10: get

	int get(int key) {
		Node *p = hashtable[key];
		if (!p) {
			return -1;
		} else {
			promote(p);
			return p->val;
		}
	}
开发者ID:Qbuer,项目名称:LeetCode,代码行数:9,代码来源:146.LRU+Cache.cpp


示例11: pawn_moves

moves pawn_moves(settings * set, cord curr, int color) {
	moves piece_simple_moves;
	piece_simple_moves.len = 0;
	cord dest;
	move * single_move;
	moves promotions;
	int dest_color;
	int y_dir = (color == WHITE) ? 1 : -1;

	dest.y = curr.y + y_dir;

	for (int x = -1; x <= 1; x++) {
		single_move = malloc(sizeof(move));
		if (single_move == NULL) {
			free_list(&piece_simple_moves, &free);
			return error_moves;
		}
		single_move->start = curr;
		single_move->promotion = FALSE;
		single_move->is_castle = FALSE;
		dest.x = curr.x + x;
		if (is_valid_cord(dest)) {
			dest_color = which_color(board_piece(set->board, dest));
			//logical XOR: check if pawn can eat XOR move up
			if (color == dest_color) {
				free(single_move);
				continue;
			}
			if ((x == 0) != (dest_color == other_player(color))) {
				single_move->end = dest;
				board_copy(set->board, single_move->board);
				move_from_to(single_move->board, curr, dest);
				// check if psaudo-legal move is legal
				if (is_king_checked(color, single_move->board)) {
					free(single_move);
					continue;
				}
				if (dest.y == promotion_row(color)) {
					promotions = promote(single_move);
					if (promotions.len == -1){
						free(single_move);
						free_list(&piece_simple_moves, &free);
						return promotions;
					}
					concat(&piece_simple_moves, promotions);
				}
				else if (!add_node(&piece_simple_moves, single_move, sizeof(move))) { //could not add node to linked list
					free(single_move);
					free_list(&piece_simple_moves, &free);
					return error_moves;
				}
				free(single_move);
			}
		}
	}
	return piece_simple_moves;
}
开发者ID:ishefi,项目名称:chess,代码行数:57,代码来源:Chess.c


示例12: put

void put(char* key, char* value) {
    NODE *node = NULL;
    if (root)
        node = fetch(key, root);
    if (node) {
        // update the value
        strncpy(node->value, value, STR_MAX_SIZE);
#ifdef SET_IS_USE
        promote(node);
#endif
    } else {
        if (empty_count) { // root == NULL case is covered here also
           node = create_node(key, value);
           empty_count--;
#ifdef SET_IS_USE
            promote(node);
#endif

#ifdef SORT_IGNORE_CASE
            if (root)
                add_leaf(node, root, false);
            else
                rebuild_tree(false); // only for the first element
#else
            if (root)
                add_leaf(node, root);
            else
                rebuild_tree(); // only for the first element
#endif
        } else {
           node = rear.prev;
           strncpy(node->key, key, STR_MAX_SIZE);
           strncpy(node->value, value, STR_MAX_SIZE);
#ifdef SET_IS_USE
            promote(node);
#endif
#ifdef SORT_IGNORE_CASE
            rebuild_tree(false);
#else
            rebuild_tree();
#endif
        }
    }
}
开发者ID:kennyhe,项目名称:MiscCodings,代码行数:44,代码来源:lrucache.c


示例13: get

char* get(char* key, bool use) {
    if (! root) return NULL;
    
    NODE *node = fetch(key, root);
    if (node) {
        if (use) promote(node);
        return node->value;
    } else
        return NULL;
}
开发者ID:kennyhe,项目名称:MiscCodings,代码行数:10,代码来源:lrucache.c


示例14: if

  void dynamic_pst::promote(dynamic_pst::node* node) {

    dynamic_pst::node* empty_node;
        
    if (node->right != 0 && node->right->key_y == node->key_y)
      empty_node = node->right;
    else if (node->left != 0 && node->left->key_y == node->key_y)
      empty_node = node->left;
    else
      return;

    if (empty_node->leaf()) {
      empty_node->placeholder = true;
      return;
    }
    
    point cand_left = point(-INF,-INF);
    point cand_right = point(-INF,-INF);
    
    if (empty_node->left != 0 && !empty_node->left->placeholder)
      cand_left = empty_node->left->key_y;
    
    if (empty_node->right != 0 && !empty_node->right->placeholder)
      cand_right = empty_node->right->key_y;
    
    empty_node->key_y = std::max(cand_left, cand_right, comp_y);
    
    if (empty_node->left != 0 && empty_node->left->leaf() &&
        !empty_node->left->placeholder && empty_node->left->key_y == empty_node->key_y)
      empty_node->left->placeholder = true;
    else if (empty_node->left != 0 && !empty_node->leaf() &&
             empty_node->left->key_y == empty_node->key_y)
      promote(empty_node);
    
    if (empty_node->right != 0 && empty_node->right->leaf() &&
        !empty_node->right->placeholder && empty_node->right->key_y == empty_node->key_y)
      empty_node->right->placeholder = true;
    else if (empty_node->right != 0 && !empty_node->leaf() &&
             empty_node->right->key_y == empty_node->key_y)
      promote(empty_node);
    
  }
开发者ID:gabet1337,项目名称:speciale,代码行数:42,代码来源:dynamic_pst.hpp


示例15: inplace_binop

renf_elem_class & renf_elem_class::operator*=(const renf_elem_class & rhs) noexcept
{
    if (rhs.is_fmpq())
        inplace_binop(rhs.b, fmpq_mul, renf_elem_mul_fmpq);
    else
    {
        promote(*rhs.nf);
        renf_elem_mul(a, a, rhs.a, nf->renf_t());
    }
    return *this;
}
开发者ID:videlec,项目名称:e-antic,代码行数:11,代码来源:renf_elem_class.cpp


示例16: shtree

/* shtree - construct tree for l [>> <<] r */
Tree shtree(int op, Tree l, Tree r) {
	Type ty = inttype;

	if (isint(l->type) && isint(r->type)) {
		ty = promote(l->type);
		l = cast(l, ty);
		r = cast(r, inttype);
	} else
		typeerror(op, l, r);
	return simplify(op, ty, l, r);
}
开发者ID:haplesshero13,项目名称:lcc-lc3,代码行数:12,代码来源:enode.c


示例17: stack_key

void LessThanOrEqualFunc::execute() {
    boolean symflag = stack_key(sym_symid).is_true(); 
    ComValue& nval = stack_key(n_symid); 

    ComValue& operand1 = stack_arg(0);
    ComValue& operand2 = stack_arg(1);
    promote(operand1, operand2);
    ComValue result(operand1);
    result.type(ComValue::BooleanType);

    switch (operand1.type()) {
    case ComValue::CharType:
	result.boolean_ref() = operand1.char_val() <= operand2.char_val();
	break;
    case ComValue::UCharType:
	result.boolean_ref() = operand1.uchar_val() <= operand2.uchar_val();
	break;
    case ComValue::ShortType:
	result.boolean_ref() = operand1.short_val() <= operand2.short_val();
	break;
    case ComValue::UShortType:
	result.boolean_ref() = operand1.ushort_val() <= operand2.ushort_val();
	break;
    case ComValue::IntType:
	result.boolean_ref() = operand1.int_val() <= operand2.int_val();
	break;
    case ComValue::UIntType:
	result.boolean_ref() = operand1.uint_val() <= operand2.uint_val();
	break; 
    case ComValue::LongType:
	result.boolean_ref() = operand1.long_val() <= operand2.long_val();
	break;
    case ComValue::ULongType:
	result.boolean_ref() = operand1.ulong_val() <= operand2.ulong_val();
	break;
    case ComValue::FloatType:
	result.boolean_ref() = operand1.float_val() <= operand2.float_val();
	break;
    case ComValue::DoubleType:
	result.boolean_ref() = operand1.double_val() <= operand2.double_val();
	break;
    case ComValue::SymbolType:
	const char* str1 = operand1.symbol_ptr();
	const char* str2 = operand2.symbol_ptr();
	if (nval.is_unknown())
	  result.boolean_ref() = strcmp(str1, str2)<=0;
	else
	  result.boolean_ref() = strncmp(str1, str2, nval.int_val())<=0;
	break;
    }
    reset_stack();
    push_stack(result);
}
开发者ID:barak,项目名称:ivtools-cvs,代码行数:53,代码来源:boolfunc.c


示例18: swstmt

static void swstmt(int loop, int lab, int lev) {
	Tree e;
	struct swtch sw;
	Code head, tail;

	t = gettok();
	expect('(');
	definept(NULL);
	e = expr(')');
	if (!isint(e->type)) {
		error("illegal type `%t' in switch expression\n",
			e->type);
		e = retype(e, inttype);
	}
	e = cast(e, promote(e->type));
	if (generic(e->op) == INDIR && isaddrop(e->kids[0]->op)
	&& e->kids[0]->u.sym->type == e->type
	&& !isvolatile(e->kids[0]->u.sym->type)) {
		sw.sym = e->kids[0]->u.sym;
		walk(NULL, 0, 0);
	} else {
		sw.sym = genident(REGISTER, e->type, level);
		addlocal(sw.sym);
		walk(asgn(sw.sym, e), 0, 0);
	}
	head = code(Switch);
	sw.lab = lab;
	sw.deflab = NULL;
	sw.ncases = 0;
	sw.size = SWSIZE;
	sw.values = newarray(SWSIZE, sizeof *sw.values, FUNC);
	sw.labels = newarray(SWSIZE, sizeof *sw.labels, FUNC);
	refinc /= 10.0;
	statement(loop, &sw, lev);
	if (sw.deflab == NULL) {
		sw.deflab = findlabel(lab);
		definelab(lab);
		if (sw.ncases == 0)
			warning("switch statement with no cases\n");
	}
	if (findlabel(lab + 1)->ref)
		definelab(lab + 1);
	tail = codelist;
	codelist = head->prev;
	codelist->next = head->prev = NULL;
	if (sw.ncases > 0)
		swgen(&sw);
	branch(lab);
	head->next->prev = codelist;
	codelist->next = head->next;
	codelist = tail;
}
开发者ID:0culus,项目名称:ioq3,代码行数:52,代码来源:stmt.c


示例19: cmp_op

static
cmp_op(stream, node) {
    auto op = node[0];

    auto type; /* By this point the types must be compatible */
    if ( node[3][2][0] == '*' ) type = node[3][2];
    else type = usual_conv( node[3][2], node[4][2] );

    auto is_unsgn = type[5];
    auto sz = type_size(type);

    expr_code( stream, node[3], 0 );
    promote( stream, is_unsgn, type_size( node[3][2] ), sz );
    asm_push( stream );
    expr_code( stream, node[4], 0 );
    promote( stream, is_unsgn, type_size( node[4][2] ), sz );

    if      ( op == '<'   ) pop_lt(stream, sz, is_unsgn);
    else if ( op == '>'   ) pop_gt(stream, sz, is_unsgn);
    else if ( op == '<='  ) pop_le(stream, sz, is_unsgn);
    else if ( op == '>='  ) pop_ge(stream, sz, is_unsgn);
    else if ( op == '=='  ) pop_eq(stream, sz);
    else if ( op == '!='  ) pop_ne(stream, sz);
}
开发者ID:ras52,项目名称:bootstrap,代码行数:24,代码来源:codegen.c


示例20: checkAndInsert

void checkAndInsert(int x){
    int lru_index;
    int pos;
    cache_blk_t *blkPtr;
    blkPtr=searchBlock(x); 
    int index;
    if(!blkPtr){ //value not found 
                //insert new value to lru pos
                //and promote
        
        #ifdef DEBUG
        printf("cache miss, inserting value %d\n",x);
        #endif 
        if(strategy_type==PLRU){
            blkPtr=find_plru();
            lru_index=getIndex(blkPtr);
            printf("evicting value:%d on pos %d for %d\n",blkPtr->value,lru_index,x);
            blkPtr->value=x;
            promote(blkPtr);
        }
        else{ //using IPV vector
            placeValue(x,15, ipv[16]); //17 position denodes the position a value is placed
        }
    }
    else{
        #ifdef DEBUG
        printf("cache hit!..promoting %d\n",getIndex(blkPtr));
        #endif
        if(strategy_type==PLRU)
            promote(blkPtr); 
        else{
                index=getIndex(blkPtr);
                placeValue(x,index,ipv[index]);
        }
    }
}
开发者ID:koutras,项目名称:simpleScalarCacheReplacement,代码行数:36,代码来源:ipv.c



注:本文中的promote函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ prompt函数代码示例发布时间:2022-05-30
下一篇:
C++ promise函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap