Graphviz 14.0.5~dev.20251117.1017
Loading...
Searching...
No Matches
sftable.c
Go to the documentation of this file.
1/*************************************************************************
2 * Copyright (c) 2011 AT&T Intellectual Property
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * https://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors: Details at https://graphviz.org
9 *************************************************************************/
10
11#include <limits.h>
12#include <sfio/sfhdr.h>
13#include <stddef.h>
14#include <util/gv_ctype.h>
15
16/* Dealing with $ argument addressing stuffs.
17**
18** Written by Kiem-Phong Vo.
19*/
20
21static const char *sffmtint(const char *str) {
22 for (; gv_isdigit(*str); ++str)
23 ;
24 return str;
25}
26
27/* table for floating point and integer conversions */
29 .sf_pos10 = {1e1, 1e2, 1e4, 1e8, 1e16, 1e32},
30 .sf_neg10 = {1e-1, 1e-2, 1e-4, 1e-8, 1e-16, 1e-32},
31
32 .sf_dec =
33 {'0', '0', '0', '1', '0', '2', '0', '3', '0', '4',
34 '0', '5', '0', '6', '0', '7', '0', '8', '0', '9',
35 '1', '0', '1', '1', '1', '2', '1', '3', '1', '4',
36 '1', '5', '1', '6', '1', '7', '1', '8', '1', '9',
37 '2', '0', '2', '1', '2', '2', '2', '3', '2', '4',
38 '2', '5', '2', '6', '2', '7', '2', '8', '2', '9',
39 '3', '0', '3', '1', '3', '2', '3', '3', '3', '4',
40 '3', '5', '3', '6', '3', '7', '3', '8', '3', '9',
41 '4', '0', '4', '1', '4', '2', '4', '3', '4', '4',
42 '4', '5', '4', '6', '4', '7', '4', '8', '4', '9',
43 '5', '0', '5', '1', '5', '2', '5', '3', '5', '4',
44 '5', '5', '5', '6', '5', '7', '5', '8', '5', '9',
45 '6', '0', '6', '1', '6', '2', '6', '3', '6', '4',
46 '6', '5', '6', '6', '6', '7', '6', '8', '6', '9',
47 '7', '0', '7', '1', '7', '2', '7', '3', '7', '4',
48 '7', '5', '7', '6', '7', '7', '7', '8', '7', '9',
49 '8', '0', '8', '1', '8', '2', '8', '3', '8', '4',
50 '8', '5', '8', '6', '8', '7', '8', '8', '8', '9',
51 '9', '0', '9', '1', '9', '2', '9', '3', '9', '4',
52 '9', '5', '9', '6', '9', '7', '9', '8', '9', '9',
53 },
54
55 .sf_digits = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@_",
56
57 .sf_fmtintf = sffmtint,
58 .sf_cv36 =
59 {
68 0, 1, 2, 3, 4, 5,
69 6, 7, 8, 9, SF_RADIX, SF_RADIX,
71 11, 12, 13, 14, 15, 16,
72 17, 18, 19, 20, 21, 22,
73 23, 24, 25, 26, 27, 28,
74 29, 30, 31, 32, 33, 34,
76 SF_RADIX, 10, 11, 12, 13, 14,
77 15, 16, 17, 18, 19, 20,
78 21, 22, 23, 24, 25, 26,
79 27, 28, 29, 30, 31, 32,
80 33, 34, 35, SF_RADIX, SF_RADIX, SF_RADIX,
103 },
104 .sf_cv64 =
105 {
114 0, 1, 2, 3, 4, 5,
115 6, 7, 8, 9, SF_RADIX, SF_RADIX,
117 37, 38, 39, 40, 41, 42,
118 43, 44, 45, 46, 47, 48,
119 49, 50, 51, 52, 53, 54,
120 55, 56, 57, 58, 59, 60,
122 SF_RADIX, 10, 11, 12, 13, 14,
123 15, 16, 17, 18, 19, 20,
124 21, 22, 23, 24, 25, 26,
125 27, 28, 29, 30, 31, 32,
126 33, 34, 35, SF_RADIX, SF_RADIX, SF_RADIX,
149 },
150 .sf_type = {
151 ['d'] = SFFMT_INT,
152 ['i'] = SFFMT_INT,
153 ['u'] = SFFMT_UINT,
154 ['o'] = SFFMT_UINT,
155 ['x'] = SFFMT_UINT,
156 ['X'] = SFFMT_UINT,
157 ['e'] = SFFMT_FLOAT,
158 ['E'] = SFFMT_FLOAT,
159 ['g'] = SFFMT_FLOAT,
160 ['G'] = SFFMT_FLOAT,
161 ['f'] = SFFMT_FLOAT,
162 ['s'] = SFFMT_POINTER,
163 ['n'] = SFFMT_POINTER,
164 ['p'] = SFFMT_POINTER,
165 ['!'] = SFFMT_POINTER,
166 ['c'] = SFFMT_BYTE,
167 ['['] = SFFMT_CLASS,
168 }
169};
replacements for ctype.h functions
static bool gv_isdigit(int c)
Definition gv_ctype.h:41
textitem scanner parser str
Definition htmlparse.y:218
#define SFFMT_CLASS
Definition sfhdr.h:114
#define SFFMT_POINTER
Definition sfhdr.h:113
#define SFFMT_BYTE
Definition sfhdr.h:112
#define SF_RADIX
Definition sfhdr.h:116
#define SFFMT_INT
Definition sfhdr.h:109
#define SFFMT_UINT
Definition sfhdr.h:110
#define SFFMT_FLOAT
Definition sfhdr.h:111
static const char * sffmtint(const char *str)
Definition sftable.c:21
Sftab_t _Sftable
Definition sftable.c:28
long double sf_pos10[SF_MAXEXP10]
positive powers of 10
Definition sfhdr.h:134