diff options
Diffstat (limited to 'src/Hill.cxx')
-rw-r--r-- | src/Hill.cxx | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/Hill.cxx b/src/Hill.cxx index 08d834f..4057524 100644 --- a/src/Hill.cxx +++ b/src/Hill.cxx @@ -1,5 +1,5 @@ // -// "$Id: Hill.cxx,v 1.16 2005/06/22 19:47:20 hofmann Exp $" +// "$Id: Hill.cxx,v 1.17 2005/06/22 20:40:35 hofmann Exp $" // // Hill routines. // @@ -67,6 +67,16 @@ Hills::Hills() { deg2rad = pi_d / 180.0; } +Hills::Hills(const Hills *h) { + num = h->num; + cap = h->cap; + m = (Hill **) malloc(cap * sizeof(Hill *)); + memcpy(m, h->m, cap * sizeof(Hill *)); + + pi_d = asin(1.0) * 2.0; + deg2rad = pi_d / 180.0; +} + int Hills::load(const char *file) { FILE *fp; @@ -184,6 +194,18 @@ comp_mountains_phi(const void *n1, const void *n2) { } } +static int +comp_mountains_name(const void *n1, const void *n2) { + Hill *m1 = *(Hill **)n1; + Hill *m2 = *(Hill **)n2; + + if (m1 && m2) { + return strcmp(m1->name, m2->name); + } else { + return 0; + } +} + void Hills::sort() { if (!m) { @@ -203,6 +225,15 @@ Hills::sort_phi() { } void +Hills::sort_name() { + if (!m) { + return; + } + + qsort(m, num, sizeof(Hill *), comp_mountains_name); +} + +void Hills::clear() { if (m) { free(m); |