Closed
Bug 197205
Opened 22 years ago
Closed 21 years ago
remove null checks from GetStyleData callers
Categories
(Core :: CSS Parsing and Computation, defect, P3)
Core
CSS Parsing and Computation
Tracking
()
RESOLVED
FIXED
mozilla1.5alpha
People
(Reporter: dbaron, Assigned: dbaron)
References
Details
(Whiteboard: [patch])
Attachments
(2 files, 1 obsolete file)
(deleted),
application/x-gzip
|
brendan
:
approval1.4+
|
Details |
(deleted),
patch
|
roc
:
review+
roc
:
superreview+
|
Details | Diff | Splinter Review |
Now that bug 154751 has landed, we should remove all the null-checks after calls to GetStyleData. (It also might be worth converting to the templatized form, although I should probably double-check that that doesn't change codesize.)
Assignee | ||
Updated•22 years ago
|
Status: NEW → ASSIGNED
Priority: -- → P3
Target Milestone: --- → mozilla1.4beta
I think whoever does this should get r+sr-in-advance and then just go do it.
Assignee | ||
Updated•22 years ago
|
Target Milestone: mozilla1.4beta → mozilla1.5beta
Assignee | ||
Comment 2•22 years ago
|
||
This patch removes the null checks and also converts all callers to use the typesafe template. It modifies the template so that it works with nsRefPtr. It also changes the return type of nsIFrame::GetStyleData so that the result is returned instead of being an out parameter.
Assignee | ||
Updated•22 years ago
|
Attachment #122808 -
Flags: superreview?(roc+moz)
Attachment #122808 -
Flags: review?(roc+moz)
Assignee | ||
Updated•22 years ago
|
Target Milestone: mozilla1.5beta → mozilla1.4final
Assignee | ||
Comment 3•22 years ago
|
||
Comment on attachment 122808 [details] patch In this patch, there are nontrivial changes in nsStyleContext.h, nsIFrame.h, and nsFrame.{h,cpp}. I also cleaned up the SVG stuff in nsRuleNode.{h,cpp} -- I commented the struct in nsRuleNode.h in the style of other structs, and I applied the fix to bug 111815 to ComputeSVGData in nsRuleNode.cpp. Pretty much everything else was conversion to the templatized forms and removal of null checks.
Assignee | ||
Comment 4•22 years ago
|
||
Oh, there were also some places where I removed |.get()| from the end of the first parameter to the function template |GetStyleData| (no longer needed with this patch) or added |::| to the beginning of the call (good style everywhere, since it's needed within nsIFrame implementations).
I should have said this before you did all this work, but ... Since we're trying to get away from unnecessary out parameters, why not have a family of methods template <class Source> const nsStyleBorder* GetBorderStyle(const Source& source); template <class Source> const nsStylePadding* GetPaddingStyle(const Source& source); etc?
Assignee | ||
Comment 6•22 years ago
|
||
If we went that way, I'd rather they were just methods on nsIFrame and nsStyleContext (since there's no need for template type deduction). I might rather they be: const nsStyleBorder* StyleBorder() { return [...]; } etc. It's a little less general, but I guess I do prefer it. Maybe I'll do another pass over the tree. But first, what do others think of the idea?
Target Milestone: mozilla1.4final → mozilla1.5alpha
Assignee | ||
Comment 7•22 years ago
|
||
(It's worth noting that with the current code at least some compilers will optimize away the performance cost of having an out parameter rather than a return value. However, I think I like the syntax I propose in my previous comment better.)
Yes, it's only a syntactic issue, not a performance issue. I would slightly prefer the "GetBorderStyle()" naming scheme.
![]() |
||
Comment 9•22 years ago
|
||
And generate the function signatures using preprocessing? Sure, that could work.... We could also template GetStyleData on the return type, no? (That will mean simpler changes to callers, I guess; not sure whether I prefer it to having names like GetBorderStyle or whatever).
> We could also template GetStyleData on the return type No, you can't do that. > And generate the function signatures using preprocessing? We could, although we're not talking about much code.
Assignee | ||
Comment 11•22 years ago
|
||
This implements what is described above -- inline methods on nsIFrame and nsStyleContext called GetStyleBorder, GetStyleColor, etc. Otherwise it's pretty similar to the previous patch, although there was an additional spot or two where I couldn't resist a little cleanup.
Assignee | ||
Updated•22 years ago
|
Attachment #122808 -
Attachment is obsolete: true
Assignee | ||
Updated•22 years ago
|
Whiteboard: [patch]
Comment on attachment 122808 [details]
patch
wonderful. r+sr=roc+moz
Attachment #122808 -
Flags: superreview?(roc+moz)
Attachment #122808 -
Flags: superreview+
Attachment #122808 -
Flags: review?(roc+moz)
Attachment #122808 -
Flags: review+
Assignee | ||
Comment 13•21 years ago
|
||
Comment on attachment 123099 [details]
patch
This is relatively low-risk (and I'll double-check it again before I land), and
I think it's worth landing before we branch to make it easier to move things
back and forth between branch and trunk after we branch.
(I assume roc noted r+sr on the wrong attachment.)
Attachment #123099 -
Flags: approval1.4?
woops, yeah, I meant to r+sr the latest patch
Comment 15•21 years ago
|
||
Comment on attachment 123099 [details] patch a=brendan@mozilla.org for 1.4final. /be
Attachment #123099 -
Flags: approval1.4? → approval1.4+
Assignee | ||
Comment 16•21 years ago
|
||
Fix checked in to trunk, 2003-05-14 20:42 PDT.
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 17•20 years ago
|
||
Assignee | ||
Updated•20 years ago
|
Attachment #167802 -
Flags: superreview?(roc)
Attachment #167802 -
Flags: review?(roc)
Attachment #167802 -
Flags: superreview?(roc)
Attachment #167802 -
Flags: superreview+
Attachment #167802 -
Flags: review?(roc)
Attachment #167802 -
Flags: review+
Assignee | ||
Updated•20 years ago
|
Attachment #167802 -
Attachment description: clean up callers of old api that have crept back in → clean up callers of old api that have crept back in (checked in 2004-12-03 22:31 -0800)
You need to log in
before you can comment on or make changes to this bug.
Description
•