Re: [pygccxml-development] Printing declarations...
Brought to you by:
mbaas,
roman_yakovenko
From: Matthias B. <ba...@ir...> - 2006-03-22 10:57:33
|
Roman Yakovenko wrote: >>> 3. is decl_printer_t should be implemented in terms of __str__ method, or may be >>> __str__ method should be implemented in terms of decl_printer_t >> I think they serve different purposes. __str__ should yield a short but >> unique human-readable representation of the object (like an id so that >> the user knows where to find this declaration in his source code) >> whereas decl_printer_t can be used to inspect an entire declaration >> tree. The decl_printer can be used by a new user to find out how >> pyplusplus works and how it stores its data. > > Clear. Can you put this paragraph somewhere in documentation? I added some notes to the doc string of the decl_printer and the default __str__ method in declaration_t. >>> 4. How you configure the a amount of printed information. >> It's ok to be able to configure decl_printer_t, but in my opinion >> __str__ doesn't need to be configured. > > Right > > Thanks. I understand what you want/need. I think that this is a good > functionality. > Can you add it to pygccxml.declarations class hierarchy? I will add some test > code for it. I've just committed the changes. I hope I didn't miss any declaration. With those changes my query log file has become much more readable. For example, a line like the following in my pyplusplus script: mod.Methods("operator()", retval=["float &", "double &"]).exclude() will produce the following snippet in the log file: ---------------------------------------------------------------------- pypp_setup.py, 417: mod.Methods("operator()", retval=["float &", "double &"]).exclude() Filter: (name=='operator()') & ((retval==float &) | (retval==double &)) & (type==METHOD|FUNCTION|CONSTRUCTOR) & (anyparent=='::') -> float & MFloatPoint::operator()(unsigned int i) [member_operator] -> float & MFloatMatrix::operator()(unsigned int row, unsigned int col) [member_operator] -> float & MFloatVector::operator()(unsigned int i) [member_operator] -> float & MColor::operator()(unsigned int i) [member_operator] -> double & MMatrix::operator()(unsigned int row, unsigned int col) [member_operator] -> double & MVector::operator()(unsigned int i) [member_operator] -> double & MPoint::operator()(unsigned int i) [member_operator] (7 declarations) ---------------------------------------------------------------------- Here the user can exactly see how pyplusplus has interpreted a particular query. The first line is a reference to the user's source script. The second line is the generated filter expression and the remaining lines show the result of the query. I'm still planning on adding another similar log file that is not based on queries but on decoration operations. Each such operation will then output a line for each declaration it was applied to. Then you can just grep for a particular declaration to obtain a "history" on what has happened to that declaration. - Matthias - |