Blame


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