Corrected pointer warnings.

This commit is contained in:
gyboth 2008-12-07 11:28:18 +00:00
parent f70f2d54e6
commit 50d4794c87
9 changed files with 100 additions and 10 deletions

View File

@ -1028,3 +1028,26 @@ league_add_table(League *league)
g_array_append_val(league->tables, new_table);
}
gboolean
query_league_cup_has_property(gint clid, const gchar *property)
{
const GPtrArray *properties = league_cup_get_properties(clid);
return query_misc_string_in_array(property, properties);
}
GPtrArray*
league_cup_get_teams(gint clid)
{
return (clid < ID_CUP_START) ?
(GPtrArray*)league_from_clid(clid)->teams :
cup_from_clid(clid)->teams;
}
GPtrArray*
league_cup_get_properties(gint clid)
{
return (clid < ID_CUP_START) ?
league_from_clid(clid)->properties :
cup_from_clid(clid)->properties;
}

View File

@ -31,14 +31,10 @@
#include "league_struct.h"
#include "fixture_struct.h"
#define league_cup_get_teams(clid) (clid < ID_CUP_START) ? ((gpointer)(league_from_clid(clid)->teams)) : ((gpointer)(cup_from_clid(clid)->teams))
#define league_cup_get_fixtures(clid) (clid < ID_CUP_START) ? (league_from_clid(clid)->fixtures) : (cup_from_clid(clid)->fixtures)
#define league_cup_get_name_string(clid) (clid < ID_CUP_START) ? league_from_clid(clid)->name : cup_from_clid(clid)->name
#define league_cup_get_yellow_red(clid) (clid < ID_CUP_START) ? (league_from_clid(clid)->yellow_red) : (cup_from_clid(clid)->yellow_red)
#define league_cup_get_properties(clid) (clid < ID_CUP_START) ? ((gpointer)(league_from_clid(clid)->properties)) : ((gpointer)(cup_from_clid(clid)->properties))
#define query_league_cup_has_property(clid, string) query_misc_string_in_array(string, (GArray*)league_cup_get_properties(clid))
#define league_table_cumul(league) (&g_array_index((league)->tables, Table, 0))
#define league_table(league) (&g_array_index((league)->tables, Table, league->tables->len - 1))
@ -149,4 +145,13 @@ league_check_new_tables(League *league);
void
league_add_table(League *league);
gboolean
query_league_cup_has_property(gint clid, const gchar *property);
GPtrArray*
league_cup_get_teams(gint clid);
GPtrArray*
league_cup_get_properties(gint clid);
#endif

View File

@ -300,7 +300,7 @@ misc_float_compare(gfloat first, gfloat second)
/** Check whether the string is in the string array. */
gboolean
query_misc_string_in_array(const gchar *string, GPtrArray *array)
query_misc_string_in_array(const gchar *string, const GPtrArray *array)
{
gint i;

View File

@ -59,7 +59,7 @@ gint
misc_float_compare(gfloat first, gfloat second);
gboolean
query_misc_string_in_array(const gchar *string, GPtrArray *array);
query_misc_string_in_array(const gchar *string, const GPtrArray *array);
gboolean
query_misc_integer_is_in_g_array(gint item, GArray *array);

View File

@ -105,7 +105,7 @@ news_select(const GArray *news_array, gchar *title, gchar *subtitle,
const NewsArticle *article;
gint order_articles[news_array->len];
math_generate_permutation(order_articles, 0, news_array->len - 1);
news_articles_get_order(news_array, order_articles);
*title_id = *subtitle_id = -1;
@ -192,8 +192,8 @@ news_check_for_repetition(gint id, gboolean is_title)
/** Write a random order of indices into the integer array
(only depending on the priority values of the commentaries).
I don't like this implementation of ordering the commentaries
(only depending on the priority values of the news titles).
I don't like this implementation of ordering the titles
according to their priority :-P can't think of a better one, though. */
void
news_titles_get_order(const GArray *titles, gint *order)
@ -237,6 +237,52 @@ news_titles_get_order(const GArray *titles, gint *order)
}
}
/** Write a random order of indices into the integer array
(only depending on the priority values of the news articles).
I don't like this implementation of ordering the articles
according to their priority :-P can't think of a better one, though. */
void
news_articles_get_order(const GArray *articles, gint *order)
{
#ifdef DEBUG
printf("news_articles_get_order\n");
#endif
gint i, j, order_idx = 0;
gint priority_sum = 0, bounds[articles->len + 1];
bounds[0] = 0;
for(i=0;i<articles->len;i++)
{
priority_sum += g_array_index(articles, NewsArticle, i).priority;
bounds[i + 1] = priority_sum;
order[i] = -1;
}
gint permutation[priority_sum];
math_generate_permutation(permutation, 1, priority_sum);
for(i=0;i<priority_sum;i++)
{
if(order_idx == articles->len)
break;
for(j=0;j<articles->len;j++)
if(bounds[j] < permutation[i] && permutation[i] <= bounds[j + 1])
{
if(!query_integer_is_in_array(j, order, articles->len))
{
order[order_idx] = j;
order_idx++;
}
break;
}
}
}
/** Set match-related tokens for the news. */
void
news_set_match_tokens(const LiveGame *live_game)

