On Sat, May 5, 2012 at 4:38 PM, Konrad Eisele <eiselekd@xxxxxxxxx> wrote: > > I appended a diff for review. Is this kind of interface ok? > This is kind of not a patch to apply, rather I want to avoid to put > effort in it and you telling me later I am too intrusive...:). So > can you give a ok or comment... > > Interface so far: > struct preprocess_hook { > def : called when #define is processed Why do you need #define hooks? The macro symbol should have pos and macro body already. > args_beg : called before argument expasnion > args_end : called after argument expasnion > body_beg : called before body expansion > body_end : called after body expansion I am wondering why is do you need 4 call backs for macro expand instead of just one like the patch I post previously. That macro expand give you the name of the macro need to be expand and the replacement list. My guess is that you want the end position of the macro before expand. That can be add to the macro expand hook. Will that be sufficient? > post : called after preprocess I don't think the post call back is needed. You can call the preprocessor directly. It will return when it complete. Then you can do your post work. You can invoke the parser separately. The sparse wrapper function does it all in one function but that did not stop you it step by step if you wants to. > All of there I found are needed. There might be more to be added... > > I also introduce a tokentype TOKEN_M_EMPTY so that I can track > empty expansion. To filter these out again I add the post hook. What purpose does the token_m_empty if you filter those token later? Rember where in the stream there is an invisible macro? Chris -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html