Index: alien_formats/altium/pcbdoc_ascii.h =================================================================== --- alien_formats/altium/pcbdoc_ascii.h (revision 35515) +++ alien_formats/altium/pcbdoc_ascii.h (revision 35516) @@ -1,5 +1,7 @@ /* pcbdoc_ascii emulation */ +#include + typedef struct altium_block_s { int link; /* in tree blocks */ long size; /* allocated size of raw */ @@ -9,7 +11,13 @@ typedef struct altium_field_s { int type; /* derived from ->key */ const char *key; - const char *val; + enum { ALTIUM_FT_STR, ALTIUM_FT_CRD, ALTIUM_FT_DBL, ALTIUM_FT_LNG } val_type; + union { + const char *str; + rnd_coord_t crd; + double dbl; + long lng; /* also used for bool */ + } val; } altium_field_t; typedef struct altium_record_s { @@ -23,6 +31,7 @@ #define gdl_append(l, a, b) +#define RND_MIL_TO_COORD(mil) (mil) static inline altium_record_t *pcbdoc_ascii_new_rec(altium_tree_t *tree, const char *type_s, int kw) { @@ -36,3 +45,10 @@ (*fields) += strlen(*fields); return 0; } + +static inline altium_field_t *pcbdoc_ascii_new_field(altium_tree_t *tree, altium_record_t *rec, const char *key, int kw, const char *val) +{ + static altium_field_t dummy; + return &dummy; +} + Index: alien_formats/altium/test.c =================================================================== --- alien_formats/altium/test.c (revision 35515) +++ alien_formats/altium/test.c (revision 35516) @@ -5,8 +5,10 @@ #include "pcbdoc_ascii.h" #include "pcbdoc_bin.h" -int pcbdoc_bin_parse_nets6(rnd_hidlib_t *hidlib, altium_tree_t *tree, ucdf_file_t *fp, altium_buf_t *tmp); +#undef fopen +int pcbdoc_bin_parse_tracks6(rnd_hidlib_t *hidlib, altium_tree_t *tree, ucdf_file_t *fp, altium_buf_t *tmp); + int main(int argc, char *argv[]) { const char *fn = "Data.dat"; @@ -22,7 +24,7 @@ exit(1); } - res = pcbdoc_bin_parse_nets6(&hidlib, &tree, f, &tmp); + res = pcbdoc_bin_parse_tracks6(&hidlib, &tree, f, &tmp); printf("res=%d @ %ld\n", res, ftell(f));