View File

@ -73,4 +73,7 @@ news_set_fixture_tokens(const Fixture *fix);
void
news_set_rank_tokens(const Fixture *fix);
void
news_articles_get_order(const GArray *articles, gint *order);
#endif

View File

@ -66,6 +66,8 @@ typedef struct
/** A condition (if not fulfilled, the article doesn't get
shown). */
gchar *condition;
/** Priority of the article. */
gint priority;
} NewsArticle;

View File

@ -943,7 +943,7 @@ team_get_index(const Team *tm)
#endif
gint i;
gpointer *teams = league_cup_get_teams(tm->clid);
gpointer *teams = (gpointer*)league_cup_get_teams(tm->clid);
if(tm->clid < ID_CUP_START)
{

View File

@ -34,6 +34,7 @@
#define TAG_ARTICLE "news_article"
#define TAG_ARTICLE_TYPE "type"
#define TAG_ARTICLE_CONDITION "condition"
#define TAG_ARTICLE_PRIORITY "priority"
#define TAG_ARTICLE_TITLE "title"
#define TAG_ARTICLE_SUBTITLE "subtitle"
@ -54,6 +55,7 @@ enum XmlNewsStates
STATE_ARTICLE,
STATE_ARTICLE_TYPE,
STATE_ARTICLE_CONDITION,
STATE_ARTICLE_PRIORITY,
STATE_ARTICLE_TITLE,
STATE_ARTICLE_SUBTITLE,
STATE_END
@ -124,11 +126,14 @@ xml_news_read_start_element (GMarkupParseContext *context,
new_article.titles = g_array_new(FALSE, FALSE, sizeof(NewsText));
new_article.subtitles = g_array_new(FALSE, FALSE, sizeof(NewsText));
new_article.condition = g_strdup("0");
new_article.priority = 1;
}
else if(strcmp(element_name, TAG_ARTICLE_TYPE) == 0)
state = STATE_ARTICLE_TYPE;
else if(strcmp(element_name, TAG_ARTICLE_CONDITION) == 0)
state = STATE_ARTICLE_CONDITION;
else if(strcmp(element_name, TAG_ARTICLE_PRIORITY) == 0)
state = STATE_ARTICLE_PRIORITY;
else if(strcmp(element_name, TAG_ARTICLE_TITLE) == 0)
{
state = STATE_ARTICLE_TITLE;
@ -190,6 +195,7 @@ xml_news_read_end_element (GMarkupParseContext *context,
state = STATE_NEWS;
else if(strcmp(element_name, TAG_ARTICLE_TYPE) == 0 ||
strcmp(element_name, TAG_ARTICLE_CONDITION) == 0 ||
strcmp(element_name, TAG_ARTICLE_PRIORITY) == 0 ||
strcmp(element_name, TAG_ARTICLE_TITLE) == 0 ||
strcmp(element_name, TAG_ARTICLE_SUBTITLE) == 0)
state = STATE_ARTICLE;
@ -216,16 +222,21 @@ xml_news_read_text (GMarkupParseContext *context,
#endif
gchar buf[text_len + 1];
gint int_value;
strncpy(buf, text, text_len);
buf[text_len] = '\0';
int_value = (gint)g_ascii_strtod(buf, NULL);
if(state == STATE_PAPER_NAME)
g_ptr_array_add(newspaper.names, g_strdup(buf));
else if(state == STATE_ARTICLE_TYPE)
article_idx = xml_news_article_type_to_int(buf);
else if(state == STATE_ARTICLE_CONDITION)
misc_string_assign(&new_article.condition, buf);
else if(state == STATE_ARTICLE_PRIORITY)
new_article.priority = int_value;
else if(state == STATE_ARTICLE_TITLE)
{
new_title.text = g_strdup(buf);