Blame


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