| Top |
| CafeWeatherLocation * | cafeweather_location_new_world () |
| CafeWeatherLocation * | cafeweather_location_ref () |
| void | cafeweather_location_unref () |
| const char * | cafeweather_location_get_name () |
| const char * | cafeweather_location_get_sort_name () |
| CafeWeatherLocationLevel | cafeweather_location_get_level () |
| CafeWeatherLocation * | cafeweather_location_get_parent () |
| CafeWeatherLocation ** | cafeweather_location_get_children () |
| void | cafeweather_location_free_children () |
| gboolean | cafeweather_location_has_coords () |
| void | cafeweather_location_get_coords () |
| double | cafeweather_location_get_distance () |
| const char * | cafeweather_location_get_country () |
| CafeWeatherTimezone * | cafeweather_location_get_timezone () |
| CafeWeatherTimezone ** | cafeweather_location_get_timezones () |
| void | cafeweather_location_free_timezones () |
| const char * | cafeweather_location_get_code () |
| char * | cafeweather_location_get_city_name () |
| WeatherInfo * | cafeweather_location_get_weather () |
A CafeWeatherLocation represents a "location" of some type known to libcafeweather; anything from a single weather station to the entire world. See CafeWeatherLocationLevel for information about how the hierarchy of locations works.
CafeWeatherLocation *
cafeweather_location_new_world (gboolean use_regions);
Creates a new CafeWeatherLocation of type CAFEWEATHER_LOCATION_WORLD,
representing a hierarchy containing all of the locations from
Locations.xml.
If use_regions
is TRUE, the immediate children of the returned
location will be CAFEWEATHER_LOCATION_REGION nodes, representing the
top-level "regions" of Locations.xml (the continents and a few
other divisions), and the country-level nodes will be the children
of the regions. If use_regions
is FALSE, the regions will be
skipped, and the children of the returned location will be the
CAFEWEATHER_LOCATION_COUNTRY nodes.
a CAFEWEATHER_LOCATION_WORLD location, or
NULL if Locations.xml could not be found or could not be parsed.
[allow-none]
CafeWeatherLocation *
cafeweather_location_ref (CafeWeatherLocation *loc);
Adds 1 to loc
's reference count.
void
cafeweather_location_unref (CafeWeatherLocation *loc);
Subtracts 1 from loc
's reference count, and frees it if the
reference count reaches 0.
const char *
cafeweather_location_get_name (CafeWeatherLocation *loc);
Gets loc
's name, localized into the current language.
Note that CAFEWEATHER_LOCATION_WEATHER_STATION nodes are not
localized, and so the name returned for those nodes will always be
in English, and should therefore not be displayed to the user.
(FIXME: should we just not return a name?)
const char *
cafeweather_location_get_sort_name (CafeWeatherLocation *loc);
Gets loc
's "sort name", which is the name after having
g_utf8_normalize() (with G_NORMALIZE_ALL) and g_utf8_casefold()
called on it. You can use this to sort locations, or to comparing
user input against a location name.
CafeWeatherLocationLevel
cafeweather_location_get_level (CafeWeatherLocation *loc);
Gets loc
's level, from CAFEWEATHER_LOCATION_WORLD, to
CAFEWEATHER_LOCATION_WEATHER_STATION.
CafeWeatherLocation *
cafeweather_location_get_parent (CafeWeatherLocation *loc);
Gets loc
's parent location.
loc
's parent, or NULL
if loc
is a CAFEWEATHER_LOCATION_WORLD node.
[transfer none][allow-none]
CafeWeatherLocation **
cafeweather_location_get_children (CafeWeatherLocation *loc);
Gets an array of loc
's children; this is owned by loc
and will
not remain valid if loc
is freed.
void cafeweather_location_free_children (CafeWeatherLocation *loc,CafeWeatherLocation **children);
cafeweather_location_free_children is deprecated and should not be used in newly-written code.
This is a no-op.
This is a no-op. Do not use it.
gboolean
cafeweather_location_has_coords (CafeWeatherLocation *loc);
Checks if loc
has valid latitude and longitude.
void cafeweather_location_get_coords (CafeWeatherLocation *loc,double *latitude,double *longitude);
Gets loc
's coordinates; you must check
cafeweather_location_has_coords() before calling this.
double cafeweather_location_get_distance (CafeWeatherLocation *loc,CafeWeatherLocation *loc2);
Determines the distance in kilometers between loc
and loc2
.
const char *
cafeweather_location_get_country (CafeWeatherLocation *loc);
Gets the ISO 3166 country code of loc
(or NULL if loc
is a
region- or world-level location)
CafeWeatherTimezone *
cafeweather_location_get_timezone (CafeWeatherLocation *loc);
Gets the timezone associated with loc
, if known.
The timezone is owned either by loc
or by one of its parents.
FIXME.
CafeWeatherTimezone **
cafeweather_location_get_timezones (CafeWeatherLocation *loc);
Gets an array of all timezones associated with any location under
loc
. You can use cafeweather_location_free_timezones() to free this
array.
void cafeweather_location_free_timezones (CafeWeatherLocation *loc,CafeWeatherTimezone **zones);
Frees the array of timezones returned by
cafeweather_location_get_timezones().
const char *
cafeweather_location_get_code (CafeWeatherLocation *loc);
Gets the METAR station code associated with a
CAFEWEATHER_LOCATION_WEATHER_STATION location.
char *
cafeweather_location_get_city_name (CafeWeatherLocation *loc);
For a CAFEWEATHER_LOCATION_CITY location, this is equivalent to
cafeweather_location_get_name(). For a
CAFEWEATHER_LOCATION_WEATHER_STATION location, it is equivalent to
calling cafeweather_location_get_name() on the location's parent. For
other locations it will return NULL.
WeatherInfo *
cafeweather_location_get_weather (CafeWeatherLocation *loc);
Creates a WeatherInfo corresponding to loc
; you can use
weather_info_update() to fill it in.
The size/scope of a particular CafeWeatherLocation.
Locations form a hierarchy, with a CAFEWEATHER_LOCATION_WORLD
location at the top, divided into regions or countries, and so on.
Countries may or may not be divided into "adm1"s, and "adm1"s may
or may not be divided into "adm2"s. A city will have at least one,
and possibly several, weather stations inside it. Weather stations
will never appear outside of cities.
|
A location representing the entire world. |
||
|
A location representing a continent or other top-level region. |
||
|
A location representing a "country" (or other geographic unit that has an ISO-3166 country code) |
||
|
A location representing a "first-level administrative division"; ie, a state, province, or similar division. |
||
|
A location representing a subdivision of a
|
||
|
A location representing a city |
||
|
A location representing a weather station. |