DELTA 16578 236924 222
SVN  ‘b’V  †3 €X ‹†F€Hfdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include "support.h"            ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__TIMER_H */
ENDREP
DELTA 15439 127 2204
SVN   t¥v!„' …g €[ J  ˜8†1¡ \ž| H €‚ B“ €#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include "support.h" /* bool */

\
    FUNC_init((TYPE_it *) (void****
  Iterator init functions cannot return NULL, so this dummy helper function
  can be used to return a "generic invalid iterator" that will just exit
  out of generic_iterate. Its size is just sizeof(struct iterator), so it
  will fit into any iterator's allocated stack memory.
*********/
struct iterator *invalid_iter_init(struct iterator *it);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* FC__ITERATOR_H */
ENDREP
DELTA 18308 93840 319
SVN  ææld …e ¸ à…c¬åe#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18382 375 4894
SVN  ƒ³@ƒ´F~ ‚ÿt €P ƒ‚ÿm® °Eƒ‚{output_h.write('''
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

'''
#ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18856 10217 817
SVN  ÓÓb …[ ¶ Í$…W¬Òxfdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 15911 7334 1854
SVN  ”7R! …i €M x†$Š †	‡R ‚G‘U€Jfdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include "registry.h"int lengthifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* FC__WORKLIST_H */
ENDREP
DELTA 18054 3681 177
SVN  ÈÈ|2 …g ¶ ¥n…c€P ›W¬¬Çifdef __cplusplus
extern "C" {
#endif /* __cplusplus */const struct packet_ruleset_effect *packet);
void recv_ruleset_effect_req(const ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18403 451 2121
SVN  ¡N¢7d …k ¸ ›G…i¬!¡-#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 17422 0 6349
SVN  ¶z¹eƒd …_ ¶ …2…[€‚7 !‹v± ©O€Ffdef __cplusplus
extern "C" {
#endif /* __cplusplus *//* A function type to generate a custom prefix for the log messages, e.g.
 * add the turn and/or time of the log message. */
typedef const char *(*log_prefix_fn)(void);

void log_init(const char *filename, enum log_level initial_level,
              log_callback_fn callback, log_prefix_fn prefix,
             log_prefix_fn log_set_prefix(log_prefix_fn prefixifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__LOG_H */
ENDREP
DELTA 15755 102645 8211
SVN  åVñ@&¬e …e €' ‚7† “ ‡cˆU eu€ƒz ‚S‘W€‚V „]–_… „ ›Q OŸr€- G  ƒA£6€D ƒw§ n¬€C s®+€v k¸m€Q `½o€‰p RÀ2€1 bÁ> nÂl€) pÄt€‚M „ÆX€ƒ# ‚pÌW† ‚ÏK€ ‰_Òt€‹Q 0â3 Tãh¬å9fdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* utility */
#include "bitvector.h"

/* common */
#include "city.h"
#include "connection.h"
#include "fc_typesstruct player_slot;#define SPECENUM_NAME player_status
/* 'normal' status */
#define SPECENUM_VALUE0      PSTATUS_NORMAL
/* set once the player is in the process of dying */
#define SPECENUM_VALUE1      PSTATUS_DYING
/* this player is winner in scenario game */
#define SPECENUM_VALUE2      PSTATUS_WINNER
/* has indicated willingness to surrender */
#define SPECENUM_VALUE3      PSTATUS_SURRENDER
/* keep this last */
#define SPECENUM_COUNT       PSTATUS_COUNT
#include "specenum_gen.h"

BV_DEFINE(bv_pstatus, PSTATUS_COUNT)units_built;      /* Number of units this player produced. */
  int units_killed;     /* Number of enemy units killed. */
  int units_lost;       /* Number of own units that died,
                         * by combat or otherwise. */
  int game;             /* Total score you get in player dialog. */
};

struct player_ai {
  int maxbuycost;_SLOT  /* until pact (e.g., cease-fire) ends */
  int has_reason_to_cancel; /* 0: no, 1: this turn, 2: this or next turn */
  int contact_turns_left; /* until contact ends */
};

ai_type;
struct ai_data;

struct player {
  struct player_slot *slotv_player real_embassy;
  const struct player_diplstate **diplstates
  bool ai_controlled; /* 0: not automated; 1: automated */
  struct player_ai ai_common;
  const struct ai_type *ai;
bv_player gives_shared_vision;       /* bitvector those that give you
                                        * shared vision */
  int wonders[B_LAST];              /* contains city id's or WONDER_NOT_BUILT */
  struct dbv tile_known;

  union {
    struct {
      /* Only used in the server (./ai/ and ./server/). */
      bv_pstatus status;

      bool capital; /* used to give player init_buildings in first city. */

      struct player_tile *private_map;

      bv_player really_gives_vision; /* takes into account that p3 may see
                                      * what p1 has via p2 */

      bv_debug debug;

      struct ai_data *aidata;
    } server;

    struct {
      /* Only used at the client (the server is omniscient; ./client/). */

      /* Corresponds to the result of
         (player:server:private_map[tile_index]:seen_count[vlayer] != 0). */
      struct dbv tile_vision[V_COUNT];
    } client;
  };
};

/* Initialization and iteration */
void player_slots_init(void);
bool player_slots_initialised(void);
void player_slots_free(void);

struct player_slot *player_slot_first(void);
struct player_slot *player_slot_next(struct player_slot *pslot);

/* A player slot contains a possibly uninitialized player. */
int player_slot_count(void);
int player_slot_index(const struct player_slot *pslot);
struct player *player_slot_get_player(const struct player_slot *pslot);
bool player_slot_is_used(const struct player_slot *pslot);
struct player_slotstruct player *player_new(struct player_slot *pslot);
void player_clear(struct player *pplayer, bool full);
void player_destroy(struct player *pplayer);

int player_count(void);struct player *player_by_name(const char *name);
struct player *player_by_name_prefix(const char *name,
                                     enum m_pre_result *result);
struct player *
bool player_has_embassy(const struct player *pplayer,
                        const struct player *pplayer2);
bool player_has_real_embassy(const struct player *pplayer,
                             const struct player *pplayer2);
bool player_has_embassy_from_effect(const struct player *pplayer,
                                    bool player_can_invade_tile(const struct player *pplayer,
                            const struct tile *ptile);

struct city *player_city_by_number(const struct player *pplayer,
                                   int city_id);
struct unit *player_unit_by_number(const struct player *pplayer,
                                    int unit_id);

bool player_in_city_map(const struct player *pplayer,
                     playerstruct player_diplstate *player_diplstate_get(const struct player *plr1,
                                              const struct player *pl/* iterate over all player slots */
#define player_slots_iterate(_pslot)                                        \
  if (player_slots_initialised()) {                                         \
    struct player_slot *_pslot = player_slot_first();                       \
    for (; NULL != _pslot; _pslot = player_slot_next(_pslot)) {
#define player_slots_iterate_end                                            \
    }                                                                       \
  }

/* iterate over all players, which are used at the moment */
#define players_iterate(_pplayer)                                           \
  player_slots_iterate(_pslot) {                                            \
    if (!player_slot_is_used(_pslot)) {                                     \
      continue;                                                             \
    }                                                                       \
    struct player *_pplayer = player_slot_get_player(_pslot);
#define players_iterate_end                                                 \
  } player_slots_iterate_end;

/* get 'struct player_list' and related functions: */
#define SPECLIST_TAG player
#define SPECLIST_TYPE struct player
#include "speclist.h"

#define player_list_iterate(playerlist, pplayer)                            \
  TYPED_LIST_ITERATE(struct player, playerlist, pplayer)
#define player_list_iterate_end                                             \
  LIST_ITERATE_ENDifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 17107 26928 1584
SVN  œ¥'iq …i ¸ ,…g€‚- Š€[ S•~ y–r€ U•|€y ^”?€ #‘;€‚ V•{€y ^”? lZ§ a•{€‚& j”?€[ `•|„ –f€L |•|€‚&›v#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */rulename   _private_rulename_
#define translated _private_translated_

/* Ruleset strings (such as names) are kept in their original vernacular
 * as well as being translated to the current locale. */
struct name_translation {
  const char *translated;               /* String doesn't need freeing. */  char rulename[MAX_LEN_NAME];          /* Name used in savefiles etc.
                                           Often the same as 'vernacular'. */
};

/* Inititalization macro. */
#define NAME_INIT { NULL, "\0", "\0" Initializes avoid name_init(struct name_translation *ptrans)
{
  ptrans->vernacular[0] = ptrans->rulename[0] = '\0';
  ptrans->translated = NULLSet the untranslated and rule names of the name translation structure.
  If rule_name is NULL, use vernacular_name for itvoid names_set(struct name_translation *ptrans,
                             const char *vernacular_name,
                             const char *rule  (void) sz_loud_strlcpy(ptrans->rulename,
                         rule_name ? rule_name : Qn_(vernacular_name),
                         name_too_long);
  /* Translate now. */
  ptrans->translated =
    ('\0' == ptrans->vernacular[0]
     ? ptrans->vernacular : Q_(ptrans->vernacular)Set the untranslated name of the name translation structure.
  Assumes the rule name should be the same as the vernacularnames_set(ptrans, vernacular_name, NULLuntranslated (vernacular) name of the name translation
  structure.
  Rarely used; you usually want name_translation() or rule_name().
  Note that this does not discard any translation qualifiers! -- if this
  string is to be displayed to the user (unlikely), the caller must call
  Qn_() on it
    untranslated_name(const struct name_translation *ptrans)
{
  return ptrans->vernacularrulerule_name(const struct name_translation *ptrans)
{
  return ptrans->rulename    name_translation(const struct name_translation *ptrans)
{
  return ptrans->translated;
}

/* Don't allow other modules to access directly to the fields. */
#undef vernacular
#undef rulename
#undef translated

#ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18471 2788 3641
SVN  Ø:ÙW‚ …m ¶ œ+…i— œ¢€ ™¿€Mfdef __cplusplus
extern "C" {
#endif /* __cplusplus */  char *closing_reason;onn);
void connections_set_close_callback(conn_close_fn_t func);
void connection_close(struct connection *pconn, const char *reasonifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__CONNECTION_H */
ENDREP
DELTA 15405 1146 656
SVN  †sˆ[‚t …g €‚tfdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include "fc_types.h"

bool is_border_source(struct tile *ptile);
int tile_border_source_radius_sq(struct tile *ptile);
int tile_border_source_strength(struct tile *ptile);
int tile_border_strength(struct tile *ptile, struct tile *source);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__BORDERS_H */
ENDREP
DELTA 16929 191762 112
SVN  £,¤C‚ r ´ l€" ƒ8Ÿt¯fdef __cplusplus
extern "C" {
#endif /* __cplusplus                                                 SPECVEC_TYPE const pfoo)
{
  SPECVEC_FOO(_vector_reserve) (tthis, tthis->size + 1);
  tthis->p[tthis->size - 1] = 
#ifdef __cplusplus
}
#endif /* __cplusplus */
ENDREP
DELTA 13949 40825 3259
SVN  ¨`¨5)‰r …e ¶ ”…a€‚	 C™y€q œF€C t ¯ ¡A€„Pfdef __cplusplus
extern "C" {
#endif /* __cplusplus */#define vision_layer_iterate(v) {                                           \
  enum vision_layer v;                                                      \
  for (v = 0; v < V_COUNT; v++) {
#define vision_layer_iterate_end }}


typedef short int v_radius_t[V_COUNT]v_radius_t radius_sq;
};

/* Initialize a vision radius array. */
#define V_RADIUS(main_sq, invis_sq) { (main_sq), (invis_sq) }

#define ASSERT_VISION(v)						\
 do {									\
   fc_assert((v)->radius_sq[V_MAIN] >= (v)->radius_sq[V_INVIS]);bool vision_reveal_tiles(struct vision *vision, bool reveal_tiles);struct vision_site {
  char name[MAX_LEN_NAME]; > IDENTITY_NUMBER_ZERO */
  int size;				/* city size */

  bool occupied;
  bool walls;
  bool happy;
  bool unhappy;

  bv_imprs improvements;
};

#define vision_owner(v) ((v)->owner)
void free_vision_site(struct vision_site *psite);
struct vision_site *create_vision_site(int identity, struct tile *location,
				       struct player *owner);
struct vision_site *create_vision_site_from_city(const struct city *pcity);
void update_vision_site_from_city(struct vision_site *psite,
				  const struct city *pcity);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__VISION_H */
ENDREP
DELTA 18856 1074 36
SVN  ¤v¥_} …a ¶ Ÿ…]€Gfdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__GAME_H */
ENDREP
DELTA 18562 2421 83
SVN  ˜ ˜i …f ¶ ’…b€Kfdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__UNITLIST_H */
ENDREP
DELTA 17927 7515 1536
SVN  ,¢g…U …j ¶ ‚M…f€„S ”[ˆ4€Lfdef __cplusplus
extern "C" {
#endif /* __cplusplus */Dynamic bitvectors */
struct dbv {
  int bits;
  unsigned char *vec;
};

void dbv_init(struct dbv *pdbv, int bits);
void dbv_resize(struct dbv *pdbv, int bits);
void dbv_free(struct dbv *pdbv);

int dbv_bits(struct dbv *pdbv);

bool dbv_isset(const struct dbv *pdbv, int bit);
bool dbv_isset_any(const struct dbv *pdbv);

void dbv_set(struct dbv *pdbv, int bit);
void dbv_set_all(struct dbv *pdbv);

void dbv_clr(struct dbv *pdbv, int bit);
void dbv_clr_all(struct dbv *pdbv);

bool dbv_are_equal(const struct dbv *pdbv1, const struct dbv *pdbv2);

void dbv_debug(struct dbv *pdbv);

/* Static bifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__BITVECTOR_H */
ENDREP
DELTA 17556 333 5531
SVN  ªZÃvh  …_ € „,†€‡I ‚wŠE€ uŽ.µ ; @‘s Š”g€‡ G €ˆ] G €„4 ¬¡,º ÁKÍH° ‚‘+ ƒ7“B‚ †–z€C 1¬ª@fdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include <math.h> /* sqrt */

/* utility */
#include "bitvector.h"
#include "iterator.h"/* Some types used below. */
struct nation_hash;
struct nation_type;
struct packet_edit_startpos_full;
struct startpos;
struct startpos_hash;

enum mapsize_type {
  MAPSIZE_FULLSIZE = 0, /* Using the number of tiles / 1000. */
  MAPSIZE_PLAYER,       /* Define the number of (land) tiles per player;
                         * the setting 'landmass' and the number of players
                         * are used to calculate the map size. */
  MAPSIZE_XYSIZE        /* 'xsize' and 'ysize' are defined. */
};

enum map_generator {
  MAPGEN_SCENARIO = 0,
  MAPGEN_RANDOM,
  MAPGEN_FRACTAL,
  MAPGEN_ISLAND
};

enum map_startpos {
  MAPSTARTPOS_DEFAULT = 0,      /* Generator's choice. */
  MAPSTARTPOS_SINGLE,           /* One player per continent. */
  MAPSTARTPOS_2or3,             /* Two on three players per continent. */
  MAPSTARTPOS_ALL,              /* All players on a single continent. */
  MAPSTARTPOS_VARIABLE,         /* Depending on size of continents. */
}startpos_hash *startpos_table;

  union {
    struct {
      /* Nothing yet. */
    } client;

    struct {
      enum mapsize_typeenum map_generator generator;
      enum map_startpos
/* Specific functions for start positions. */
struct startpos *map_startpos_by_number(int id);
int startpos_number(const struct startpos *psp);

bool startpos_allow(struct startpos *psp, struct nation_type *pnation);
bool startpos_disallow(struct startpos *psp, struct nation_type *pnation);

struct tile *startpos_tile(const struct startpos *psp);
bool startpos_nation_allowed(const struct startpos *psp,
                             const struct nation_type *pnation);
bool startpos_allows_all(const struct startpos *psp);

bool startpos_pack(const struct startpos *psp,
                   struct packet_edit_startpos_full *packet);
bool startpos_unpack(struct startpos *psp,
                     const struct packet_edit_startpos_full *packet);

/* See comment in "common/map.c". */
bool startpos_is_excluding(const struct startpos *psp);
const struct nation_hash *startpos_raw_nations(const struct startpos *psp);

******
  Iterate over all nations at the start position for which the function
  startpos_nation_allowed() would return TRUE. This automatically takes into
  account the value of startpos_is_excluding() and startpos_allows_all() to
  iterate over the correct set of nations.
****************************************************************************/
struct startpos_iter;
size_t startpos_iter_sizeof(void);
struct iterator *startpos_iter_init(struct startpos_iter *it,
                                    const struct startpos *psp);
#define startpos_nations_iterate(ARG_psp, NAME_pnation)                     \
  generic_iterate(struct startpos_iter, const struct nation_type *,         \
                  NAME_pnation, startpos_iter_sizeof,                       \
                  startpos_iter_init, (ARG_psp))
#define startpos_nations_iterate_end generic_iterate_end


/* General map start positions functions. */
int map_startpos_count(void);
struct startpos *map_startpos_new(struct tile *ptile);
struct startpos *map_startpos_get(const struct tile *ptile);
bool map_startpos_remove(struct tile *ptile);

******
  Iterate over all start positions placed on the map.
****************************************************************************/
struct map_startpos_iter;
size_t map_startpos_iter_sizeof(void);
struct iterator *map_startpos_iter_init(struct map_startpos_iter *iter);

#define map_startpos_iterate(NAME_psp)                                      \
  generic_iterate(struct map_startpos_iter, struct startpos *,              \
                  NAME_psp, map_startpos_iter_sizeof, map_startpos_iter_init)
#define map_startpos_iterate_end generic_iterate_end#define map_size_checked()  MAX(map_num_tiles() / 1000, 1)#define MAP_DEFAULT_MAPSIZE     MAPSIZE_FULLSIZE016MAPGEN_RANDOM

#define MAP_DEFAULT_STARTPOS     MAPSTARTPOS_DEFAULTifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 5979 5416 739
SVN  ˆ‰g …V €W W…u€fdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include "shared.h"

typedef inq, pq_data_t *dest);
bool pq_peek(struct pqueue *q, pq_data_t *dest);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* FC__PQUEUE_H */
ENDREP
DELTA 9977 1026 66
SVN  ¨8©,# …k €X ¢…~€Kfdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include "support.h"            ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* FC__SPACESHIP_H */
ENDREP
DELTA 18623 35455 175
SVN  ñ[òDb …e ¶ ë`…a¬ñ>fdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 17506 314 3698
SVN  ¥E¥ob …i ¶ œ]…e ‚$£¬#¥"fdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 17080 0 3595
SVN  £<§@K‰	 …e º G  ‹†,€‚& `‘'€| v“ €  ‚_”+ƒ ‚—€Y ™v€ ›~‚ ‚‚ ŸŸ  C€‚#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* __attribute__((warn_unused_result)) requires at least gcc 3.4 */
#if defined(__GNUC__)
#if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
#define fc__warn_unused_result  __attribute__((warn_unused_result))
#endif
#endif
#ifndef fc__warn_unused_result
#define fc__warn_unused_resultfc_strcasecmp(const char *str0, const char *str1);
int fc_strncasecmp(const char *str0, const char *str1, size_t n);
int fc_fc_strcasestr(const char *haystack, const char *needle);

int fc_strcoll(const char *str0, const char *str1);
int fc_stricoll(const char *str0, const char *str1fc_warn_unused_result;

size_t fc_strlcpy(char *dest, const char *src, size_t n);
size_t fc_ fc_strlcpy((dest), (src), sizeof(dest)))
#define sz_strlcat(dest,src) ((void) fc_strlcat((dest), (src), sizeof(dest)))

int fcfcfcfc_init_console(void);
char *fcfc_isalnum(char c);
bool fc_isalpha(char c);
bool fc_isdigit(char c);
bool fc_isprint(char c);
bool fc_isspace(char c);
bool fc_isupper(char c);
char fc_toupper(char c);
char fc_tolower(char c);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__SUPPORT_H */
ENDREP
DELTA 18452 69355 6140
SVN  Ç_É6 …c ¸ µp…aµ Œ»7€I#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */untranslated_name(const struct nation_group *pgroup);ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__NATION_H */
ENDREP
DELTA 8119 4108 51
SVN  ŠP‹9f …_ º G  „†&¬Š5#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 14576 0 652
SVN  *z …j ± ‰/…a€I__cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__FCINTL_H */
ENDREP
DELTA 18038 167 954
SVN   -¨VˆC …e ¸ š.…c€ˆ#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus *//* Utilities to exchange strings and string vectors. */
#define PACKET_STRVEC_SEPARATOR '\3'
#define PACKET_STRVEC_COMPUTE(str, strvec)                                  \
  if (NULL != strvec) {                                                     \
    strvec_to_str(strvec, PACKET_STRVEC_SEPARATOR, str, sizeof(str));       \
  } else {                                                                  \
    str[0] = '\0';                                                          \
  }
#define PACKET_STRVEC_EXTRACT(strvec, str)                                  \
  if ('\0' != str[0]) {                                                     \
    strvec = strvec_new();                                                  \
    strvec_from_str(strvec, PACKET_STRVEC_SEPARATOR, str);                  \
  } else {                                                                  \
    strvec = NULL;                                                          \
  }

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__PACKETS_H */
ENDREP
DELTA 17839 169044 2079
SVN  š›d …` ¸ ”$…^¬™#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 10768 7477 2719
SVN  ¥*¦*% †} ¶ ž†y€ofdef __cplusplus
extern "C" {
#endif /* __cplusplus */
                   char output[DIGEST_HEX_BYTES + 1]);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif
ENDREP
DELTA 18326 9161 1380
SVN  ””|d …^ ¸ Ž…\¬ “s#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18462 5774 813
SVN  •#–b …s ¶ …o¬#• fdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18100 833 1227
SVN  ¸¹F#‚* …m ¸ –d…k¾ e¯ ‚«5 ‚­Kµ ˆQ°€P#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */improvement_by_rule_name(const char *name);
struct impr_type *city_from_wonder(const struct player *pplayer,
city_from_small_wonder(const struct player *pplayer,

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__IMPROVEMENT_H */
ENDREP
DELTA 17932 2237 942
SVN  ŠP‹9b …p ¶ „D…l¬#Š-fdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18447 2128 3334
SVN  ÑeÓr‚ ³x µ r³s€S#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus
/* This is after #endif FC__SPECHASH_H on purpose.
   extern "C" portion begins well before latter part of the header
   is guarded against multiple inclusions. */
#ifdef __cplusplus
}
#endif /* __cplusplus */
ENDREP
DELTA 18308 39652 3536
SVN  ¢=¥\‰M …_ ¸ 4…]€ˆM dŒ7 šQ †œ"€H#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */#define SPECENUM_NAME base_gui_type
#define SPECENUM_VALUE0 BASE_GUI_FORTRESS
#define SPECENUM_VALUE0NAME "Fortress"
#define SPECENUM_VALUE1 BASE_GUI_AIRBASE
#define SPECENUM_VALUE1NAME "Airbase"
#define SPECENUM_VALUE2 BASE_GUI_OTHER
#define SPECENUM_VALUE2NAME "Other"
#include "specenum_gen.h"

#define SPECENUM_NAME base_flag_id
/* Unit inside are not considered aggressive if base is close to city */
#define SPECENUM_VALUE0 BF_NOT_AGGRESSIVE
#define SPECENUM_VALUE0NAME "NoAggressive"
/* Units inside will not die all at once */
#define SPECENUM_VALUE1 BF_NO_STACK_DEATH
#define SPECENUM_VALUE1NAME "NoStackDeath"
/* Base provides bonus for defending diplomat */
#define SPECENUM_VALUE2 BF_DIPLOMAT_DEFENSE
#define SPECENUM_VALUE2NAME "DiplomatDefense"
/* Paratroopers can use base for paradrop */
#define SPECENUM_VALUE3 BF_PARADROP_FROM
#define SPECENUM_VALUE3NAME "ParadropFrom"
/* Makes tile native terrain for units */
#define SPECENUM_VALUE4 BF_NATIVE_TILE
#define SPECENUM_VALUE4NAME "NativeTile"
#define SPECENUM_COUNT BF_COUNT
#include "specenum_gen.h"

BV_DEFINE(bv_base_flags, BF_COUN#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__BASE_H */
ENDREP
DELTA 18846 673 689
SVN  åaæJ …_ ¸ ßl…]€G#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__UNIT_H */
ENDREP
DELTA 18052 0 2784
SVN  ô0÷OD„t …g ¸ ~…e€ Á†a‡ ‚JÇz¢ ‚;Ê> ‚dÌ}¼ †Ð'¹ ]×€m ƒUØ[€F ƒÜ\ ”"ßr€K#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */struct astring;         /* Actually defined in "utility/astring.h". */
struct strvec;          /* Actually defined in "utility/string_vector.h". */convertint veteran_levels; /* server onlystruct strvecunit_type_by_rule_name(const char *name);
struct unit_type *unit_flag_by_rule_name(const char *s);
enum unit_role_id bool unit_can_take_over(const struct unit *punit);
bool utype_can_take_over(const struct unit_type *punittypebool role_units_translations(struct astring *astr, int flag, bool altsifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__UNITTYPE_H */
ENDREP
DELTA 1516 6714 1078
SVN  ^§4Kš	 †  ¦ d†/€„. ‰r€ŽB G  @…@€f G « @…@€ G ¼ @…@€` G ¹ @…@€j G ´ @…@€O@******
  Allocated/allocatable strings*****/

#ifndef FC__ASTRING_H
#define FC__ASTRING_H

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include <string.h>             /* strlen() */

/* utility */
#include "support.h"            /* bool, fc__attribute() */

/* Don't let others modules using the fields directly. */
#define str     _private_str_
#define n       _private_n_
#define n_alloc _private_n_alloc_

struct astring {
  char *str;                    /* the string */
  size_t n;                     /* size most recently requested */
  size_t n_alloc;               /* total For athing need to call ath_init() due to size. */
#define ASTRING_INIT { NULL, 0, 0 }

void astr_init(struct astring *astr) fc__attribute((nonnull (1)));
void astr_free(struct astring *astr) fc__attribute((nonnull (1)));

static inline const char *astr_str(const struct astring *astr)
                          fc__attribute((nonnull (1)));
static inline size_t astr_len(const struct astring *astr)
                     fc__attribute((nonnull (1)));
static inline size_t astr_size(const struct astring *astr)
                     fc__attribute((nonnull (1)));
static inline size_t astr_capacity(const struct astring *astr)
                     fc__attribute((nonnull (1)));
static inline bool astr_empty(const struct astring *astr)
                   fc__attribute((nonnull (1)));

void astr_reserve(struct astring *astr, size_t size)
     fc__attribute((nonnull (1)));
void astr_clear(struct astring *astr)
     fc__attribute((nonnull (1)));
void astr_set(struct astring *astr, const char *format, ...)
     fc__attribute((__format__(__printf__, 2, 3)))
     fc__attribute((nonnull (1, 2)));
void astr_add(struct astring *astr, const char *format, ...)
     fc__attribute((__format__(__printf__, 2, 3)))
     fc__attribute((nonnull (1, 2)));
void astr_add_line(struct astring *astr, const char *format, ...)
     fc__attribute((__format__(__printf__, 2, 3)))
     fc__attribute((nonnull (1, 2)));
void astr_break_lines(struct astring *astr, size_t desired_len)
     fc__attribute((nonnull (1)));
const char *astr_build_or_list(struct astring *astr,
                               const char *const *items, size_t number);
const char *astr_build_and_list(struct astring *astr,
                                const char *const *items, size_t number);
void astr_copy(struct astring *dest, const struct astring *src)
     fc__attribute((nonnull (1, 2)));



******
  Returns the string.
************/
static inline const char *astr_str(const struct astring *astr)
{
  return astr->str;
}

******
  Returns the lenght of the string.
************/
static inline size_t astr_len(const struct astring *astr)
{
  return (NULL != astr->str ? strlen(astr->str) : 0);
}

******
  Returns the current size requested for the string.
************/
static inline size_t astr_size(const struct astring *astr)
{
  return astr->n;
}

******
  Returns the real size requested for the string.
************/
static inline size_t astr_capacity(const struct astring *astr)
{
  return astr->n_alloc;
}

******
  Returns wether the string is empty or not.
************/
static inline bool astr_empty(const struct astring *astr)
{
  return (0 == astr->n || '\0' == astr->str[0]);
}

#undef str
#undef n
#undef n_alloc

#ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 16460 146583 17051
SVN  ŠE‚©:‚†A …i ¶ !…e€„y ›w‡ ¢ Nš{ a£g¢ Nš{ ¹¥8­ Aß€n a»y¡ eô?€d Aß€‚b a»y¥ eô?€	 H´=· Iµ?€‚# Mšw¶ Jµ>€3 Aß€y a»y› eô?€^ Aß€ƒ a»yŸ eô?€—: Aß€: a»yŸ eô?€Š Aß€k a»y™ eô?€Œ K•>¯ ”Þ7£ Hßx€) _½ €U Hßx€/ cô@€‹c eô?€ƒF eô?€‰b Hßx€‚ eô?€Z Hßx€‚ eô?€Œ@ ^å0­ Hßx€  a© €‚H I©@„ —dòE¬Š&fdef __cplusplus
extern "C" {
#endif /* __cplusplus */Typedefs. */
typedef const void *secfile_data_t;

typedef bool (*secfile_enum_is_valid_fn_t) (int enumerator);
typedef const char * (*secfile_enum_name_fn_t) (int enumerator);
typedef int (*secfile_enum_by_name_fn_t) (const char *enum_name,
                                          int (*strcmp_fn)(const char *,
                                                           const char *));
typedef int (*secfile_enum_iter_fn_t) (void);
typedef int (*secfile_enum_next_fn_t) (int enumerator);
typedef const char * (*secfile_enum_name_data_fn_t) (secfile_data_t data,
                                                     int enumerator)dim, comment, FALSE,        \
    dim, NULL, TRUE,            \
    struct entry *secfile_insert_plain_enum_full(          int enumerator,
                                             secfile_enum_name_fn_t name_fn,
              bool allow_replace,
            fc__attribute((__format__(__printf__, 6, 7)));
struct entry *secfile_insert_bitwise_enum_full(            int bitwise_val,
                                               secfile_enum_name_fn_t name_fn,
                                               secfile_enum_iter_fn_t begin_fn,
                                               secfile_enum_iter_fn_t end_fn,
                                               secfile_enum_next_fn_t next_fn,
                  bool allow_replace,
                fc__attribute((__format__(__printf__, 9, 10)));
#define secfile_insert_enum_full(secfile, enumerator, specenum_type,        \
                                 comment, allow_replace, path, ...)         \
(specenum_type##_is_bitwise()                                               \
 ? secfile_insert_bitwise_enum_full(secfile, enumerator,                    \
                                    (secfile_enum_name_fn_t)                \
                                    specenum_type##_name,                   \
                                    (secfile_enum_iter_fn_t)                \
                                    specenum_type##_begin,                  \
                                    (secfile_enum_iter_fn_t)                \
                                    specenum_type##_end,                    \
                                    (secfile_enum_next_fn_t)                \
                                    specenum_type##_next,                   \
                                    comment, allow_replace,                 \
                                    path, ## __VA_ARGS__)                   \
 : secfile_insert_plain_enum_full(secfile, enumerator,                      \
                                  (secfile_enum_name_fn_t)                  \
                                  specenum_type##_name,                     \
                                  comment, allow_replace,                   \
                                  path, ## __VA_ARGS__))
#define secfile_insert_enum(secfile, enumerator, specenum_type, path, ...)  \
  secfile_insert_enum_full(secfile, enumerator, specenum_type, NULL, FALSE, \
enum_comment(secfile, enumerator, specenum_type,     \
   \
  secfile_insert_enum_full(secfile, enumerator, specenum_type, comment,     \
                           FALSE, path, ## __VA_ARGS__)
#define secfile_replace_enum(secfile, enumerator, specenum_type, path, ...) \
  secfile_insert_enum_full(secfile, enumerator, specenum_type, NULL, TRUE,enum_comment(secfile, enumerator, specenum_type,    \
  \
  secfile_insert_enum_full(secfile, enumerator, specenum_type, comment,     \
                           TRUE, path, ## __VA_ARGS__)
size_t secfile_insert_plain_enum_vec_full(       const int *enumurators, size_t dim,
                                          secfile_enum_name_fn_t name_fn,
        bool allow_replace,
      fc__attribute((__format__(__printf__, 7, 8)));
size_t secfile_insert_bitwise_enum_vec_full(         const int *bitwise_vals,
                                            size_t dim,
                                            secfile_enum_name_fn_t name_fn,
                                            secfile_enum_iter_fn_t begin_fn,
                                            secfile_enum_iter_fn_t end_fn,
                                            secfile_enum_next_fn_t next_fn,
            bool allow_replace,
          fc__attribute((__format__(__printf__, 10, 11)));
#define secfile_insert_enum_vec_full(secfile, enumerators, dim,             \
                                     specenum_type, comment, allow_replace, \
                                     path, ...)                             \
(specenum_type##_is_bitwise()                                               \
 ? secfile_insert_bitwise_enum_vec_full(secfile, (const int *) enumerators, \
                                        dim,                                \
                                        (secfile_enum_name_fn_t)            \
                                        specenum_type##_name,               \
                                        (secfile_enum_iter_fn_t)            \
                                        specenum_type##_begin,              \
                                        (secfile_enum_iter_fn_t)            \
                                        specenum_type##_end,                \
                                        (secfile_enum_next_fn_t)            \
                                        specenum_type##_next,               \
                                        comment, allow_replace,             \
                                        path, ## __VA_ARGS__)               \
 : secfile_insert_plain_enum_vec_full(secfile, (const int *) enumerators,   \
                                      dim,                                  \
                                      (secfile_enum_name_fn_t)              \
                                      specenum_type##_name,                 \
                                      comment, allow_replace,               \
                                      path, ## __VA_ARGS__))
#define secfile_insert_enum_vec(secfile, enumerators, dim, specenum_type,   \
                                path, ...)                                  \
  secfile_insert_enum_vec_full(secfile, enumerators, dim, specenum_type,    \
                               NULL, FALSE, path, ## __VA_ARGS__)
#define secfile_insert_enum_vec_comment(secfile, enumerators, dim,          \
                                        specenum_type, comment, path, ...)  \
  secfile_insert_enum_vec_full(secfile, enumerators, dim, specenum_type,    \
                               comment, FALSE, path, ## __VA_ARGS__)
#define secfile_replace_enum_vec(secfile, enumerators, dim, specenum_type,  \
                                 path, ...)                                 \
  secfile_insert_enum_vec_full(secfile, enumerators, dim, specenum_type,    \
                               NULL, TRUE, path, ## __VA_ARGS__)
#define secfile_replace_enum_vec_comment(secfile, enumerators, dim,         \
                                         specenum_type, comment, path, ...) \
  secfile_insert_enum_vec_full(secfile, enumerators, dim, specenum_type,    \
                               comment, TRUE, path, ## __VA_ARGS__)

struct entry *secfile_insert_enum_data_full(         int value, bool bitwise,
                                            secfile_enum_name_data_fn_t name_fn,
                                            secfile_data_t data,
            bool allow_replace,
          fc__attribute((__format__(__printf__, 8, 9)));
#define secfile_insert_enum_data(secfile, value, bitwise, name_fn, data,    \
                                 path, ...)                                 \
  secfile_insert_enum_data_full(secfile, value, bitwise, name_fn, data,     \
                                NULL, FALSE, path, ## __VA_ARGS__)
#define secfile_insert_enum_data_comment(secfile, value, bitwise, name_fn,  \
                                         data, path, ...)                   \
  secfile_insert_enum_data_full(secfile, value, bitwise, name_fn, data,     \
                                comment, FALSE, path, ## __VA_ARGS__)
#define secfile_replace_enum_data(secfile, value, bitwise, name_fn, data,   \
                                  path, ...)                                \
  secfile_insert_enum_data_full(secfile, value, bitwise, name_fn, data,     \
                                NULL, TRUE, path, ## __VA_ARGS__)
#define secfile_replace_enum_data_comment(secfile, value, bitwise, name_fn, \
                                          data, path, ...)                  \
  secfile_insert_enum_data_full(secfile, value, bitwise, name_fn, data,     \
                                comment, TRUE, path, ## __VA_ARGS__)
size_t secfile_insert_enum_vec_data_full(      const int *values, size_t dim,
                                         bool bitwise,
                                         secfile_enum_name_data_fn_t name_fn,
                                         secfile_data_t data,
      bool allow_replace,
    fc__attribute((__format__(__printf__, 9, 10)));
#define secfile_insert_enum_vec_data(secfile, values, dim, bitwise,         \
                                     name_fn, data, path, ...)              \
  secfile_insert_enum_vec_data_full(secfile, values, dim, bitwise, name_fn, \
                                    data, NULL, FALSE, path, ## __VA_ARGS__)
#define secfile_insert_enum_vec_data_comment(secfile, values, dim, bitwise, \
                                             name_fn, data, path, ...)      \
  secfile_insert_enum_vec_data_full(secfile, values, dim, bitwise, name_fn, \
                                    data, comment, FALSE, path,             \
                                    ## __VA_ARGS__)
#define secfile_replace_enum_vec_data(secfile, values, dim, bitwise,        \
                                      name_fn, data, path, ...)             \
  secfile_insert_enum_vec_data_full(secfile, values, dim, bitwise, name_fn, \
                                    data, NULL, TRUE, path, ## __VA_ARGS__)
#define secfile_replace_enum_vec_data_comment(secfile, values, dim,         \
                                              bitwise, name_fn, data, path, \
                                              ...)                          \
  secfile_insert_enum_vec_data_full(secfile, values, dim, bitwise, name_fn, \
                                    data, comment, TRUE, path,              \
                                    ## __VA_ARGS__)

/* Deletion function. */
bool secfile_entry_delete(struct section_file *secfile,
fc__attribute((__format__ (__printf__, 2, 3)));bool secfile_lookup_plain_enum_full int *penumerator,
                                    secfile_enum_is_valid_fn_t is_valid_fn,
                                    secfile_enum_by_name_fn_t by_name_fn,
fc__attribute((__format__ (__printf__, 5, 6)));
bool secfile_lookup_bitwise_enum_full   int *penumerator,
                                      secfile_enum_is_valid_fn_t is_valid_fn,
                                      secfile_enum_by_name_fn_t by_name_fn,
fc__attribute((__format__ (__printf__, 5, 6)));
#define secfile_lookup_enum(secfile, enumerator, specenum_type, path, ...)  \
(specenum_type##_is_bitwise()                                               \
 ? secfile_lookup_bitwise_enum_full(secfile, FC_ENUM_PTR(enumerator),       \
                                    (secfile_enum_is_valid_fn_t)            \
                                    specenum_type##_is_valid,               \
                                    (secfile_enum_by_name_fn_t)             \
                                    specenum_type##_by_name,                \
                                    path, ## __VA_ARGS__)                   \
 : secfile_lookup_plain_enum_full(secfile, FC_ENUM_PTR(enumerator),         \
                                  (secfile_enum_is_valid_fn_t)              \
                                  specenum_type##_is_valid,                 \
                                  (secfile_enum_by_name_fn_t)               \
                                  specenum_type##_by_name,                  \
                                  path, ## __VA_ARGS__))
int secfile_lookup_plain_enum_default_full(const struct section_file
                                           *secfile, int defval,
                                           secfile_enum_is_valid_fn_t
                                           is_valid_fn,
                                           secfile_enum_by_name_fn_t
                                           by_name_fn,
        fc__attribute((__format__ (__printf__, 5, 6)));
int secfile_lookup_bitwise_enum_default_full(const struct section_file
                                             *secfile, int defval,
                                             secfile_enum_is_valid_fn_t
                                             is_valid_fn,
                                             secfile_enum_by_name_fn_t
                                             by_name_fn,
            fc__attribute((__format__ (__printf__, 5, 6)));
#define secfile_lookup_enum_default(secfile, defval, specenum_type,         \
                                    path, ...)                              \
(specenum_type##_is_bitwise()                                               \
 ? secfile_lookup_bitwise_enum_default_full(secfile, defval,                \
                                            (secfile_enum_is_valid_fn_t)    \
                                            specenum_type##_is_valid,       \
                                            (secfile_enum_by_name_fn_t)     \
                                            specenum_type##_by_name,        \
                                            path, ## __VA_ARGS__)           \
 : secfile_lookup_plain_enum_default_full(secfile, defval,                  \
                                          (secfile_enum_is_valid_fn_t)      \
                                          specenum_type##_is_valid,         \
                                          (secfile_enum_by_name_fn_t)       \
                                          specenum_type##_by_name,          \
                                          path, ## __VA_ARGS__))
int *secfile_lookup_plain_enum_vec_full     size_t *dim,
                                        secfile_enum_is_valid_fn_t
                                        is_valid_fn,
                                        secfile_enum_by_name_fn_t
                                        by_name_fn,
  fc__attribute((__format__ (__printf__, 5, 6)));
int *secfile_lookup_bitwise_enum_vec_full       size_t *dim,
                                          secfile_enum_is_valid_fn_t
                                          is_valid_fn,
                                          secfile_enum_by_name_fn_t
                                          by_name_fn,
      fc__attribute((__format__ (__printf__, 5, 6)));
#define secfile_lookup_enum_vec(secfile, dim, specenum_type,                \
                                path, ...)                                  \
(specenum_type##_is_bitwise()                                               \
 ? (enum specenum_type *)                                                   \
   secfile_lookup_bitwise_enum_vec_full(secfile, dim,                       \
                                        (secfile_enum_is_valid_fn_t)        \
                                        specenum_type##_is_valid,           \
                                        (secfile_enum_by_name_fn_t)         \
                                        specenum_type##_by_name,            \
                                        path, ## __VA_ARGS__)               \
 : (enum specenum_type *)                                                   \
   secfile_lookup_plain_enum_vec_full(secfile, dim,                         \
                                      (secfile_enum_is_valid_fn_t)          \
                                      specenum_type##_is_valid,             \
                                      (secfile_enum_by_name_fn_t)           \
                                      specenum_type##_by_name,              \
                                      path, ## __VA_ARGS__))

bool secfile_lookup_enum_data(const struct section_file *secfile,
                              int *pvalue, bool bitwise,
                              secfile_enum_name_data_fn_t name_fn,
                              secfile_data_t data6, 7)));
int secfile_lookup_enum_default_data  int defval, bool bitwise,
                                     secfile_enum_name_data_fn_t name_fn,
                                     secfile_data_t data,
fc__attribute((__format__ (__printf__, 6, 7)));
int *secfile_lookup_enum_vec_data(const struct section_file *secfile,
                                  size_t *dim, bool bitwise,
                                  secfile_enum_name_data_fn_t name_fn,
                                  secfile_data_t data, const char *path, ...)
6, 7ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18308 88584 5095
SVN  »3¼ …_ ¸ µ=…]€I#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__TECH_H */
ENDREP
DELTA 18062 8188 1405
SVN  ›Nœ7b …T ¶ •g…P¬›4fdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18339 9737 1979
SVN  ­u±ƒ0 …e º G  œ†,€‚, ‹"¢8€J#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

bool genhashs_are_equal(const struct genhash *pgenhash1,
                        const struct genhash *pgenhash2);
bool genhashs_are_equal_full(const struct genhash *pgenhash1,
                             const struct genhash *pgenhash2,
                             genhash_comp_fn_t data_comp_funcifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__GENHASH_H */
ENDREP
DELTA 17122 299392 1116
SVN  “I”'@ …` ¶ G…\’ ‡U‡,’  ’ R’ 
’€B“0fdef __cplusplus
extern "C" {
#endif /* __cplusplus */warn_unused_resultwarn_unused_resultwarn_unused_resultwarn_unused_resultwarn_unused_result;

#ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18054 4754 258
SVN  ‡0ˆ …n ¶ (…j€Mfdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__CAPABILITY_H */
ENDREP
DELTA 17793 408 5420
SVN  ¿(û2ƒR¼f …e €¯. ‚I>€‚= Y¡} ¢W€ G ž ^·>€2 G ³ ^·>€ W¤q€W G ˜ ^·>€j G  ^·>€‚ G €X ^·>€K l¨w€  l¨w€ \ªl© G ® ^·>€f G €K ^·> J³9ž G € ^·>… X´*€u yµj¦ ^·>€2 G ° ^·>€5 G €B ^·>€@ G ³ ^·>€‚E G ´ ^·>€‚H G €N v·>€' G €_ b·>€} G €P ^·>º Gº€H G €i b·>€‚0 G €S ^·>€I G ± ^·>€n G ° ^·>€l G º ^·>€v G · ^·>€0 G ± ^·>€ G ° ^·>€ G · ^·>€2 G ­ ^·>€ G ­ ^·>€ G €I ^·>€a G €R ^·>€‚7 G š ^·>¶ pº.€ G  ^·>€j G º ^·>€j G ¤ ^·>€/ G ¡ ^·>€‚! G  ^·>€‚ ¾'€Å* (A generalisation of previous city_list and unit_list stuff.)
 *
 * This file is used to implement a "specific" genlist.
 * That is, a (sometimes) type-checked genlist. (Or at least a
 * genlist with related functions with distinctly typed parameters.)
 * (Or, maybe, what you end up doing when you don't use C++ ?)
 * 
 * Before including this file, you must define the following:
 *   SPECLIST_TAG - this tag will be used to form names for functions etc.
 * You may also define:
 *   SPECLIST_TYPE - the typed genlist will contain pointers to this type;
 * If SPECLIST_TYPE is not defined, then 'struct SPECLIST_TAG' is used.
 * At the end of this file, these (and other defines) are undef-ed.
 *
 * Assuming SPECLIST_TAG were 'foo', and SPECLIST_TYPE were 'foo_t',
 * including this file would provide a struct definition for:
 *    struct foo_list;
 *    struct foo_list_link;
 *
 * function typedefs:
 *    typedef void (*foo_list_free_fn_t) (foo_t *);
 *    typedef foo_t * (*foo_list_copy_fn_t) (const foo_t *);
 *    typedef bool (*foo_list_comp_fn_t) (const foo_t *, const foo_t *);
 *    typedef bool (*foo_list_cond_fn_t) (const foo_t *);
 *
 * and prototypes for the following functions:
 *    struct foo_list *foo_list_new(void);
 *    struct foo_list *foo_list_new_full(foo_list_free_fn_t free_data_func);
 *    void foo_list_destroy(struct foo_list *plist);
 *    struct foo_list *foo_list_copy(const struct foolist *plist);
 *    struct foo_list *foo_list_copy_full(const struct foolist *plist,
 *                                        foo_list_copy_fn_t copy_data_func,
 *                                        foo_list_free_fn_t free_data_func);
 *    void foo_list_clear(struct foo_list *plist);
 *    void foo_list_unique(struct foo_list *plist);
 *    void foo_list_unique_full(struct foo_list *plist,
 *                              foo_list_comp_fn_t comp_data_func);
 *    void foo_list_append(struct foo_list *plist, foo_t *pfoo);
 *    void foo_list_prepend(struct foo_list *plist, foo_t *pfoo);
 *    void foo_list_insert(struct foo_list *plist, foo_t *pfoo, int idx);
 *    void foo_list_insert_after(struct foo_list *plist, foo_t *pfoo,
 *                               struct foo_list_link *plink);
 *    void foo_list_insert_before(struct foo_list *plist, foo_t *pfoo,
 *                                struct foo_list_link *plink);
 *    bool foo_list_remove(struct foo_list *plist, const foo_t *pfoo);
 *    bool foo_list_remove_if(struct foo_list *plist,
 *                            foo_list_cond_fn_t cond_data_func);
 *    int foo_list_remove_all(struct foo_list *plist, const foo_t *pfoo);
 *    int foo_list_remove_all_if(struct foo_list *plist,
 *                               foo_list_cond_fn_t cond_data_func);
 *    void foo_list_erase(struct foo_list *plist,
 *                        struct foo_list_link *plink);
 *    void foo_list_pop_front(struct foo_list *plist);
 *    void foo_list_pop_back(struct foo_list *plist);
 *    int foo_list_size(const struct foo_list *plist);
 *    foo_t *foo_list_get(const struct foo_list *plist, int idx);
 *    foo_t *foo_list_front(const struct foo_list *plist);
 *    foo_t *foo_list_back(const struct foo_list *plist);
 *    struct foo_list_link *foo_list_link(const struct foo_list *plist,
 *                                        int idx);
 *    struct foo_list_link *foo_list_head(const struct foo_list *plist);
 *    struct foo_list_link *foo_list_tail(const struct foo_list *plist);
 *    struct foo_list_link *foo_list_search(const struct foo_list *plist,
 *                                          const void *data);
 *    struct foo_list_link *foo_list_search_if(const struct foo_list *plist,
 *                                             foo_list_cond_fn_t
 *                                             cond_data_func);
 *    void foo_list_sort(struct foo_list *plist,
 *       int (*compar) (const foo_t *const *, const foo_t *const *));
 *    void foo_list_shuffle(struct foo_list *plist);
 *    void foo_list_reverse(struct foo_list *plist);
 *    foo_t *foo_list_link_data(const struct foo_list_link *plink);
 *    struct foo_list_link *
 *        foo_list_link_prev(const struct foo_list_link *plink);
 *    struct foo_list_link *
 *        foo_list_link_next(const struct foo_list_link *plink);
 *
 * You should also define yourself (this file cannot do this for you):
 * #define foo_list_iterate(foolist, pfoo)                                  \
 *   TYPED_LIST_ITERATE(foo_t, foolist, pfoo)
 * #define foo_list_iterate_end LIST_ITERATE_END
 *
 * #define foo_list_iterate_rev(foolist, pfoo)                              \
 *   TYPED_LIST_ITERATE_REV(foo_t, foolist, pfoo)
 * #define foo_list_iterate_rev_end LIST_ITERATE_REV_END
 *
 * #define foo_list_link_iterate(foolist, plink)                            \
 *   TYPED_LIST_LINK_ITERATE(struct foo_list_link, foolist, plink)
 * #define foo_list_link_iterate_end LIST_LINK_ITERATE_END
 *
 * #define foo_list_link_iterate_rev(foolist, plink)                        \
 *   TYPED_LIST_LINK_ITERATE_REV(struct foo_list_link, foolist, plink)
 * #define foo_list_link_iterate_rev_end LIST_LINK_ITERATE_REV_END
 *
 * #define foo_list_both_iterate(foolist, plink, pfoo)                      \
 *   TYPED_LIST_BOTH_ITERATE(struct foo_list_link, foo_t,                   \
                             foolist, plink, pfoo)
 * #define foo_list_link_iterate_full_end LIST_BOTH_ITERATE_END
 *
 * #define foo_list_both_iterate_rev(foolist, pfoo)                         \
 *   TYPED_LIST_BOTH_ITERATE_REV(struct foo_list_link, foo_t,               \
                                 foolist, plink, pfoo)
 * #define foo_list_both_iterate_rev_end LIST_BOTH_ITERATE_REV_END
 *
 * Note this is not protected against multiple inclusions; this is so that
 * you can have multiple different speclists. For each speclist, this file
 * should be included _once_, inside a .h file which _is_ itself protected
 * against multiple inclusions. */

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include "genlistLINK struct SPECLIST_PASTE(SPECLIST_TAG, _list_link)
#define SPECLIST_FOO(suffix) SPECLIST_PASTE(SPECLIST_TAG, suffix)

/* Dummy type. Actually a genlist, and not defined anywhere. */
SPECLIST_LIST;

/* Dummy type. Actually a genlist_link, and not defined anywhere. */
SPECLIST_LINK;

/* Function related typedefs. */

                                               const SPECLIST_TYPE *);
typedef bool (*SPECLIST_FOO(_list_cond_fn_t)) (const SPECLIST_TYPE *);


******
  Create a new speclistSPECLIST_LIST *SPECLIST_FOO(_list_new) (void)
fc__warn_unused_result;

static inline SPECLIST_LIST *SPECLIST_FOO(_list_new) (void)
{
  return (SPECLIST_LIST *) genlist_new();
}

******
  Create a new speclist with a free callbackSPECLIST_LIST *
SPECLIST_FOO(_list_new_full) (SPECLIST_FOO(_list_free_fn_t) free_data_func)
fc__warn_unused_result;

static inline SPECLIST_LIST *
((SPECLIST_LIST *)
          genlist_new_full((genlist_free_fn_t) free_data_func));
}

******
  Free a speclistvoid SPECLIST_FOO(_list_destroy) (SPECLIST_LIST *tthis)
{
  genlist_destroy((struct genlist *) tthis);
}

******
  Duplicate a speclistSPECLIST_LIST *
SPECLIST_FOO(_list_copy) (const SPECLIST_LIST *tthis)
fc__warn_unused_result;

static inline SPECLIST_LIST *
SPECLIST_FOO(_list_copy) (const SPECLIST_LIST *tthis)
{
  return (SPECLIST_LIST *) genlist_copy((const struct genlist *) tthis);
}

******
  Duplicate a speclist with a free callback and a function to copy each
  elementSPECLIST_LIST *
SPECLIST_FOO(_list_copy_full) (const SPECLIST_LIST *tthis,
SPECLIST_FOO(_list_free_fn_t) free_data_func)
fc__warn_unused_result;

static inline SPECLIST_LIST *
SPECLIST_FOO(_list_copy_full) (const SPECLIST_LIST *tthis,
SPECLIST_FOO(_list_free_fn_t) free_data_func)
{
  return ((SPECLIST_LIST *)
          genlist_copy_full((const struct genlist *) tthis,
(genlist_free_fn_t) free_data_func));
}

******
  Remove all elements from the speclistvoid SPECLIST_FOO(_list_clear) (SPECLIST_LIST *tthis)
{
  genlist_clear((struct genlist *) tthis);
}

******
  Remove all element duplicates (the speclist must be sorted before)(struct genlist *) tthis);
}

******
  Remove all element duplicates (the speclist must be sorted before), using
  'comp_data_func' to determine if the elements are equivalentsvoid
SPECLIST_FOO(_list_comp_fn_t) comp_data_func)
{
  genlist_unique_full((struct genlist *) tthis,
                     Push back an element into the speclistvoid SPECLIST_FOO(_list_append) (SPECLIST_LIST *tthis,
                                               SPECLIST_TYPE *pfoo)
{
  genlist_append((struct genlist *) tthis, pfoo);
}

******
  Push front an element into the speclistvoid SPECLIST_FOO(_list_prepend) (SPECLIST_LIST *tthis,
                                                SPECLIST_TYPE *pfoo)
{
  genlist_prepend((struct genlist *) tthis, pfoo);
}

******
  Insert an element into the speclist at the given positionvoid SPECLIST_FOO(_list_insert) (SPECLIST_LIST *tthis,
                                               SPECLIST_TYPE *pfoo, int idx)
{
  genlist_insert((struct genlist *) tthis, pfoo, idx);
}

******
  Insert an element after the specified linkvoid SPECLIST_FOO(_list_insert_after) (SPECLIST_LIST *tthis,
                                                     SPECLIST_TYPE *pfoo,
                                                     SPECLIST_LINK *plink)
{
  genlist_insert_after((struct genlist *) tthis, pfoo,
                       (struct genlist_link *) plink);
}

******
  Insert an element before the specified linkvoid SPECLIST_FOO(_list_insert_before) (SPECLIST_LIST *tthis,
                                                     SPECLIST_TYPE *pfoo,
                                                     SPECLIST_LINK *plink)
{
  genlist_insert_before((struct genlist *) tthis, pfoo,
                        (struct genlist_link *) plink);
}

******
  Search 'pfoo' in the speclist, and remove it. Returns TRUE on successremove) (SPECLIST_LIST *tthis,
                                               const SPECLIST_TYPE *pfoo)
{
  return genlist_remove((struct genlist *) tthis, pfoo);
}

******
  Remove the first element which fit the conditional function. Returns
  TRUE on success
SPECLIST_FOO(_list_remove_if) (SPECLIST_LIST *tthis,
                               SPECLIST_FOO(_list_cond_fn_t) cond_data_func)
{
  return genlist_remove_if((struct genlist *) tthis,
                           (genlist_cond_fn_t) cond_data_func);
}

******
  Remove 'pfoo' of the whole list. Returns the number of removed elementsint SPECLIST_FOO(_list_remove_all) (SPECLIST_LIST *tthis,
pfoo)
{
  return genlist_remove_all((struct genlist *) tthis, pfoo);
}

******
  Remove all elements which fit the conditional function. Returns the
  number of removed elements
SPECLIST_FOO(_list_remove_all_if) (SPECLIST_LIST *tthis,
                                   SPECLIST_FOO(_list_cond_fn_t)
                                   cond_data_func)
{
  return genlist_remove_all_if((struct genlist *) tthis,
                               (genlist_cond_fn_t) cond_data_func);
}

******
  Remove the elements pointed by 'plink'. Returns the next element of the
  speclist.

  NB: After calling this function 'plink' is no more usable. You should
  have saved the next or previous link beforevoid SPECLIST_FOO(_list_erase) (SPECLIST_LIST *tthis,
                                              SPECLIST_LINK *plink)
{
  genlist_erase((struct genlist *) tthis, (struct genlist_link *) plink);
}

******
  Remove the first element of the speclistvoid SPECLIST_FOO(_list_pop_front) (SPECLIST_LIST *tthis)
{
  genlist_pop_front((struct genlist *) tthis);
}

******
  Remove the last element of the speclistvoid SPECLIST_FOO(_list_pop_back) (SPECLIST_LIST *tthis)
{
  genlist_pop_back((struct genlist *) tthis);
}

******
  Return the number of elements inside the speclistint SPECLIST_FOO(_list_size) (const SPECLIST_LIST *tthis)
{
  return genlist_size((const struct genlist *) tthis);
}

******
  Return the element at position in the speclistSPECLIST_TYPE *
SPECLIST_FOO(_list_get) (const SPECLIST_LIST *tthis, int index)
{
  return ((SPECLIST_TYPE *)
          genlist_get((const struct genlist *) tthis, index));
}

******
  Return the first element of the speclistSPECLIST_TYPE *
SPECLIST_FOO(_list_front) (const SPECLIST_LIST *tthis)
{
  return (SPECLIST_TYPE *) genlist_front((const struct genlist *) tthis);
}

******
  Return the last element of the speclistSPECLIST_TYPE *
SPECLIST_FOO(_list_back) (const SPECLIST_LIST *tthis)
{
  return (SPECLIST_TYPE *) genlist_back((const struct genlist *) tthis);
}

******
  Return the element at position in the speclistSPECLIST_LINK *
SPECLIST_FOO(_list_link) (const SPECLIST_LIST *tthis, int index)
{
  return ((SPECLIST_LINK *)
          genlist_link((const struct genlist *) tthis, index));
}

******
  Return the head link of the speclistSPECLIST_LINK *
SPECLIST_FOO(_list_head) (const SPECLIST_LIST *tthis)
{
  return (SPECLIST_LINK *) genlist_head((const struct genlist *) tthis);
}

******
  Return the tail link of the speclistSPECLIST_LINK *
SPECLIST_FOO(_list_tail) (const SPECLIST_LIST *tthis)
{
  return (SPECLIST_LINK *) genlist_tail((const struct genlist *) tthis);
}

******
  Return the link of the first element which match the data 'pfoo'SPECLIST_LINK *
SPECLIST_FOO(_list_search) (const SPECLIST_LIST *tthis,
                            const SPECLIST_TYPE *pfoo)
{
  return ((SPECLIST_LINK *)
          genlist_search((const struct genlist *) tthis, pfoo));
}

******
  Return the link of the first element which match the conditional functionSPECLIST_LINK *
SPECLIST_FOO(_list_search_if) (const SPECLIST_LIST *tthis,
                               SPECLIST_FOO(_list_cond_fn_t) cond_data_func)
{
  return ((SPECLIST_LINK *)
          genlist_search_if((const struct genlist *) tthis,
                            (genlist_cond_fn_t) cond_data_func));
}

******
  Sort the speclistvoid
SPECLIST_FOO(_list_sort) (SPECLIST_LIST * tthis,
const SPECLIST_TYPE *const *))
{
  genlist_sort((struct genlist *) tthis,
               (int (*)(const void *, const void *)) compar);
}

******
  Shuffle the speclistvoid SPECLIST_FOO(_list_shuffle) (SPECLIST_LIST *tthis)
{
  genlist_shuffle((struct genlist *) tthis);
}

******
  Reverse the order of the elements of the speclistvoid SPECLIST_FOO(_list_reverse) (SPECLIST_LIST *tthis)
{
  genlist_reverse((struct genlist *) tthis);
}

******
  Return the data of the linkSPECLIST_TYPE *
SPECLIST_FOO(_list_link_data) (const SPECLIST_LINK *plink)
{
  return ((SPECLIST_TYPE *)
          genlist_link_data((const struct genlist_link *) plink));
}

******
  Return the previous linkSPECLIST_LINK *
SPECLIST_FOO(_list_link_prev) (const SPECLIST_LINK *plink)
fc__warn_unused_result;

static inline SPECLIST_LINK *
SPECLIST_FOO(_list_link_prev) (const SPECLIST_LINK *plink)
{
  return ((SPECLIST_LINK *)
          genlist_link_prev((const struct genlist_link *) plink));
}

******
  Return the next linkSPECLIST_LINK *
SPECLIST_FOO(_list_link_next) (const SPECLIST_LINK *plink)
fc__warn_unused_result;

static inline SPECLIST_LINK *
SPECLIST_FOO(_list_link_next) (const SPECLIST_LINK *plink)
{
  return ((SPECLIST_LINK *)
          genlist_link_next((const struct genlist_link *) plink));
}
/* Base macros that the users can specialize. */
#ifndef FC__SPECLIST_H  /* Defines this only once, no multiple inclusions. */
#define FC__SPECLIST_H

#ifdef DEBUG
#  define TYPED_LIST_CHECK(ARG_list)                                       \
  fc_assert_action(NULL != ARG_list, break)
#else
#  define TYPED_LIST_CHECK(ARG_list) /* Nothing. */
#endif /* DEBUG */

/* Speclist data iterator.
 * 
 * Using *_list_remove(NAME_data) is safe in this loop (but it may be
 * inefficient due to the linear research of the data, see also
 * *_list_erase()).
 * Using *_list_clear() will result to use freed data. It must be avoided!
 *
 * TYPE_data - The real type of the data in the genlist/speclist.
 * ARG_list - The speclist to iterate.
 * NAME_data - The name of the data iterator (defined inside the macro). */
#define TYPED_LIST_ITERATE(TYPE_data, ARG_list, NAME_data)                  \
do {                                                                        \
  const struct genlist_link *NAME_data##_iter;                              \
  TYPE_data *NAME_data;                                                     \
  TYPED_LIST_CHECK(ARG_list);                                               \
  NAME_data##_iter = genlist_head((const struct genlist *) ARG_list);       \
  while (NULL != NAME_data##_iter) {                                        \
    NAME_data = (TYPE_data *) genlist_link_data(NAME_data##_iter);          \
    NAME_data##_iter = genlist_link_next(NAME_data##_iter);

/* Balance for above: */ 
#define LIST_ITERATE_END                                                    \
  }                                                                         \
} while (FALSE);

/* Same, but iterate backwards:
 *
 * TYPE_data - The real type of the data in the genlist/speclist.
 * ARG_list - The speclist to iterate.
 * NAME_data - The name of the data iterator (defined inside the macro). */
#define TYPED_LIST_ITERATE_REV(TYPE_data, ARG_list, NAME_data)              \
do {                                                                        \
  const struct genlist_link *NAME_data##_iter;                              \
  TYPE_data *NAME_data;                                                     \
  TYPED_LIST_CHECK(ARG_list);                                               \
  NAME_data##_iter = genlist_tail((const struct genlist *) ARG_list);       \
  while (NULL != NAME_data##_iter) {                                        \
    NAME_data = (TYPE_data *) genlist_link_data(NAME_data##_iter);          \
    NAME_data##_iter = genlist_link_prev(NAME_data##_iter);

/* Balance for above: */ 
#define LIST_ITERATE_REV_END                                                \
  }                                                                         \
} while (FALSE);

/* Speclist link iterator.
 *
 * Using *_list_erase(NAME_link) is safe in this loop.
 * Using *_list_clear() will result to use freed data. It must be avoided!
 *
 * TYPE_link - The real type of the link.
 * ARG_list - The speclist to iterate.
 * NAME_link - The name of the link iterator (defined inside the macro). */
#define TYPED_LIST_LINK_ITERATE(TYPE_link, ARG_list, NAME_link)             \
do {                                                                        \
  TYPE_link *NAME_link = ((TYPE_link *)                                     \
                          genlist_head((const struct genlist *) ARG_list)); \
  TYPE_link *NAME_link##_next;                                              \
  TYPED_LIST_CHECK(ARG_list);                                               \
  for (; NULL != NAME_link; NAME_link = NAME_link##_next) {                 \
    NAME_link##_next = ((TYPE_link *)                                       \
                        genlist_link_next((struct genlist_link *)           \
                                          NAME_link));

/* Balance for above: */ 
#define LIST_LINK_ITERATE_END                                               \
  }                                                                         \
} while (FALSE);

/* Same, but iterate backwards:
 *
 * TYPE_link - The real type of the link.
 * ARG_list - The speclist to iterate.
 * NAME_link - The name of the link iterator (defined inside the macro). */
#define TYPED_LIST_LINK_ITERATE_REV(TYPE_link, ARG_list, NAME_link)         \
do {                                                                        \
  TYPE_link *NAME_link = ((TYPE_link *)                                     \
                          genlist_tail((const struct genlist *) ARG_list)); \
  TYPE_link *NAME_link##_prev;                                              \
  TYPED_LIST_CHECK(ARG_list);                                               \
  for (; NULL != NAME_link; NAME_link = NAME_link##_prev) {                 \
    NAME_link##_prev = ((TYPE_link *)                                       \
                        genlist_link_prev((struct genlist_link *)           \
                                          NAME_link));

/* Balance for above: */ 
#define LIST_LINK_ITERATE_REV_END                                           \
  }                                                                         \
} while (FALSE);

/* Speclist link and data iterator.
 *
 * Using *_list_erase(NAME_link) is safe in this loop.
 * Using *_list_clear() will result to use freed data. It must be avoided!
 *
 * TYPE_link - The real type of the link.
 * TYPE_data - The real type of the data in the genlist/speclist.
 * ARG_list - The speclist to iterate.
 * NAME_link - The name of the link iterator (defined inside the macro).
 * NAME_data - The name of the data iterator (defined inside the macro). */
#define TYPED_LIST_BOTH_ITERATE(TYPE_link, TYPE_data,                       \
                                ARG_list, NAME_link, NAME_data)             \
do {                                                                        \
  TYPE_link *NAME_link = ((TYPE_link *)                                     \
                          genlist_head((const struct genlist *) ARG_list)); \
  TYPE_link *NAME_link##_next;                                              \
  TYPE_data *NAME_data;                                                     \
  TYPED_LIST_CHECK(ARG_list);                                               \
  for (; NULL != NAME_link; NAME_link = NAME_link##_next) {                 \
    NAME_link##_next = ((TYPE_link *)                                       \
                        genlist_link_next((struct genlist_link *)           \
                                          NAME_link));                      \
    NAME_data = ((TYPE_data *)                                              \
                 genlist_link_data((struct genlist_link *) NAME_link));

/* Balance for above: */ 
#define LIST_BOTH_ITERATE_END                                               \
  }                                                                         \
} while (FALSE);

/* Same, but iterate backwards:
 *
 * TYPE_link - The real type of the link.
 * TYPE_data - The real type of the data in the genlist/speclist.
 * ARG_list - The speclist to iterate.
 * NAME_link - The name of the link iterator (defined inside the macro).
 * NAME_data - The name of the data iterator (defined inside the macro). */
#define TYPED_LIST_BOTH_ITERATE_REV(TYPE_link, TYPE_data,                   \
                                ARG_list, NAME_link, NAME_data)             \
do {                                                                        \
  TYPE_link *NAME_link = ((TYPE_link *)                                     \
                          genlist_tail((const struct genlist *) ARG_list)); \
  TYPE_link *NAME_link##_prev;                                              \
  TYPE_data *NAME_data;                                                     \
  TYPED_LIST_CHECK(ARG_list);                                               \
  for (; NULL != NAME_link; NAME_link = NAME_link##_prev) {                 \
    NAME_link##_prev = ((TYPE_link *)                                       \
                        genlist_link_prev((struct genlist_link *)           \
                                          NAME_link));                      \
    NAME_data = ((TYPE_data *)                                              \
                 genlist_link_data((struct genlist_link *) NAME_link));

/* Balance for above: */ 
#define LIST_BOTH_ITERATE_REV_END                                           \
  }                                                                         \
} while (FALSE);

#endif /* FC__SPECLIST_H */

/* This is after #endif FC__SPECLIST_H on purpose.
   extern "C" portion begins well before latter part of the header
   is guarded against multiple inclusions. */
#ifdef __cplusplus
}
#endif /* __cplusplus */
ENDREP
DELTA 10480 486 183
SVN  £¢KR …e € Ža†1 ‰;•] ‚rŸt€C¢{fdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include "bitvector.h"
#include "support.h"            /* bool type */

struct worklistifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__DATAIOENDREP
DELTA 16601 41760 287
SVN  Ž¦L˜] …^ €˜1 ‡t†¬tfdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include <stdio.h>

#include "shared.h"

/*
  Technical details:

  - There are three encodings used by freeciv: the data encoding, the
    internal encoding, and the local encoding.  Each is a character set
    (like utf-8 or latin1).  Each string in the code must be in one of these
    three encodings; to cut down on bugs always document whenever you have
    a string in anything other than the internal encoding and never make
    global variables hold anything other than the internal encoding; the
    local and data encodings should only be used locally within the code
    and always documented as such.

  - The data_encoding is used in all data files and network transactions.
    This is always UTF-8.

  - The internal_encoding is used internally within freeciv.  This is always
    UTF-8 at the server, but can be configured by the GUI client.  The GTK2
    client uses UTF-8 here but other clients will use whatever their GUI
    library or platform requires.  By using the GUI encoding internally at
    the client it allows us to pass any strings directly to the GUI without
    needing to convert them.  The drawback is that we have to convert them
    into the data encoding before sending them over the network (a likely
    source of bugs).  Also, gettext is set up to always return strings in
    the internal encoding.

  - The local_encoding is the one supported on the command line, which is
    generally the value listed in the $LANG environment variable.  This is
    not under freeciv control; all output to the command line must be
    converted or it will not display correctly.

  Practical details:

  - Translation files are not controlled by freeciv iconv.  The .po files
    can be in any character set, as set at the top of the file.

  - All translatable texts should be American English ASCII. In the past,
    gettext documentation has always said to stick to ASCII for the gettext
    input (pre-translated texts) and rely on translations to supply the
    needed non-ASCII characters.

  - All other texts, including rulesets, nations, and code files must be in
    UTF-8 (ASCII is a subset of UTF-8, and is fine for use here).

  - The server uses UTF-8 for everything; UTF-8 is the server's "internal
    encoding".

  - Everything sent over the network is always in UTF-8.

  - Everything in the client is converted into the client's "internal
    encoding" when it is received from the server.  Depending on which
    GUI is used, this may be just about any character set.  Conversely when
    sending strings from the client to the server they need to be converted
    into the data encoding.  This should be done internally within the
    network code.

  - Everything printed to the command line must be converted into the
    "local encoding" which may be anything as defined by the system.  Using
    fc_fprintf is generally the easiest way to print to the command line
    in which case all strings passed to it should be in the internal
    encoding.

  See PR#40028 in the old RT for additional explanation.
*/ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 17077 0 2430
SVN  ÂÃmB„6 …s € —:†"€D †xž€@ H “ F¦   ¦Bµ H  9© ¼ ƒ+¶P» eº€C …0¼4¬#Áafdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* utility */
#include "support.h"            /* bool type. */

/* common */ft_offset_t;
/* Unset offset value. */
#define FT_OFFSET_UNSET ((ft_#define FT_COLOR(fg, bg) { .foreground = fg, .background = bg }
***
  Constructor.
FT_COLOR(foreground, background);
  return color;
}

ft_offset_t start_offset,
                               ft_ft_offset_t start_offset,
                              ft_ft_offset_t text_tag_start_offset(const struct text_tag *ptag);
ft_ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18857 472 6114
SVN  º<»%~ …e ¶ ´B…a€Hfdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* FC__EVENTS_H */
ENDREP
DELTA 18841 0 1212
SVN  ädåg ¦% · ¾2¦"€Yfdef __cplusplus
extern "C" {
#endif /* __cplusplus */
write('''
#ifdef __cplusplus
}
#endif /* __cplusplus */
''')

    output.close()

main()
ENDREP
DELTA 9301 996 1044
SVN  ’’d …k €X @…~ 2‡K ƒg‰ „|Œ¬‘xfdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include "support.h"            *ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 12783 107 90
SVN  –V˜‚; …e ¶ ‚/…a€ yˆo€J ‹*‹¯–;fdef __cplusplus
extern "C" {
#endif /* __cplusplus */at(const struct unit *defender,
                          const struct unit *attacker,
                          const struct tile *locationunits_at_tile(const struct unit *punit,
                                  
#ifdef __cplusplus
}
#endif /* __cplusplus */
ENDREP
DELTA 18654 1407 643
SVN  Í{Îd …_ ¸ È…]€G#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__CITY_H */
ENDREP
DELTA 17396 4862 1559
SVN   u¡^ …e º G  š/†,€I#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* FC__FC_UTF8_H */
ENDREP
DELTA 16752 28404 228
SVN  N7b ‡V ¶ ‡_‡R¬ .fdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18292 25598 508
SVN  \ŽE  …^ º J  ‡†(€F#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__IOZ_H */
ENDREP
DELTA 18314 31606 3857
SVN  ¨¨lf …e º G  ¡<†,¬§e#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 15078 1641 1883
SVN  –tšk7Š …f º J  ƒt†0• >Š.“ 5‹j€‚m ŽZ€‚ q6€P i’w° i“€‚;#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

upport.h"            undef EADDRNOTAVAILdefine EADDRNOTAVAIL WSAEADDRNOTAVAIL
#endif   

#ifdef FD_ZERO
#define FC_FD_ZERO FD_ZERO
#else
#define FC_FD_ZERO(p) memset((void *)(p), 0, sizeof(*(p)))
#endif

#ifdef IPV6_ADD_MEMBERSHIP
#define FC_IPV6_ADD_MEMBERSHIP IPV6_ADD_MEMBERSHIP
#else
#define FC_IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
#endif

#ifndef HAVE_SOCKLEN_T
typedef int socklen_t;
#endif

union fc/* Which protocol will be used for LAN announcements */
enum announce_type {
  ANNOUNCE_NONE,
  ANNOUNCE_IPV4,
  ANNOUNCE_IPV6
};

#define ANNOUNCE_DEFAULT ANNOUNCE_IPV4

int fc_connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
int fcfc_readsocket(int sock, void *buf, size_t size);
int fc_writesocket(int sock, const void *buf, size_t size);
void fc_closesocket(int sock);
void fc_init_network(void);
void fc_shutdown_network(void);

void fcfc_sockaddr *addr, bool force_ipv4);
fz_FILE *fcfc_lookup_httpd(char *server, int *port, const char *url);
const char *fc_url_encode(const char *txt);

void sockaddr_debug(union fc_sockaddr *addr);
int sockaddr_size(union fc_sockaddr *addr);
bool sockaddr_ipv6(union fc_sockaddr *addr);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__NETINTF_H */
ENDREP
DELTA 4865 0 42
SVN  ‘4‹}ƒ …l ± 1…c N‹z€‚a__cplusplus
extern "C" {
#endif /* __cplusplus */RELEASE_MONTH])
#endif

/* version informational strings */
const char *freeciv_name_version(void);
const char *word_version(void);
const char *fc_svn_revision(void);

const char *freeciv_motto(void);

/* If returns NULL, not a beta version. */
const char *beta_message(void);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__VERSION_H */
ENDREP
DELTA 8056 2618 586
SVN  †*‡)K …^ €K#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

void distribute(int number, int groups, int *ratios, int *result);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* FC__DISTRIBUTE_H */
ENDREP
DELTA 18852 1444 1302
SVN  £E¤.d …Z ¸ W…X¬£,#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
DELTA 18854 24543 1029
SVN  Ÿ> ' …i ¶ ™=…e€Kfdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */

#endif  /* FC__MOVEMENT_H */
ENDREP
DELTA 1356 4369 617
SVN  †6ˆ‚/ …c €‚/#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#define NETWORK_CAPSTRING (NETWORK_CAPSTRING_MANDATORY " "	\
			   NETWORK_CAPSTRING_OPTIONAL)

extern const char * const our_capability;

void init_our_capability(void);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* FC__CAPSTR_H */
ENDREP
DELTA 14846 72440 3854
SVN  ª2²XQ‹f …T €j … …Q¡ ‹€: VŽ+€N R2€‚t ƒO€[ …A“f¾ ‚Y™$€ Bž ¡ „€2 „X l „P¥J€qfdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* utility */
#include "bitvector.h"

/* common */special special;
  bv_bases basescity *worked;			/* NULL for not worked */
  struct player *owner;			/* NULL for not owned */
  struct tile *claimer;
  char *spec_sprite;
};

/* 'struct tile_list' and related functions.#define tile_list_iterate(tile_list, ptile)                                 \
LIST_ITERATE_END

/* 'struct tile_hash' and related functions. */
#define SPECHASH_TAG tile
#define SPECHASH_KEY_TYPE struct tile *
#define SPECHASH_DATA_TYPE void *
#include "spechash.h"
#define tile_hash_iterate(hash, ptile)                                      \
  TYPED_HASH_KEYS_ITERATE(struct tile *, hash, ptile)
#define tile_hash_iterate_end HASH_KEYS_ITERATE_END
,
                    struct tile *claimer);
#define tile_claimer(_tile) ((_tile)->claimer)void tile_set_specials(struct tile *ptile, bv_special specialsbv_bases tile_bases(const struct tile *ptile);
void tile_set_bases(struct tile *ptile, bv_bases bases);
bool tile_has_base(const any_bases(const struct tile *ptilbool tile_has_claimable_base(const struct tile *ptile,
                             const struct unit_type *punittype);
int tile_bases_defense_bonus(const struct tile *ptile,
   B/* Virtual tiles are tiles that do not exist on the game map. */
struct tile *tile_virtual_new(const struct tile *ptile);
void tile_virtual_destroy(struct tile *vtile);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* FC__TILE_H */
ENDREP
DELTA 18054 9472 936
SVN  VŽ?b …a ¶ ‡a…]¬;fdef __cplusplus
extern "C" {
#endif /* __cplusplus */ifdef __cplusplus
}
#endif /* __cplusplus */ENDREP
id: 4f3.5ck.r18858/83640
type: file
pred: 4f3.5ck.r15904/1425
count: 4
text: 18858 215 596 4854 01bcd29517cf9ef11c866a928ed290be
cpath: /trunk/utility/iterator.h
copyroot: 15280 /trunk

id: 4kv.5ck.r18858/83826
type: file
pred: 4kv.5ck.r17396/11055
count: 1
text: 18858 78395 158 4318 2f077751183db0024958d87e94bf41d4
cpath: /trunk/utility/fc_utf8.h
copyroot: 15280 /trunk

id: 57x.5ck.r18858/84014
type: file
pred: 57x.5ck.r18447/5489
count: 3
text: 18858 23592 292 27122 befa4f17a73bd9f313a642d9a516df17
cpath: /trunk/utility/spechash.h
copyroot: 15280 /trunk

id: ha.5ck.r18858/84203
type: file
pred: ha.5ck.r16752/87941
count: 15
text: 18858 78582 123 2103 b6a42733685fbdfecb23a6afe653964e
props: 5776 8458 111 0 b491beec13ba952c0167e367d3cb48d2
cpath: /trunk/utility/inputfile.h
copyroot: 15280 /trunk

id: ui.5ck.r18858/84448
type: file
pred: ui.5ck.r18292/26623
count: 9
text: 18858 78734 155 1861 443b4b539e0cccfe3cc7873397f4e6c8
props: 5528 2195 110 0 fdfdab56f53d2388a66f6a5ce0985f95
cpath: /trunk/utility/ioz.h
copyroot: 15280 /trunk

id: 4uo.5ck.r18858/84686
type: file
pred: 4uo.5ck.r17929/5668
count: 2
text: 18858 13548 757 4455 a200fd00f0931cc8a3f48971ff48e7d5
cpath: /trunk/utility/bitvector.h
copyroot: 15280 /trunk

id: 52.5ck.r18858/84875
type: file
pred: 52.5ck.r18314/57032
count: 25
text: 18858 78918 130 5228 3fe5cbcbbb09d8282bc6435a9f4282d3
props: 10194 950 111 0 28e613ef70fc8e4efe7ed7b15f74e6e7
cpath: /trunk/utility/genlist.h
copyroot: 15280 /trunk

id: t7.5ck.r18858/85118
type: file
pred: t7.5ck.r18604/14579
count: 24
text: 18858 79078 1359 3435 9ddde056d19221cfb9518857ba152cf2
props: 8410 11615 111 0 5396249b3009eb64cd90e5da0b7a56fa
cpath: /trunk/utility/netintf.h
copyroot: 15280 /trunk

id: di.5ck.r18858/85363
type: file
pred: di.5ck.r18090/8874
count: 36
text: 18858 29577 17518 38074 0079d24e48888fd3ecadde8d52355047
props: 11100 7397 111 0 05a46e497021c8716b647ee1425e21a2
cpath: /trunk/utility/registry.h
copyroot: 15280 /trunk

id: ma.5ck.r18858/85610
type: file
pred: ma.5ck.r18282/613
count: 36
text: 18858 19404 1248 5056 ca47de7385992cb7a17a4787dcb7695e
props: 7602 5819 111 0 df9f31216c5039327c376b7fe82756f5
cpath: /trunk/utility/support.h
copyroot: 15280 /trunk

id: 7q.5ck.r18858/85852
type: file
pred: 7q.5ck.r18054/10874
count: 5
text: 18858 48232 155 1049 55887f2046b773071146755b8795b3c0
props: 4176 34487 110 0 dce24d5ac3f5e86568d59a55fa196991
cpath: /trunk/utility/capability.h
copyroot: 15280 /trunk

id: 33r.5ck.r18858/86098
type: file
pred: 33r.5ck.r15332/631
count: 2
text: 18858 22545 189 4906 f80ec7b5613dd09bed3da479b505206d
props: 10768 10535 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /trunk/utility/md5.h
copyroot: 15280 /trunk

id: gb.5ck.r18858/86338
type: file
pred: gb.5ck.r18449/5016
count: 20
text: 18858 48415 24647 32178 0056420cb272158853f1658388e95221
props: 10194 1300 110 0 a3ee73c7ed0bd397f9f2fedc7793a5b7
cpath: /trunk/utility/speclist.h
copyroot: 15280 /trunk

id: 4hz.5ck.r18858/86585
type: file
pred: 4hz.5ck.r18462/6809
count: 5
text: 18858 22917 123 2828 c76317f8d86d41ce821bb9f3b97cc3d1
cpath: /trunk/utility/string_vector.h
copyroot: 15280 /trunk

id: 4ia.5ck.r18858/86778
type: file
pred: 4ia.5ck.r18841/1242
count: 7
text: 18858 77435 168 13031 b58955406a420c4f3e63732a37e3f58e
props: 16287 8563 30 0 4160c74de5f4e580dc15660c798ff9fc
cpath: /trunk/utility/generate_specenum.py
copyroot: 15280 /trunk

id: 2cv.5ck.r18858/87033
type: file
pred: 2cv.5ck.r17556/11362
count: 2
text: 18858 18598 257 1172 3c1eba750a825a3ea97088df73de16f9
props: 5979 6493 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /trunk/utility/pqueue.h
copyroot: 15280 /trunk

id: 1d.5ck.r18858/87276
type: file
pred: 1d.5ck.r18623/36391
count: 179
text: 18858 19096 123 14660 cd89f09cc4e87bda69a225d88c455735
props: 10717 817 112 0 a00d30a519ad77ac91be0933c5118bd6
cpath: /trunk/utility/shared.h
copyroot: 15280 /trunk

id: h6.5ck.r18858/87520
type: file
pred: h6.5ck.r18462/7241
count: 16
text: 18858 26125 3424 5044 c93b27b459bda4c6be054355873491ac
props: 10751 3013 111 0 b491beec13ba952c0167e367d3cb48d2
cpath: /trunk/utility/astring.h
copyroot: 15280 /trunk

id: 57w.5ck.r18858/87764
type: file
pred: 57w.5ck.r18447/5861
count: 2
text: 18858 47462 467 6286 ff9f6125bebf37c016bce6c1072c8524
cpath: /trunk/utility/genhash.h
copyroot: 15280 /trunk

id: 2lq.5ck.r18858/87951
type: file
pred: 2lq.0.r8056/3668
count: 1
text: 18858 80921 222 937 78dc478aae6350a4cfe405652bf183fd
props: 8056 3545 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /trunk/utility/distribute.h
copyroot: 15280 /trunk

id: da.5ck.r18858/88193
type: file
pred: da.5ck.r18282/851
count: 6
text: 18858 47958 243 2567 8866675957ad6798e3fc06b795fc8dae
props: 1231 274 110 0 2a94ed7a58fe1feebaea27ee0c48460d
cpath: /trunk/utility/mem.h
copyroot: 15280 /trunk

id: fw.5ck.r18858/88428
type: file
pred: fw.5bk.r14576/680
count: 13
text: 18858 21076 145 2067 7390a8fa4bb693dd85e0679af7912323
props: 9197 143 111 0 b491beec13ba952c0167e367d3cb48d2
cpath: /trunk/utility/fcintl.h
copyroot: 15280 /trunk

id: 54.5ck.r18858/88667
type: file
pred: 54.5ck.r18091/2447
count: 34
text: 18858 1949 522 7397 d615267243e31f7f95c3ab7b6b1f5c30
props: 10070 1108 111 0 1912998302effd94f7d1c131050552ad
cpath: /trunk/utility/log.h
copyroot: 15280 /trunk

id: m6.5ck.r18858/88905
type: file
pred: m6.5ck.r18054/11546
count: 9
text: 18858 83489 123 1855 f00c1596d4ebcc3e264af9872bf507ff
props: 4423 3984 110 0 dce24d5ac3f5e86568d59a55fa196991
cpath: /trunk/utility/rand.h
copyroot: 15280 /trunk

id: 2g8.5ck.r18858/89144
type: file
pred: 2g8.5ck.r17145/3575
count: 14
text: 18858 73366 3193 4940 4452f895f4a433f8584eae4c56512fbf
props: 10099 19116 111 0 3d57169d64a739976bce7d2e578e29eb
cpath: /trunk/utility/fciconv.h
copyroot: 15280 /trunk

id: em.5ck.r18858/89391
type: file
pred: em.5ck.r18054/11785
count: 6
text: 18858 0 185 2390 db3559673809e3ea20765e82911b9010
props: 4423 4327 110 0 dce24d5ac3f5e86568d59a55fa196991
cpath: /trunk/utility/timing.h
copyroot: 15280 /trunk

id: z9.5ck.r18858/89628
type: file
pred: z9.5ck.r18268/8298
count: 14
text: 18858 11519 292 4675 19510273e2118a09816948a26e0f412c
props: 10194 1650 111 0 b491beec13ba952c0167e367d3cb48d2
cpath: /trunk/utility/specvec.h
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 25
file 2gg.5ck.r18549/17706
K 9
astring.c
V 23
file h5.5ck.r18462/7001
K 9
astring.h
V 24
file h6.5ck.r18858/87520
K 11
bitvector.c
V 24
file 4un.5ck.r17929/5483
K 11
bitvector.h
V 25
file 4uo.5ck.r18858/84686
K 12
capability.c
V 25
file 7p.5ck.r17122/333956
K 12
capability.h
V 24
file 7q.5ck.r18858/85852
K 12
distribute.c
V 25
file 2lp.5ck.r17068/38008
K 12
distribute.h
V 25
file 2lq.5ck.r18858/87951
K 9
fc_utf8.c
V 24
file 4ku.5ck.r18643/9166
K 9
fc_utf8.h
V 25
file 4kv.5ck.r18858/83826
K 9
fciconv.c
V 24
file 2g7.5ck.r17145/3331
K 9
fciconv.h
V 25
file 2g8.5ck.r18858/89144
K 8
fcintl.c
V 19
file k3.0.r7638/236
K 8
fcintl.h
V 24
file fw.5ck.r18858/88428
K 4
ftwl
V 23
dir 2jb.5ck.r17143/3086
K 20
generate_specenum.py
V 25
file 4ia.5ck.r18858/86778
K 9
genhash.c
V 24
file 57v.5ck.r18619/5000
K 9
genhash.h
V 25
file 57w.5ck.r18858/87764
K 9
genlist.c
V 24
file 51.5ck.r18306/12716
K 9
genlist.h
V 24
file 52.5ck.r18858/84875
K 11
inputfile.c
V 22
file h9.5ck.r18526/233
K 11
inputfile.h
V 24
file ha.5ck.r18858/84203
K 5
ioz.c
V 24
file uh.5ck.r18292/26383
K 5
ioz.h
V 24
file ui.5ck.r18858/84448
K 10
iterator.c
V 24
file 4h5.5ck.r15904/1850
K 10
iterator.h
V 25
file 4f3.5ck.r18858/83640
K 5
log.c
V 24
file 53.5ck.r18623/36636
K 5
log.h
V 24
file 54.5ck.r18858/88667
K 5
md5.c
V 23
file 33q.5ck.r16650/269
K 5
md5.h
V 25
file 33r.5ck.r18858/86098
K 5
mem.c
V 25
file d9.5ck.r17392/119185
K 5
mem.h
V 24
file da.5ck.r18858/88193
K 9
netintf.c
V 24
file t6.5ck.r18623/35656
K 9
netintf.h
V 24
file t7.5ck.r18858/85118
K 8
pqueue.c
V 26
file 2cu.5ck.r16929/293538
K 8
pqueue.h
V 25
file 2cv.5ck.r18858/87033
K 6
rand.c
V 25
file m5.5ck.r17122/338913
K 6
rand.h
V 24
file m6.5ck.r18858/88905
K 10
registry.c
V 24
file dh.5ck.r18623/35898
K 10
registry.h
V 24
file di.5ck.r18858/85363
K 8
shared.c
V 24
file 55.5ck.r18623/36146
K 8
shared.h
V 24
file 1d.5ck.r18858/87276
K 10
spechash.h
V 25
file 57x.5ck.r18858/84014
K 10
speclist.h
V 24
file gb.5ck.r18858/86338
K 9
specvec.h
V 24
file z9.5ck.r18858/89628
K 15
string_vector.c
V 24
file 4hy.5ck.r18462/6616
K 15
string_vector.h
V 25
file 4hz.5ck.r18858/86585
K 9
support.c
V 23
file m9.5ck.r17838/4504
K 9
support.h
V 24
file ma.5ck.r18858/85610
K 8
timing.c
V 25
file el.5ck.r17122/339408
K 8
timing.h
V 24
file em.5ck.r18858/89391
END
ENDREP
id: 1c.5ck.r18858/92202
type: dir
pred: 1c.5ck.r18841/3800
count: 701
text: 18858 89871 2318 2318 1587b990d4bec394c822495d885d64a1
props: 17175 331 84 0 5447a85ba28edec0d4a8f6120070e2b2
cpath: /trunk/utility
copyroot: 15280 /trunk

id: qp.5ck.r18858/92434
type: file
pred: qp.0.r8119/15235
count: 3
text: 18858 20920 130 1465 665ec659eedcef08cc4d03349d3ba67b
props: 8119 15112 110 0 fd27c383f48a4fbbd90a59fbcfc8b3be
cpath: /trunk/common/idex.h
copyroot: 15280 /trunk

id: 44.5ck.r18858/92670
type: file
pred: 44.5ck.r18100/70467
count: 178
text: 18858 21246 1116 5206 ed9dabe03f9593e8e2d89206768b68cf
props: 10995 4056 112 0 3c18238954a206b16025cb856b574b65
cpath: /trunk/common/packets.h
copyroot: 15280 /trunk

id: 4rp.5ck.r18858/92915
type: file
pred: 4rp.5ck.r17839/180149
count: 1
text: 18858 22389 125 3463 f9441b084f379dd3a233615bce99ef12
cpath: /trunk/common/research.h
copyroot: 15280 /trunk

id: 33g.5ck.r18858/93104
type: file
pred: 33g.5ck.r18326/39185
count: 9
text: 18858 22763 125 2684 9cfdc8b23f2805002d097e4b29f3c359
props: 10490 7151 110 0 dce24d5ac3f5e86568d59a55fa196991
cpath: /trunk/common/specialist.h
copyroot: 15280 /trunk

id: vc.5ck.r18858/93351
type: file
pred: vc.5ck.r18308/142895
count: 70
text: 18858 23068 345 7366 90903e54fcd4cb36a16705cc356b0794
props: 10767 58 111 0 9c2dbf68c7baabdec873d497eccc2dc6
cpath: /trunk/common/improvement.h
copyroot: 15280 /trunk

id: 4uq.5ck.r18858/93597
type: file
pred: 4uq.5ck.r17932/7373
count: 1
text: 18858 23441 123 1465 5ec4ffa711aed6ef48fccd93b878bb50
cpath: /trunk/common/fc_interface.h
copyroot: 15280 /trunk

id: 3jx.5ck.r18858/93788
type: file
pred: 3jx.5ck.r18855/12020
count: 34
text: 18858 23913 1271 4828 322367e92f01d5bb882d4112676a9a90
props: 12670 90984 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/common/base.h
copyroot: 15280 /trunk

id: 48.5ck.r18858/94031
type: file
pred: 48.5ck.r18846/1391
count: 203
text: 18858 25214 150 13130 54d9070ece16c3b9b8030b236d58e8da
props: 10755 43604 112 0 b4bb2e29c9087472d2e44c6eab39b6d6
cpath: /trunk/common/unit.h
copyroot: 15280 /trunk

id: va.5ck.r18858/94273
type: file
pred: va.5ck.r18751/6159
count: 120
text: 18858 25391 708 15311 97d3923db8872ba789561a8c21e3ca8d
props: 10932 10530 111 0 c621529c87aa3e4513ceb9a8b717aa47
cpath: /trunk/common/unittype.h
copyroot: 15280 /trunk

id: u.5ck.r18858/94519
type: file
pred: u.5ck.r18308/144605
count: 81
text: 18858 47127 153 7709 7b3bbab906940ff5e59370033467ead4
props: 11069 12096 111 0 7f9b5cf6c8fffd7438ed66579e7ad166
cpath: /trunk/common/tech.h
copyroot: 15280 /trunk

id: 33j.5ck.r18858/94759
type: file
pred: 33j.5ck.r18062/9861
count: 13
text: 18858 47310 123 3639 9505065524fb2f7bf0d377265eb5a3c3
props: 10866 15898 110 0 dce24d5ac3f5e86568d59a55fa196991
cpath: /trunk/common/team.h
copyroot: 15280 /trunk

id: 15s.5ck.r18858/95001
type: file
pred: 15s.5ck.r18054/23274
count: 12
text: 18858 73090 249 4427 5d046c9ad6f169df8bc12256d9098b17
props: 10480 9927 110 0 a3ee73c7ed0bd397f9f2fedc7793a5b7
cpath: /trunk/common/dataio.h
copyroot: 15280 /trunk

id: 4h4.5ck.r18858/95245
type: file
pred: 4h4.5ck.r18054/23516
count: 12
text: 18858 76588 644 8685 8f5993af6093d0a08d932fb4ca715512
cpath: /trunk/common/featured_text.h
copyroot: 15280 /trunk

id: 3t.5ck.r18858/95439
type: file
pred: 3t.5ck.r18857/8792
count: 49
text: 18858 77258 149 7589 78962da24f5e54315a31e768d2084b8d
props: 10978 47 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/common/events.h
copyroot: 15280 /trunk

id: wq.5ck.r18858/95678
type: file
pred: wq.5ck.r18086/20783
count: 22
text: 18858 77832 356 3085 9500bb5c95273e9942ba5c134fed139e
props: 11060 17645 111 0 4b4193808cb95e702a5e5065e4345324
cpath: /trunk/common/combat.h
copyroot: 15280 /trunk

id: 3s.5ck.r18858/95921
type: file
pred: 3s.5ck.r18054/23946
count: 20
text: 18858 77629 176 2404 88aecf49c5f98b294614977c79797134
props: 9582 5017 111 0 df9f31216c5039327c376b7fe82756f5
cpath: /trunk/common/diptreaty.h
copyroot: 15280 /trunk

id: 3q.5ck.r18858/96165
type: file
pred: 3q.5ck.r18654/7489
count: 301
text: 18858 78214 153 26468 7fd20b7e3ec35acde101e9dab6a61349
props: 10806 12641 112 0 0103cdead8b16a89c717b6ef9ed59c6a
cpath: /trunk/common/city.h
copyroot: 15280 /trunk

id: e7.5ck.r18858/96407
type: file
pred: e7.0.r13518/7887
count: 56
text: 18858 80466 432 1533 fb5814800df93b281e94c65765bbb624
props: 8470 451 111 0 93646be3752db5a3cd8e77177837d494
cpath: /trunk/common/version.h
copyroot: 15280 /trunk

id: 4gp.5ck.r18858/96645
type: file
pred: 4gp.5ck.r18852/6995
count: 25
text: 18858 81170 125 4654 091c62d6c702ce07ba51a32da157ba59
cpath: /trunk/common/ai.h
copyroot: 15280 /trunk

id: 2xw.5ck.r18858/96827
type: file
pred: 2xw.5ck.r18854/33808
count: 29
text: 18858 81324 153 4135 3e39a7bbbf3cde978caf244e54064a74
props: 10755 47297 110 0 2297367bb62237eae251d6a189335c2c
cpath: /trunk/common/movement.h
copyroot: 15280 /trunk

id: dw.5ck.r18858/97074
type: file
pred: dw.5bk.r14881/38989
count: 2
text: 18858 81507 322 1042 6c0c9d7c9718d4b92dee58cf3a0eaefe
props: 1356 11710 110 0 94a2a96823d3c54fff31bdd51de17982
cpath: /trunk/common/capstr.h
copyroot: 15280 /trunk

id: 2yt.5ck.r18858/97315
type: file
pred: 2yt.5ck.r18645/6248
count: 48
text: 18858 81856 1603 6488 8b58238acc2bda09371ac56b99642ba3
props: 10849 892 111 0 5396249b3009eb64cd90e5da0b7a56fa
cpath: /trunk/common/tile.h
copyroot: 15280 /trunk

id: qs.5ck.r18858/97556
type: file
pred: qs.5ck.r18308/147386
count: 83
text: 18858 839 125 13164 778c26f10b6750e1bb7c0df59b92b036
props: 10805 60759 111 0 14533b38c2d22fb145a05b253c8fb2e8
cpath: /trunk/common/terrain.h
copyroot: 15280 /trunk

id: 2f4.5ck.r18858/97800
type: file
pred: 2f4.5ck.r18382/12661
count: 41
text: 18858 993 159 55878 b5a695ab7351f732f1d47d378fcda43b
props: 10337 94 137 0 976e34fef28b87787fa073fe4d6aecb4
cpath: /trunk/common/generate_packets.py
copyroot: 15280 /trunk

id: 2ll.5ck.r18858/98052
type: file
pred: 2ll.5ck.r18856/14981
count: 87
text: 18858 1180 123 10751 cbcc239b52c3d6ae571181742510062e
props: 10836 12026 111 0 18cdb9becb11c47631b7a093e907200c
cpath: /trunk/common/fc_types.h
copyroot: 15280 /trunk

id: o9.5ck.r18858/98299
type: file
pred: o9.5ck.r18038/1433
count: 20
text: 18858 1332 196 2130 f244fca9817d624ac1064691bf2f36e7
props: 10806 13347 111 0 5396249b3009eb64cd90e5da0b7a56fa
cpath: /trunk/common/worklist.h
copyroot: 15280 /trunk

id: 2ep.5ck.r18858/98542
type: file
pred: 2ep.5ck.r18270/34711
count: 62
text: 18858 1557 211 9340 b4f37e52885304b78f7d11305f496c65
props: 11069 13497 111 0 23629f8214b2309975780a037517e920
cpath: /trunk/common/effects.h
copyroot: 15280 /trunk

id: hf.5ck.r18858/98787
type: file
pred: hf.5ck.r18403/7033
count: 61
text: 18858 1796 125 4407 0d934cf3adca7685d32fd393d8bf6b80
props: 10865 23625 111 0 8a31d593ba19cf3c77978cca3b416828
cpath: /trunk/common/government.h
copyroot: 15280 /trunk

id: 46.5ck.r18858/99032
type: file
pred: 46.5ck.r18843/13489
count: 224
text: 18858 2497 5912 14528 993e2b2c3d94e2523b10ce778ed4985b
props: 11057 32360 112 0 008c1f4aede3063a105ee5510d8fc5d7
cpath: /trunk/common/player.h
copyroot: 15280 /trunk

id: 4k1.5ck.r18858/99277
type: file
pred: 4k1.5ck.r18325/122376
count: 2
text: 18858 8440 2278 4775 6a839d1536196f7e8dfe109f205cbc21
cpath: /trunk/common/name_translation.h
copyroot: 15280 /trunk

id: uo.5ck.r18858/99474
type: file
pred: uo.5ck.r18473/17247
count: 58
text: 18858 10748 323 11479 9573afcd6952398b3d25ad8ab8ce31a7
props: 10151 1179 111 0 14533b38c2d22fb145a05b253c8fb2e8
cpath: /trunk/common/connection.h
copyroot: 15280 /trunk

id: 4f1.5ck.r18858/99721
type: file
pred: 4f1.5ck.r15975/2116
count: 2
text: 18858 11100 391 1115 fc37c2b8f996fd1c44c051c339a2783e
cpath: /trunk/common/borders.h
copyroot: 15280 /trunk

id: 4dn.5ck.r18858/99907
type: file
pred: 4dn.5ck.r18000/29420
count: 16
text: 18858 11841 1319 5173 0d2f29d6e0d70c1a49f0f63494133494
props: 13968 56569 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/common/vision.h
copyroot: 15280 /trunk

id: 3v.5ck.r18858/100152
type: file
pred: 3v.5ck.r18856/15467
count: 295
text: 18858 13190 151 21215 185fac08e91010a55b80315788e4dfb7
props: 11057 32714 112 0 2cf57fb6d11b8ba51814c6d419f0189e
cpath: /trunk/common/game.h
copyroot: 15280 /trunk

id: 39n.5ck.r18858/100396
type: file
pred: 39n.5ck.r18562/2777
count: 11
text: 18858 13368 153 3177 fb535b2494b94f760f3b8a063b5ff839
props: 12670 91533 34 0 25e6c2f7558b7484000d4d090dea5b92
cpath: /trunk/common/unitlist.h
copyroot: 15280 /trunk

id: 41.5ck.r18858/100642
type: file
pred: 41.5ck.r18574/5787
count: 280
text: 18858 14334 4236 25078 9bee444f38708fc19d1806fdd45ac597
props: 10733 16375 112 0 04d6f3553e14be31b9e437b066651140
cpath: /trunk/common/map.h
copyroot: 15280 /trunk

id: 99.5ck.r18858/100885
type: file
pred: 99.5ck.r18054/26016
count: 6
text: 18858 18882 188 5292 e9f0ea23c0aae433a867ceb0082afa9e
props: 9977 2856 110 0 7d181b70073f10d0c5a58c73a72d4f04
cpath: /trunk/common/spaceship.h
copyroot: 15280 /trunk

id: 2wr.5ck.r18858/101129
type: file
pred: 2wr.5ck.r17509/18916
count: 34
text: 18858 19248 128 4847 5f8efb2c505188b2c6f018ae343e88cd
props: 10865 25760 111 0 1912998302effd94f7d1c131050552ad
cpath: /trunk/common/requirements.h
copyroot: 15280 /trunk

id: im.5ck.r18858/101381
type: file
pred: im.5ck.r18706/5222
count: 78
text: 18858 20678 212 9367 95df77cff90122095089a3a3fadf6b2d
props: 11057 33421 111 0 b67b0fa27168318cbcd02c748356f132
cpath: /trunk/common/nation.h
copyroot: 15280 /trunk

PLAIN
K 11
Makefile.am
V 23
file 5h.5ck.r17932/7536
K 4
ai.c
V 24
file 4go.5ck.r18039/5198
K 4
ai.h
V 25
file 4gp.5ck.r18858/96645
K 6
aicore
V 24
dir 18t.5ck.r18854/33321
K 6
base.c
V 25
file 3jw.5ck.r18855/11779
K 6
base.h
V 25
file 3jx.5ck.r18858/93788
K 9
borders.c
V 25
file 4f0.5ck.r18297/35065
K 9
borders.h
V 25
file 4f1.5ck.r18858/99721
K 8
capstr.c
V 24
file dv.5ck.r17617/51579
K 8
capstr.h
V 24
file dw.5ck.r18858/97074
K 6
city.c
V 22
file q.5ck.r18654/7251
K 6
city.h
V 24
file 3q.5ck.r18858/96165
K 8
combat.c
V 24
file wp.5ck.r18854/32215
K 8
combat.h
V 24
file wq.5ck.r18858/95678
K 12
connection.c
V 24
file un.5ck.r18473/17001
K 12
connection.h
V 24
file uo.5ck.r18858/99474
K 8
dataio.c
V 25
file 15r.5ck.r17928/47899
K 8
dataio.h
V 25
file 15s.5ck.r18858/95001
K 11
diptreaty.c
V 23
file 3r.5ck.r18298/9103
K 11
diptreaty.h
V 24
file 3s.5ck.r18858/95921
K 9
effects.c
V 25
file 2eo.5ck.r18854/34056
K 9
effects.h
V 25
file 2ep.5ck.r18858/98542
K 8
events.c
V 24
file 33h.5ck.r18857/8551
K 8
events.h
V 24
file 3t.5ck.r18858/95439
K 14
fc_interface.c
V 25
file 4up.5ck.r17933/11024
K 14
fc_interface.h
V 25
file 4uq.5ck.r18858/93597
K 10
fc_types.h
V 25
file 2ll.5ck.r18858/98052
K 15
featured_text.c
V 25
file 4h3.5ck.r18623/44037
K 15
featured_text.h
V 25
file 4h4.5ck.r18858/95245
K 6
game.c
V 24
file 3u.5ck.r18856/15229
K 6
game.h
V 25
file 3v.5ck.r18858/100152
K 19
generate_packets.py
V 25
file 2f4.5ck.r18858/97800
K 12
government.c
V 23
file he.5ck.r18403/6790
K 12
government.h
V 24
file hf.5ck.r18858/98787
K 6
idex.c
V 23
file qo.5ck.r18342/2669
K 6
idex.h
V 24
file qp.5ck.r18858/92434
K 13
improvement.c
V 25
file vb.5ck.r18308/142158
K 13
improvement.h
V 24
file vc.5ck.r18858/93351
K 5
map.c
V 24
file r.5ck.r18452/120468
K 5
map.h
V 25
file 41.5ck.r18858/100642
K 10
movement.c
V 25
file 2xv.5ck.r18854/33561
K 10
movement.h
V 25
file 2xw.5ck.r18858/96827
K 18
name_translation.h
V 25
file 4k1.5ck.r18858/99277
K 8
nation.c
V 23
file il.5ck.r18706/4984
K 8
nation.h
V 25
file im.5ck.r18858/101381
K 9
packets.c
V 24
file 43.5ck.r18623/44227
K 11
packets.def
V 25
file 2f5.5ck.r18559/27563
K 9
packets.h
V 24
file 44.5ck.r18858/92670
K 8
player.c
V 25
file 45.5ck.r18308/148128
K 8
player.h
V 24
file 46.5ck.r18858/99032
K 14
requirements.c
V 25
file 2wq.5ck.r18326/39682
K 14
requirements.h
V 26
file 2wr.5ck.r18858/101129
K 10
research.c
V 24
file 4ro.5ck.r17856/7997
K 10
research.h
V 25
file 4rp.5ck.r18858/92915
K 11
spaceship.c
V 20
file 98.0.r9977/2632
K 11
spaceship.h
V 25
file 99.5ck.r18858/100885
K 12
specialist.c
V 25
file 33f.5ck.r18326/38937
K 12
specialist.h
V 25
file 33g.5ck.r18858/93104
K 6
team.c
V 24
file 33i.5ck.r18062/9622
K 6
team.h
V 25
file 33j.5ck.r18858/94759
K 6
tech.c
V 23
file t.5ck.r18428/28454
K 6
tech.h
V 23
file u.5ck.r18858/94519
K 9
terrain.c
V 26
file 2fp.5ck.r18308/147138
K 9
terrain.h
V 24
file qs.5ck.r18858/97556
K 6
tile.c
V 25
file 2ys.5ck.r18740/13280
K 6
tile.h
V 25
file 2yt.5ck.r18858/97315
K 6
unit.c
V 23
file v.5ck.r18802/20869
K 6
unit.h
V 24
file 48.5ck.r18858/94031
K 10
unitlist.c
V 25
file 39m.5ck.r18578/21945
K 10
unitlist.h
V 26
file 39n.5ck.r18858/100396
K 10
unittype.c
V 23
file v9.5ck.r18588/1099
K 10
unittype.h
V 24
file va.5ck.r18858/94273
K 9
version.c
V 25
file oe.5ck.r17122/322944
K 9
version.h
V 24
file e7.5ck.r18858/96407
K 8
vision.c
V 25
file 4dm.5ck.r18000/29175
K 8
vision.h
V 25
file 4dn.5ck.r18858/99907
K 10
worklist.c
V 25
file o8.5ck.r16929/277491
K 10
worklist.h
V 24
file o9.5ck.r18858/98299
END
ENDREP
id: p.5ck.r18858/105151
type: dir
pred: p.5ck.r18857/12536
count: 2939
text: 18858 101624 3514 3514 0c93e4ae71aa7e72817208b67ed1cdb1
props: 12883 2571 96 0 2763e13ff5d021346ae24ff6c9ced232
cpath: /trunk/common
copyroot: 15280 /trunk

PLAIN
K 9
ABOUT-NLS
V 22
file fu.0.r13215/85704
K 7
AUTHORS
V 19
file 5u.0.r12982/94
K 7
COPYING
V 19
file 1h.0.r9643/400
K 9
ChangeLog
V 26
file 6l.5ck.r18394/4622094
K 7
INSTALL
V 22
file 6.5ck.r17486/2711
K 11
Makefile.am
V 24
file 59.5ck.r17690/10482
K 4
NEWS
V 22
file 6m.5ck.r18758/131
K 6
README
V 20
file 7.0.r4421/96382
K 2
ai
V 22
dir 8.5ck.r18854/41360
K 10
autogen.sh
V 24
file 12o.5ck.r16223/7590
K 9
bootstrap
V 24
dir 2p5.5ck.r17613/37512
K 6
client
V 22
dir d.5ck.r18857/34386
K 6
common
V 23
dir p.5ck.r18858/105151
K 12
config.mac.h
V 20
file hb.0.r6045/5982
K 12
configure.ac
V 24
file 149.5ck.r18833/9782
K 4
data
V 21
dir w.5ck.r18842/3273
K 6
debian
V 22
dir 5w.5ck.r17748/2019
K 12
dependencies
V 23
dir 2yu.5ck.r18715/5254
K 11
diff_ignore
V 21
file qq.5ck.r17605/92
K 3
doc
V 24
dir k7.5ck.r18829/186139
K 10
fc_version
V 26
file 2lo.5en.r18452/124959
K 2
m4
V 23
dir 12p.5ck.r17653/2245
K 6
manual
V 23
dir 2m2.5ck.r18773/2094
K 7
modinst
V 22
dir 4pj.5ck.r18831/443
K 2
po
V 24
dir fs.5ck.r18840/151349
K 7
scripts
V 23
dir 2yo.5bk.r14810/1300
K 6
server
V 22
dir z.5ck.r18856/14749
K 10
stamp-h.in
V 19
file 80.0.r1125/241
K 5
tests
V 22
dir 2g9.5ck.r15661/767
K 7
utility
V 23
dir 1c.5ck.r18858/92202
K 3
vms
V 21
dir u9.0.r11105/70719
K 5
win32
V 24
dir 2eu.5bk.r13732/30345
END
ENDREP
id: 3.5ck.r18858/106701
type: dir
pred: 3.5ck.r18857/35933
count: 14007
text: 18858 105385 1303 1303 c2889b0e4301e261a3602cd3fcc2b207
props: 17175 3052 264 0 91336f1f63d2f606e65376614b5c72e4
cpath: /trunk
copyroot: 15280 /trunk

PLAIN
K 8
branches
V 20
dir 1.0.r18836/19917
K 4
tags
V 19
dir 2.0.r18763/5338
K 5
trunk
V 23
dir 3.5ck.r18858/106701
K 7
website
V 18
dir 3ge.0.r12388/0
END
ENDREP
id: 0.0.r18858/107095
type: dir
pred: 0.0.r18857/36324
count: 18858
text: 18858 106930 152 152 a7c2999b36724e61f61d7dd2ee547f0f
cpath: /
copyroot: 0 /

2wr.5ck.t18857-1 modify true false /trunk/common/requirements.h

e7.5ck.t18857-1 modify true false /trunk/common/version.h

ma.5ck.t18857-1 modify true false /trunk/utility/support.h

im.5ck.t18857-1 modify true false /trunk/common/nation.h

2lq.5ck.t18857-1 modify true false /trunk/utility/distribute.h

qp.5ck.t18857-1 modify true false /trunk/common/idex.h

4rp.5ck.t18857-1 modify true false /trunk/common/research.h

m6.5ck.t18857-1 modify true false /trunk/utility/rand.h

33r.5ck.t18857-1 modify true false /trunk/utility/md5.h

33g.5ck.t18857-1 modify true false /trunk/common/specialist.h

em.5ck.t18857-1 modify true false /trunk/utility/timing.h

4hz.5ck.t18857-1 modify true false /trunk/utility/string_vector.h

qs.5ck.t18857-1 modify true false /trunk/common/terrain.h

4f3.5ck.t18857-1 modify true false /trunk/utility/iterator.h

2f4.5ck.t18857-1 modify true false /trunk/common/generate_packets.py

4uq.5ck.t18857-1 modify true false /trunk/common/fc_interface.h

3jx.5ck.t18857-1 modify true false /trunk/common/base.h

48.5ck.t18857-1 modify true false /trunk/common/unit.h

2ep.5ck.t18857-1 modify true false /trunk/common/effects.h

va.5ck.t18857-1 modify true false /trunk/common/unittype.h

h6.5ck.t18857-1 modify true false /trunk/utility/astring.h

u.5ck.t18857-1 modify true false /trunk/common/tech.h

33j.5ck.t18857-1 modify true false /trunk/common/team.h

57w.5ck.t18857-1 modify true false /trunk/utility/genhash.h

da.5ck.t18857-1 modify true false /trunk/utility/mem.h

4f1.5ck.t18857-1 modify true false /trunk/common/borders.h

15s.5ck.t18857-1 modify true false /trunk/common/dataio.h

2g8.5ck.t18857-1 modify true false /trunk/utility/fciconv.h

3t.5ck.t18857-1 modify true false /trunk/common/events.h

wq.5ck.t18857-1 modify true false /trunk/common/combat.h

3q.5ck.t18857-1 modify true false /trunk/common/city.h

4kv.5ck.t18857-1 modify true false /trunk/utility/fc_utf8.h

ha.5ck.t18857-1 modify true false /trunk/utility/inputfile.h

ui.5ck.t18857-1 modify true false /trunk/utility/ioz.h

41.5ck.t18857-1 modify true false /trunk/common/map.h

2cv.5ck.t18857-1 modify true false /trunk/utility/pqueue.h

99.5ck.t18857-1 modify true false /trunk/common/spaceship.h

52.5ck.t18857-1 modify true false /trunk/utility/genlist.h

1d.5ck.t18857-1 modify true false /trunk/utility/shared.h

t7.5ck.t18857-1 modify true false /trunk/utility/netintf.h

4gp.5ck.t18857-1 modify true false /trunk/common/ai.h

2xw.5ck.t18857-1 modify true false /trunk/common/movement.h

fw.5ck.t18857-1 modify true false /trunk/utility/fcintl.h

44.5ck.t18857-1 modify true false /trunk/common/packets.h

dw.5ck.t18857-1 modify true false /trunk/common/capstr.h

2yt.5ck.t18857-1 modify true false /trunk/common/tile.h

vc.5ck.t18857-1 modify true false /trunk/common/improvement.h

57x.5ck.t18857-1 modify true false /trunk/utility/spechash.h

2ll.5ck.t18857-1 modify true false /trunk/common/fc_types.h

o9.5ck.t18857-1 modify true false /trunk/common/worklist.h

di.5ck.t18857-1 modify true false /trunk/utility/registry.h

hf.5ck.t18857-1 modify true false /trunk/common/government.h

7q.5ck.t18857-1 modify true false /trunk/utility/capability.h

46.5ck.t18857-1 modify true false /trunk/common/player.h

54.5ck.t18857-1 modify true false /trunk/utility/log.h

4k1.5ck.t18857-1 modify true false /trunk/common/name_translation.h

uo.5ck.t18857-1 modify true false /trunk/common/connection.h

gb.5ck.t18857-1 modify true false /trunk/utility/speclist.h

4h4.5ck.t18857-1 modify true false /trunk/common/featured_text.h

z9.5ck.t18857-1 modify true false /trunk/utility/specvec.h

3s.5ck.t18857-1 modify true false /trunk/common/diptreaty.h

4ia.5ck.t18857-1 modify true false /trunk/utility/generate_specenum.py

4dn.5ck.t18857-1 modify true false /trunk/common/vision.h

3v.5ck.t18857-1 modify true false /trunk/common/game.h

39n.5ck.t18857-1 modify true false /trunk/common/unitlist.h

4uo.5ck.t18857-1 modify true false /trunk/utility/bitvector.h


107095 107247
