lxrgmr
[build-config.git] / src / config / lxrgmr-code / util.h
blob7fd09612371379570ebc5bde4bcd95e98b2f7f26
1 /************************************************************************
2 * $PROJECT Project
4 * (c) Copyright $YEAR, $COMPANY_EN. Inc., $CITY_EN, $COUNTRY_EN
5 * (c) Copyright $YEAR, $COMPANY_CN. Inc., $CITY_CN, $COUNTRY_CN
6 ************************************************************************
7 * filename: util.h
8 * function: TOKEN_IDÄ£¿é¡£
9 * createdate: $DATE
10 * author: $AUTHOR
11 * note£º
14 ************************************************************************/
15 /* Modify record */
16 /************************************************************************
17 * date: $DATE
18 * author: $AUTHOR
19 * note:
21 ************************************************************************/
23 #ifndef __UTIL_H__
24 #define __UTIL_H__
26 //#include "type.h"
28 #include "foo.h"
30 #include "expr.h"
31 #include "src/symbol.h"
33 //extern struct expr *sym_env_list;
35 //#define expr_list_for_each_sym(l, e, s) \
36 // for (e = (l); e && (s = e->right.sym); e = e->left.expr)
38 /* Type Definations */
40 struct gstr {
41 size_t len;
42 char *s;
44 * when max_width is not zero long lines in string s (if any) get
45 * wrapped not to exceed the max_width value
47 int max_width;
51 * buffer for T_WORD/T_XXX_CONST/T_WORD_QUOTES ...
53 typedef struct __tag_CACHING_STR {
54 char *text;
55 int text_size, text_asize;
56 } CACHING_STR, *PCACHING_STR;
58 /* Public Variables and Functions */
60 /* lxr caching buffer */
61 extern CACHING_STR strbuff;
65 /* memory allocation function set */
66 extern void *xmalloc(size_t size);
67 extern void *xcalloc(size_t nmemb, size_t size);
68 extern void *xrealloc(void *p, size_t size);
69 extern char *xstrdup(const char *s);
70 extern char *xstrndup(const char *s, size_t n);
71 extern void xfree(const char *s);
73 extern struct gstr str_new(void);
74 extern void str_free(struct gstr *gs);
75 extern void str_append(struct gstr *gs, const char *s);
76 extern void str_printf(struct gstr *gs, const char *fmt, ...);
77 extern const char *str_get(struct gstr *gs);
79 extern int file_write_dep(const char *name);
80 extern struct file *file_lookup(const char *name);
82 /* lxr state stack functions */
83 extern void STATE_INIT (int state);
84 extern void STATE_SET (int state);
85 extern void STATE_ENTER (int state);
86 extern int STATE_RESTORE (void);
88 /* caching string buffer for T_WORD and others */
90 extern int is_empty_string (CACHING_STR *pstr_cache);
91 extern int is_unallocated_string (CACHING_STR *pstr_cache);
92 extern void init_string (CACHING_STR *pstr_cache);
93 extern void new_string (CACHING_STR *pstr_cache);
94 extern void append_string (CACHING_STR *pstr_cache, const char *str, int size);
95 extern void alloc_string (CACHING_STR *pstr_cache, const char *str, int size);
96 extern int const_string (CACHING_STR *pstr_cache, int token);
97 extern CACHING_STR * dup_string (CACHING_STR *pstr_cache, CACHING_STR *p_dst_str_cache);
98 extern void free_string (CACHING_STR *pstr_cache);
102 #endif /* __UTIL_H__ */