source: git/src/datain.h @ 2251605

stereo-2025
Last change on this file since 2251605 was 2091e56, checked in by Olly Betts <olly@…>, 11 months ago

Fix new warnings on Mammoth Walls data

Most of these are thanks to Walls quietly ignoring junk.

Also, we weren't supporting explicit units of inches in instrument
or target heights. Now we support them everywhere that takes a
measurement.

  • Property mode set to 100644
File size: 3.1 KB
Line 
1/* datain.h
2 * Header file for code that...
3 * Reads in survey files, dealing with special characters, keywords & data
4 * Copyright (C) 1994-2022 Olly Betts
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19 */
20
21#ifdef HAVE_SETJMP_H
22# include <setjmp.h>
23#endif
24
25#include <stdio.h> /* for FILE */
26
27#include "message.h" /* for DIAG_WARN, etc */
28
29typedef struct parse {
30   FILE *fh;
31   const char *filename;
32   unsigned int line;
33   long lpos;
34   bool reported_where;
35   struct parse *parent;
36#ifdef HAVE_SETJMP_H
37   jmp_buf jbSkipLine;
38#endif
39} parse;
40
41extern int ch;
42extern parse file;
43extern bool f_export_ok;
44
45#define nextch() (ch = GETC(file.fh))
46
47typedef struct {
48   long offset;
49   int ch;
50} filepos;
51
52void get_pos(filepos *fp);
53void set_pos(const filepos *fp);
54
55void skipblanks(void);
56
57/* reads complete data file */
58void data_file(const char *pth, const char *fnm);
59
60void skipline(void);
61
62/* Read the current line into a string.
63 *
64 * The string is allocated with malloc() the caller is responsible for calling
65 * free().
66 */
67char* grab_line(void);
68
69/* The severity values are defined in message.h. */
70#define DIAG_SEVERITY_MASK 0x03
71// Report column number based of the current file position.
72#define DIAG_COL        0x04
73// Call skipline() after reporting the diagnostic:
74#define DIAG_SKIP       0x08
75// Set caret_width to s_len(&token):
76#define DIAG_TOKEN      0x10
77// The following codes say to parse and discard a value from the current file
78// position - caret_width is set to its length:
79#define DIAG_WORD       0x20    // Span of non-blanks (and non-comments).
80#define DIAG_UINT       0x40    // Span of digits.
81#define DIAG_DATE       0x80    // Span of digits and full stops.
82#define DIAG_NUM        0x100   // Real number.
83#define DIAG_STRING     0x200   // Possibly quoted string value.
84#define DIAG_TAIL       0x400   // Rest of the line (not including trailing blanks or comment).
85#define DIAG_FROM_      0x800   // The caret_width value is in bits above this one.
86#define DIAG_FROM_SHIFT 12
87// Specify the caret_width explicitly.
88#define DIAG_WIDTH(W)   (DIAG_FROM_ | ((W) << DIAG_FROM_SHIFT))
89// Specify caret_width to be from filepos POS to the current position.
90#define DIAG_FROM(POS)  DIAG_WIDTH(ftell(file.fh) - (POS).offset)
91
92void compile_diagnostic(int flags, int en, ...);
93
94void compile_diagnostic_at(int flags, const char * file, unsigned line, int en, ...);
95void compile_diagnostic_pfx(int flags, const prefix * pfx, int en, ...);
96
97void compile_diagnostic_token_show(int flags, int en);
98void compile_diagnostic_buffer(int flags, int en, ...);
Note: See TracBrowser for help on using the repository browser.