| [freeciv-ai] Re: [Freeciv-Dev] Re: [RFC] Path finding interface #9[Top] [All Lists][Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
 
| To: | freeciv development list <freeciv-ai@xxxxxxxxxxx> |  
| Subject: | [freeciv-ai] Re: [Freeciv-Dev] Re: [RFC] Path finding interface #9 |  
| From: | Per I Mathisen <per@xxxxxxxxxxx> |  
| Date: | Sat, 25 May 2002 19:40:32 +0200 (MEST) |  
 What is the practical difference between
/*
 * Tries to find the best path in the given map to the given
 * destination position. The path will be written in the given struct
 * pf_path. The caller should test path->found_a_valid.
 */
void pf_get_path(pf_map_t pf_map, int end_x, int end_y, struct pf_path *path);
and
/*
 * Construct the whole path to the given location and write it into
 * the given path. The location has to be obtained from
 * pf_get_next_location.
 */
void pf_construct_path(pf_map_t pf_map, struct pf_path *path,
                       const pf_location_t location);
?
Also, even though this is a more dangerous way to code, please make these
functions give pointers to allocated structures as return values instead
of passing pointers to existing structures by reference.
I mean...
void pf_get_path(pf_map_t pf_map, int end_x, int end_y, struct pf_path *path);
void pf_construct_path(pf_map_t pf_map, struct pf_path *path,
                       const pf_location_t location);
bool pf_get_next_location(pf_map_t pf_map, pf_location_t *location);
...should be...
struct pf_path *pf_get_path(pf_map_t pf_map, int end_x, int end_y);
struct pf_path * pf_construct_path(pf_map_t pf_map, const pf_location_t 
location);
struct pf_location_t *pf_get_next_location(pf_map_t pf_map);
This way they become _a lot_ more readable, as we know what is happening
just by looking at the code.
ie
        struct pf_path path;
        ...
        pf_get_path(map,x,y,path);
        ...
        pf_get_path(map,x,y,path);
compared to
        struct pf_path *path;
        ...
        path = pf_get_path(map,x,y);
        ...
        free(path);
        path = pf_get_path(map,x,y);
Yours,
Per
"It is difficult to catch a black cat in a
dark room. Especially if there is no cat
there." - Confucius
 
[freeciv-ai] Re: [Freeciv-Dev] Re: [RFC] Path finding interface #9,
Per I Mathisen <=
 
 |  |