return 0;
}
-static int __ses_de_cross(ScfEfunction* f, int d)
+static int __ses_de_cross(ScfEfunction* f, int d, intptr_t N)
{
ScfEcomponent* c;
ScfEline* el;
return -ENOMEM;
}
- intptr_t N = 2;
intptr_t i;
intptr_t j;
intptr_t k;
if (ret < 0)
return ret;
- if (0 < graph->size) {
- v = graph->data[0];
-
- N = v->edges->size;
+ if (N <= 0) {
+ if (0 < graph->size) {
+ v = graph->data[0];
+ N = v->edges->size;
+ } else
+ N = 2;
}
- for (j = N; j >= 1; j--) {
+ for (j = N; j >= 2; j--) {
for (i = 1; i <= j; i++)
scf_vector_add(colors, (void*)i);
for (i = 0; i < graph->size; i++) {
v = graph->data[i];
- if (v->color < 0) {
+ if (v->color < 0 && j > 2) {
c = v->data;
scf_loge("j: %ld, i: %ld, c%ld->color: %ld\n", j, i, c->id, v->color);
break;
for (i = 0; i < graph->size; i++) {
v = graph->data[i];
- c = v->data;
- c->color = v->color;
+ c = v->data;
+ if (v->color > 0) {
+ c->color = v->color;
+ scf_logi("j: %ld, i: %ld, c%ld->color: %ld\n", j, i, c->id, c->color);
+ } else {
+ c->color = j;
+ scf_loge("j: %ld, i: %ld, c%ld->color: %ld\n", j, i, c->id, c->color);
+ }
+
v->color = 0;
}
+ printf("\n");
scf_vector_clear(colors, NULL);
}
qsort(f->elines, f->n_elines, sizeof(ScfEline*), eline_cmp_id);
- ret = __ses_de_cross(f, d);
+ ret = __ses_de_cross(f, d, 0);
if (ret < 0)
return ret;