cache cpp defaults
[m6w6/ext-psi] / src / cpp.h
index b778b14b0179762acb3e9aae439e1d1555c7a88b..ae607c5101888292fd3cf2599fdf8bb87d04a3fd 100644 (file)
--- a/src/cpp.h
+++ b/src/cpp.h
 # define PSI_CPP_DEBUG 0
 #endif
 
-struct psi_cpp_tokiter {
-};
-
 struct psi_cpp {
-       HashTable *defs;
+       HashTable defs;
+       HashTable once;
        struct psi_parser *parser;
-       struct psi_plist *tokens;
+       struct {
+               struct psi_plist *iter;
+               struct psi_plist *next;
+       } tokens;
        const char *search;
        size_t index;
        unsigned level;
@@ -48,7 +49,6 @@ struct psi_cpp {
 };
 
 struct psi_cpp *psi_cpp_init(struct psi_parser *parser);
-bool psi_cpp_load_defaults(struct psi_cpp *cpp);
 bool psi_cpp_process(struct psi_cpp *cpp, struct psi_plist **tokens);
 void psi_cpp_free(struct psi_cpp **cpp_ptr);
 
@@ -61,21 +61,27 @@ bool psi_cpp_undef(struct psi_cpp *cpp, struct psi_token *tok);
 #define PSI_CPP_INCLUDE_NEXT 0x1
 #define PSI_CPP_INCLUDE_ONCE 0x2
 
-bool psi_cpp_include(struct psi_cpp *cpp, const char *file, unsigned flags);
+bool psi_cpp_include(struct psi_cpp *cpp, const struct psi_token *file, unsigned flags);
 
 void psi_cpp_tokiter_reset(struct psi_cpp *cpp);
 bool psi_cpp_tokiter_seek(struct psi_cpp *cpp, size_t index);
+#if PSI_CPP_DEBUG > 1
 void psi_cpp_tokiter_dump(int fd, struct psi_cpp *cpp);
+#endif
 struct psi_token *psi_cpp_tokiter_current(struct psi_cpp *cpp);
 size_t psi_cpp_tokiter_index(struct psi_cpp *cpp);
 void psi_cpp_tokiter_next(struct psi_cpp *cpp);
 void psi_cpp_tokiter_prev(struct psi_cpp *cpp);
 bool psi_cpp_tokiter_valid(struct psi_cpp *cpp);
 bool psi_cpp_tokiter_del_cur(struct psi_cpp *cpp, bool free_token);
+bool psi_cpp_tokiter_del_prev(struct psi_cpp *cpp, bool free_token);
 bool psi_cpp_tokiter_del_range(struct psi_cpp *cpp, size_t offset,
                size_t num_eles, bool free_tokens);
-bool psi_cpp_tokiter_ins_cur(struct psi_cpp *cpp, struct psi_token *tok);
-bool psi_cpp_tokiter_ins_range(struct psi_cpp *cpp, size_t offset,
+bool psi_cpp_tokiter_add(struct psi_cpp *cpp, struct psi_token *tok);
+bool psi_cpp_tokiter_add_cur(struct psi_cpp *cpp);
+bool psi_cpp_tokiter_add_range(struct psi_cpp *cpp,
+               size_t num_eles, void **eles);
+bool psi_cpp_tokiter_ins_range(struct psi_cpp *cpp,
                size_t num_eles, void **eles);
 bool psi_cpp_tokiter_defined(struct psi_cpp *cpp);
 bool psi_cpp_tokiter_expand(struct psi_cpp *cpp);