示例#1
0
文件: ortho.c 项目: TidyHuang/vizgems
/* decide_point returns the number of hops needed in the given directions 
 * along the 2 edges to get to a deciding point (or NODES) and also puts 
 * into prec the appropriate dependency (follows same convention as seg_cmp)
 */
static pair 
decide_point(segment* si, segment* sj, int dir1, int dir2)
{
    int prec, ans = 0, temp;
    pair ret;
    segment* np1;
    segment* np2;
    
    while ((np1 = next_seg(si,dir1)) && (np2 = next_seg(sj,dir2)) &&
	is_parallel(np1, np2)) {
	ans++;
	si = np1;
	sj = np2;
    }
    if (!np1)
	prec = 0;
    else if (!np2)
	assert(0); /* FIXME */
    else {
	temp = seg_cmp(np1, np2);
	prec = propagate_prec(np1, temp, ans+1, 1-dir1);
    }
		
    ret.a = ans;
    ret.b = prec;
    return(ret);
}
示例#2
0
/**
 * Detects whether the first memory segment contains the other.
 *
 * @param[in] reg_addr starting address of original segment
 * @param[in] reg_len  length of original segment
 * @param[in] oth_addr starting address of other segment
 * @param[in] oth_len  length of other segment
 *
 * @pre NULL != reg_beg
 * @pre NULL != oth_beg
 *
 * @return RR_SUCCESS on success
 */
STATIC reg_return_t
seg_contains(void *reg_addr, size_t reg_len, void *oth_addr, size_t oth_len)
{
    /* preconditions */
    COMEX_ASSERT(NULL != reg_addr);
    COMEX_ASSERT(NULL != oth_addr);

    return seg_cmp(
            reg_addr, reg_len,
            oth_addr, oth_len,
            TEST_FOR_CONTAINMENT);
}
/**
 * Detects whether the first memory segment contains the other.
 *
 * @param[in] reg_addr starting address of original segment
 * @param[in] reg_len  length of original segment
 * @param[in] oth_addr starting address of other segment
 * @param[in] oth_len  length of other segment
 *
 * @pre NULL != reg_beg
 * @pre NULL != oth_beg
 *
 * @return RR_SUCCESS on success
 */
static reg_return_t
seg_contains(void *reg_addr, size_t reg_len, void *oth_addr, size_t oth_len)
{
    /* preconditions */
    assert(NULL != reg_addr);
    assert(NULL != oth_addr);

    return seg_cmp(
               reg_addr, reg_len,
               oth_addr, oth_len,
               TEST_FOR_CONTAINMENT);
}
示例#4
0
/**
 * Detects whether two memory segments intersect.
 *
 * @param[in] reg_addr starting address of original segment
 * @param[in] reg_len  length of original segment
 * @param[in] oth_addr starting address of other segment
 * @param[in] oth_len  length of other segment
 *
 * @pre NULL != reg_beg
 * @pre NULL != oth_beg
 *
 * @return RR_SUCCESS on success
 */
STATIC reg_return_t
seg_intersects(void *reg_addr, size_t reg_len, void *oth_addr, size_t oth_len)
{
    /* preconditions */
    COMEX_ASSERT(NULL != reg_addr);
    COMEX_ASSERT(NULL != oth_addr);

    return seg_cmp(
            reg_addr, reg_len,
            oth_addr, oth_len,
            TEST_FOR_INTERSECTION);
}
/**
 * Detects whether two memory segments intersect.
 *
 * @param[in] reg_addr starting address of original segment
 * @param[in] reg_len  length of original segment
 * @param[in] oth_addr starting address of other segment
 * @param[in] oth_len  length of other segment
 *
 * @pre NULL != reg_beg
 * @pre NULL != oth_beg
 *
 * @return RR_SUCCESS on success
 */
static reg_return_t
seg_intersects(void *reg_addr, size_t reg_len, void *oth_addr, size_t oth_len)
{
    /* preconditions */
    assert(NULL != reg_addr);
    assert(NULL != oth_addr);

    return seg_cmp(
               reg_addr, reg_len,
               oth_addr, oth_len,
               TEST_FOR_INTERSECTION);
}
示例#6
0
文件: ortho.c 项目: TidyHuang/vizgems
static void 
add_edges_in_G(channel* cp)
{
    int x,y;
    segment** seg_list = cp->seg_list;
    int size = cp->cnt;
    rawgraph* G = cp->G;

    for(x=0;x+1<size;x++) {
	for(y=x+1;y<size;y++) {
	    switch (seg_cmp(seg_list[x],seg_list[y])) {
	    case 1:
		insert_edge(G,x,y);
		break;
	    case 0:
		break;
	    case -1:
		insert_edge(G,y,x);
		break;
	    }
	}
    }
}
示例#7
0
文件: seg.c 项目: 0x0FFF/postgres
bool
seg_different(SEG *a, SEG *b)
{
	return seg_cmp(a, b) != 0;
}
示例#8
0
文件: seg.c 项目: 0x0FFF/postgres
bool
seg_ge(SEG *a, SEG *b)
{
	return seg_cmp(a, b) >= 0;
}
示例#9
0
文件: seg.c 项目: 0x0FFF/postgres
bool
seg_gt(SEG *a, SEG *b)
{
	return seg_cmp(a, b) > 0;
}
示例#10
0
文件: seg.c 项目: 0x0FFF/postgres
bool
seg_le(SEG *a, SEG *b)
{
	return seg_cmp(a, b) <= 0;
}
示例#11
0
文件: seg.c 项目: 0x0FFF/postgres
bool
seg_lt(SEG *a, SEG *b)
{
	return seg_cmp(a, b) < 0;
}
示例#12
0
文件: seg.c 项目: 0x0FFF/postgres
bool
seg_same(SEG *a, SEG *b)
{
	return seg_cmp(a, b) == 0;
}