MAJOR_VERSION = 1
MINOR_VERSION = 1
-PATCH_LEVEL = 15
+PATCH_LEVEL = 16
# use to send patches, always empty for released version:
MY_PATCH_LEVEL = # include separator: "-1" or ".a"
#
-pl 1.1.15
+version 1.1:
+
+pl 16
+ - Array::get()
+ - P< > doco.
+
+pl 15
- #ifndef fixes (MB)
- Dstream::clear ()
-pl 1.1.14
+pl 14
- interval methods
-pl 1.1.13
+pl 13
- better test-bed
- Heap PQueue implementation
-pl 1.1.12
+pl 12
- No path search for "" and "-"
-pl 1.1.11
+pl 11
- template<> class P
- assoc elem() methods
-pl 1.1.10
+pl 10
- Matrix_storage naming
- Matrix_storage::try_right_multiply to help speed up
matrix multiply routines.
-pl 1.1.9
+pl 9
- _C iso _c_l
- flower-debug.
-pl 1.1.8
+pl 8
-pl 1.1.7
+pl 7
- PQueue blondification.
- String_convert::i2hex_str fix, unsigned eqvs introduced
- long long depreciated, now named I64
- type I32 introduced. should be used iso int where 32 bits are
needed(or, brr, assumed...)
-pl 1.1.6-2
+pl 6-2
Bugfix
- silly String( int... ) -> String( (char)... ) fix
really should junk ambiguous constructor overload
-pl 1.1.6-1
+pl 6-1
Bugfix
- small but nasty include/fversion.hh fixed
-pl 1.1.6
- - all of 1.1.4-1 and 1.1.5
+pl 6
+ - all of 4-1 and 5
Bugfix
- null_terminated -> is_binary test
-pl 1.1.5
+pl 5
- memmem interface, conditional compilation
- snprintf
-pl 1.1.4-1
+pl 4-1
- included in new make structure, as a library of lilypond;
for compiling you-ll need ../make and ../bin dirs from
lilypond...
-pl 1.1.4
+pl 4
- great file-renaming.
- String cleanup (binary <-> null terminate), several bugfixes
- great renaming of String and String_convert interfaces
- String indexing now all base = 0, not found = -1
- renamed by to byte
-pl 1.1.3
+pl 3
- String::mid
- memmove test code
-pl 1.1.2
+pl 2
- StringConversio::bin2int_i
- dumb prioq
-pl 1.1.1
+pl 1
- separated StringHandle and StringData
- String::compare
-1.1.0:
+0:
------------------
bool feasible(Line_of_cols)const;
virtual Array<Col_hpositions> solve()=0;
+
+ /** generate a solution with no regard to idealspacings or
+ constraints. should always work */
+ Col_hpositions stupid_solution(Line_of_cols) const;
};
/// wordwrap type algorithm: move to next line if current is optimal.
// try to solve
if (!feasible(current.cols)) {
- if (!minimum.cols.size())
- error("sorry, this measure is too long, breakpoint: "
- + String(break_idx_i) );
- current.energy = INFTY; // make sure we go back
+ if (!minimum.cols.size()) {
+ warning("Ugh, this measure is too long, breakpoint: "
+ + String(break_idx_i) +
+ " (generating stupido solution)");
+ current = stupid_solution(current.cols);
+ current.energy = - 1; // make sure we break out.
+ } else
+ current.energy = INFTY; // make sure we go back
} else {
current = solve_line(current.cols);
current.print();
}
// update minimum, or backup.
- if (current.energy < minimum.energy) {
+ if (current.energy < minimum.energy || current.energy < 0) {
minimum = current;
} else { // we're one col too far.
break_idx_i--;