Blame


1 aa738614 2004-03-01 devnull
2 aa738614 2004-03-01 devnull /*
3 aa738614 2004-03-01 devnull * The authors of this software are Rob Pike and Ken Thompson.
4 aa738614 2004-03-01 devnull * Copyright (c) 2002 by Lucent Technologies.
5 aa738614 2004-03-01 devnull * Permission to use, copy, modify, and distribute this software for any
6 aa738614 2004-03-01 devnull * purpose without fee is hereby granted, provided that this entire notice
7 aa738614 2004-03-01 devnull * is included in all copies of any software which is or includes a copy
8 aa738614 2004-03-01 devnull * or modification of this software and in all copies of the supporting
9 aa738614 2004-03-01 devnull * documentation for such software.
10 aa738614 2004-03-01 devnull * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
11 aa738614 2004-03-01 devnull * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY
12 aa738614 2004-03-01 devnull * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
13 aa738614 2004-03-01 devnull * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
14 aa738614 2004-03-01 devnull */
15 aa738614 2004-03-01 devnull
16 aa738614 2004-03-01 devnull #ifndef _FMTH_
17 aa738614 2004-03-01 devnull #define _FMTH_ 1
18 aa738614 2004-03-01 devnull #ifdef __cplusplus
19 aa738614 2004-03-01 devnull extern "C" {
20 aa738614 2004-03-01 devnull #endif
21 aa738614 2004-03-01 devnull
22 aa738614 2004-03-01 devnull #include <stdarg.h>
23 aa738614 2004-03-01 devnull
24 aa738614 2004-03-01 devnull #ifndef _UTFH_
25 aa738614 2004-03-01 devnull #include <utf.h>
26 aa738614 2004-03-01 devnull #endif
27 aa738614 2004-03-01 devnull
28 aa738614 2004-03-01 devnull typedef struct Fmt Fmt;
29 aa738614 2004-03-01 devnull struct Fmt{
30 aa738614 2004-03-01 devnull unsigned char runes; /* output buffer is runes or chars? */
31 aa738614 2004-03-01 devnull void *start; /* of buffer */
32 aa738614 2004-03-01 devnull void *to; /* current place in the buffer */
33 aa738614 2004-03-01 devnull void *stop; /* end of the buffer; overwritten if flush fails */
34 aa738614 2004-03-01 devnull int (*flush)(Fmt *); /* called when to == stop */
35 aa738614 2004-03-01 devnull void *farg; /* to make flush a closure */
36 aa738614 2004-03-01 devnull int nfmt; /* num chars formatted so far */
37 aa738614 2004-03-01 devnull va_list args; /* args passed to dofmt */
38 aa738614 2004-03-01 devnull int r; /* % format Rune */
39 aa738614 2004-03-01 devnull int width;
40 aa738614 2004-03-01 devnull int prec;
41 aa738614 2004-03-01 devnull unsigned long flags;
42 aa738614 2004-03-01 devnull };
43 aa738614 2004-03-01 devnull
44 aa738614 2004-03-01 devnull enum{
45 aa738614 2004-03-01 devnull FmtWidth = 1,
46 aa738614 2004-03-01 devnull FmtLeft = FmtWidth << 1,
47 aa738614 2004-03-01 devnull FmtPrec = FmtLeft << 1,
48 aa738614 2004-03-01 devnull FmtSharp = FmtPrec << 1,
49 aa738614 2004-03-01 devnull FmtSpace = FmtSharp << 1,
50 aa738614 2004-03-01 devnull FmtSign = FmtSpace << 1,
51 aa738614 2004-03-01 devnull FmtZero = FmtSign << 1,
52 aa738614 2004-03-01 devnull FmtUnsigned = FmtZero << 1,
53 aa738614 2004-03-01 devnull FmtShort = FmtUnsigned << 1,
54 aa738614 2004-03-01 devnull FmtLong = FmtShort << 1,
55 aa738614 2004-03-01 devnull FmtVLong = FmtLong << 1,
56 aa738614 2004-03-01 devnull FmtComma = FmtVLong << 1,
57 aa738614 2004-03-01 devnull FmtByte = FmtComma << 1,
58 aa738614 2004-03-01 devnull FmtLDouble = FmtByte << 1,
59 aa738614 2004-03-01 devnull
60 aa738614 2004-03-01 devnull FmtFlag = FmtLDouble << 1
61 aa738614 2004-03-01 devnull };
62 aa738614 2004-03-01 devnull
63 aa738614 2004-03-01 devnull extern int print(char*, ...);
64 aa738614 2004-03-01 devnull extern char* seprint(char*, char*, char*, ...);
65 aa738614 2004-03-01 devnull extern char* vseprint(char*, char*, char*, va_list);
66 aa738614 2004-03-01 devnull extern int snprint(char*, int, char*, ...);
67 aa738614 2004-03-01 devnull extern int vsnprint(char*, int, char*, va_list);
68 aa738614 2004-03-01 devnull extern char* smprint(char*, ...);
69 aa738614 2004-03-01 devnull extern char* vsmprint(char*, va_list);
70 aa738614 2004-03-01 devnull extern int sprint(char*, char*, ...);
71 aa738614 2004-03-01 devnull extern int fprint(int, char*, ...);
72 aa738614 2004-03-01 devnull extern int vfprint(int, char*, va_list);
73 aa738614 2004-03-01 devnull
74 aa738614 2004-03-01 devnull extern int runesprint(Rune*, char*, ...);
75 aa738614 2004-03-01 devnull extern int runesnprint(Rune*, int, char*, ...);
76 aa738614 2004-03-01 devnull extern int runevsnprint(Rune*, int, char*, va_list);
77 aa738614 2004-03-01 devnull extern Rune* runeseprint(Rune*, Rune*, char*, ...);
78 aa738614 2004-03-01 devnull extern Rune* runevseprint(Rune*, Rune*, char*, va_list);
79 aa738614 2004-03-01 devnull extern Rune* runesmprint(char*, ...);
80 aa738614 2004-03-01 devnull extern Rune* runevsmprint(char*, va_list);
81 aa738614 2004-03-01 devnull
82 aa738614 2004-03-01 devnull extern int fmtfdinit(Fmt*, int, char*, int);
83 aa738614 2004-03-01 devnull extern int fmtfdflush(Fmt*);
84 aa738614 2004-03-01 devnull extern int fmtstrinit(Fmt*);
85 aa738614 2004-03-01 devnull extern char* fmtstrflush(Fmt*);
86 aa738614 2004-03-01 devnull extern int runefmtstrinit(Fmt*);
87 aa738614 2004-03-01 devnull
88 aa738614 2004-03-01 devnull extern int quotestrfmt(Fmt *f);
89 aa738614 2004-03-01 devnull extern void quotefmtinstall(void);
90 aa738614 2004-03-01 devnull extern int (*fmtdoquote)(int);
91 aa738614 2004-03-01 devnull
92 aa738614 2004-03-01 devnull
93 aa738614 2004-03-01 devnull extern int fmtinstall(int, int (*)(Fmt*));
94 aa738614 2004-03-01 devnull extern int dofmt(Fmt*, char*);
95 aa738614 2004-03-01 devnull extern int fmtprint(Fmt*, char*, ...);
96 aa738614 2004-03-01 devnull extern int fmtvprint(Fmt*, char*, va_list);
97 aa738614 2004-03-01 devnull extern int fmtrune(Fmt*, int);
98 aa738614 2004-03-01 devnull extern int fmtstrcpy(Fmt*, char*);
99 aa738614 2004-03-01 devnull
100 aa738614 2004-03-01 devnull extern double fmtstrtod(const char *, char **);
101 aa738614 2004-03-01 devnull extern double fmtcharstod(int(*)(void*), void*);
102 aa738614 2004-03-01 devnull
103 aa738614 2004-03-01 devnull #ifdef __cplusplus
104 aa738614 2004-03-01 devnull }
105 aa738614 2004-03-01 devnull #endif
106 aa738614 2004-03-01 devnull #endif