static void print_colours(FILE *fp, char const *tag, Colour *data, size_t num) { fprintf(fp, "%s: (%zu)", tag, num); for (size_t i = 0; i < num; i++) fprintf(fp, " %c", colour_code(data[i])); putc('\n', fp); }
static bool is_invalid_sequence(size_t n, Colour *a, bool report) { bool rc = false; size_t w; for (w = 0; w < n; w++) { if (a[w] != WHITE) break; } size_t b; for (b = w; b < n; b++) { if (a[b] == WHITE) { if (report) { fprintf(stderr, "Error: %c out of position (%zu)", colour_code(a[b]), b); print_colours(stderr, "", a, n); } rc = true; } if (a[b] != BLACK) break; } size_t r; for (r = b; r < n; r++) { if (a[r] != RED) { if (report) { fprintf(stderr, "Error: %c out of position (%zu)", colour_code(a[r]), r); print_colours(stderr, "", a, n); } rc = true; } } return rc; }
static void partition3(size_t n, Colour *arr) { if (n <= 1) return; size_t w = 0; size_t r = n; DB_TRACE(1, "\nw0 = %zu; r0 = %zu: ", w, r); while (w < r && arr[w] == WHITE) w++; while (r > w && arr[r-1] == RED) r--; DB_TRACE(1, "w1 = %zu; r1 = %zu\n", w, r); for (size_t i = w; i < r; i++) { DB_TRACE(1, "i = %2zu [1] w = %2zu, r = %2zu, c = %c", i, w, r, colour_code(arr[i])); DB_CALL(1, trace_colours(stderr, "", arr, n, w, r, i)); if (arr[i] == RED) { swap(&arr[i], &arr[--r]); DB_TRACE(1, "i = %2zu [2] w = %2zu, r = %2zu, c = %c", i, w, r, colour_code(arr[i])); DB_CALL(1, trace_colours(stderr, "", arr, n, w, r, i)); } if (arr[i] == WHITE) { swap(&arr[i], &arr[w++]); DB_TRACE(1, "i = %2zu [3] w = %2zu, r = %2zu, c = %c", i, w, r, colour_code(arr[i])); DB_CALL(1, trace_colours(stderr, "", arr, n, w, r, i)); } while (r > w && arr[r-1] == RED) r--; while (w < r && arr[w] == WHITE) w++; if (i < w && w > 0) i = w - 1; } }
static void trace_colours(FILE *fp, char const *tag, Colour *data, unsigned num, size_t w, size_t r, size_t c) { assert(w <= r); assert(r <= num); fprintf(fp, "%s: ", tag); for (unsigned i = 0; i < num; i++) { char pad = ' '; if (i == w || i == r) pad = '|'; if (i == c) pad = '['; if (i == c+1) pad = ']'; fprintf(fp, "%c%c", pad, colour_code(data[i])); } if (c == num - 1) putc(']', fp); else if (r == num || w == num) putc('|', fp); putc('\n', fp); }
int AlternatingListItem::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { typedef bb::cascades::CustomControl QMocSuperClass; _id = QMocSuperClass::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 4) qt_static_metacall(this, _c, _id, _a); _id -= 4; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QString*>(_v) = colour_code(); break; case 1: *reinterpret_cast< QString*>(_v) = description(); break; case 2: *reinterpret_cast< QString*>(_v) = itemLabel(); break; case 3: *reinterpret_cast< int*>(_v) = ordinal(); break; } _id -= 4; } else if (_c == QMetaObject::WriteProperty) { _id -= 4; } else if (_c == QMetaObject::ResetProperty) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 4; } #endif // QT_NO_PROPERTIES return _id; }