I initially put in a patch for a class for Complex numbers, but people preferred that I just use the std::complex version. In the process of switching my code over to use std::complex I noticed a conflict with isinf(), isnan(), etc. The problem is that simply including: #include <complex> breaks the isinf(), isnan() functions (and some others I think). So now I'm getting compile errors in any header files which use these functions, such as WebGLFloatArray.h (which I need to include for music visualizer stuff). I'm a bit queasy about all the side-effects of simply including <complex> and am not even sure how to address the current situation, short of switching all of webkit over to using std::isinf, std::isnan, etc. Now I remember having similar problems with this in other codebases I've worked on, as the effects of <complex> seem to be viral... Anybody have any recommendations? Thanks, Chris
What specific errors are you getting? I don't understand why including a standard header would break other standard functions. -Sam On Wed, Feb 3, 2010 at 3:22 PM, Chris Rogers <crogers@google.com> wrote:
I initially put in a patch for a class for Complex numbers, but people preferred that I just use the std::complex version.
In the process of switching my code over to use std::complex I noticed a conflict with isinf(), isnan(), etc. The problem is that simply including:
#include <complex>
breaks the isinf(), isnan() functions (and some others I think). So now I'm getting compile errors in any header files which use these functions, such as WebGLFloatArray.h (which I need to include for music visualizer stuff). I'm a bit queasy about all the side-effects of simply including <complex> and am not even sure how to address the current situation, short of switching all of webkit over to using std::isinf, std::isnan, etc.
Now I remember having similar problems with this in other codebases I've worked on, as the effects of <complex> seem to be viral...
Anybody have any recommendations?
Thanks, Chris
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
Basically, if you include <complex> then it undefines the functions (or macros) for isinf(), isnan(), and others, and then expects you to use std::isinf(), std::isnan() instead. We use these functions in a number of places, so we'd need to figure out a reasonable solution. Or just go with my original class. On Wed, Feb 3, 2010 at 5:01 PM, Sam Weinig <sam.weinig@gmail.com> wrote:
What specific errors are you getting? I don't understand why including a standard header would break other standard functions.
-Sam
On Wed, Feb 3, 2010 at 3:22 PM, Chris Rogers <crogers@google.com> wrote:
I initially put in a patch for a class for Complex numbers, but people preferred that I just use the std::complex version.
In the process of switching my code over to use std::complex I noticed a conflict with isinf(), isnan(), etc. The problem is that simply including:
#include <complex>
breaks the isinf(), isnan() functions (and some others I think). So now I'm getting compile errors in any header files which use these functions, such as WebGLFloatArray.h (which I need to include for music visualizer stuff). I'm a bit queasy about all the side-effects of simply including <complex> and am not even sure how to address the current situation, short of switching all of webkit over to using std::isinf, std::isnan, etc.
Now I remember having similar problems with this in other codebases I've worked on, as the effects of <complex> seem to be viral...
Anybody have any recommendations?
Thanks, Chris
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
I would be in favor of fixing the existing uses by using explicit std::isinf. -Sam On Wed, Feb 3, 2010 at 5:07 PM, Chris Rogers <crogers@google.com> wrote:
Basically, if you include <complex> then it undefines the functions (or macros) for isinf(), isnan(), and others, and then expects you to use std::isinf(), std::isnan() instead. We use these functions in a number of places, so we'd need to figure out a reasonable solution. Or just go with my original class.
On Wed, Feb 3, 2010 at 5:01 PM, Sam Weinig <sam.weinig@gmail.com> wrote:
What specific errors are you getting? I don't understand why including a standard header would break other standard functions.
-Sam
On Wed, Feb 3, 2010 at 3:22 PM, Chris Rogers <crogers@google.com> wrote:
I initially put in a patch for a class for Complex numbers, but people preferred that I just use the std::complex version.
In the process of switching my code over to use std::complex I noticed a conflict with isinf(), isnan(), etc. The problem is that simply including:
#include <complex>
breaks the isinf(), isnan() functions (and some others I think). So now I'm getting compile errors in any header files which use these functions, such as WebGLFloatArray.h (which I need to include for music visualizer stuff). I'm a bit queasy about all the side-effects of simply including <complex> and am not even sure how to address the current situation, short of switching all of webkit over to using std::isinf, std::isnan, etc.
Now I remember having similar problems with this in other codebases I've worked on, as the effects of <complex> seem to be viral...
Anybody have any recommendations?
Thanks, Chris
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
<non-helpful-comment-which-should-probably-be-ignored> explicit namespaces may not play well with: http://trac.webkit.org/browser/trunk/JavaScriptCore/wtf/MathExtras.h </non-helpful-comment-which-should-probably-be-ignored> On Thu, Feb 4, 2010 at 1:06 PM, Darin Adler <darin@apple.com> wrote:
On Feb 4, 2010, at 12:01 PM, Sam Weinig wrote:
I would be in favor of fixing the existing uses by using explicit std::isinf.
Me too.
-- Darin
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
On Feb 4, 2010, at 1:09 PM, Eric Seidel wrote:
explicit namespaces may not play well with: http://trac.webkit.org/browser/trunk/JavaScriptCore/wtf/MathExtras.h
I think it’s a good point, and we should make sure MathExtras.h continues to help smooth over platform differences in such functions. In other words, be willing to change it to keep things working well. -- Darin
Does this issue have any bearing on the '"using" Statements' section of the style guidelines? http://webkit.org/coding/coding-style.html Would it make sense to adjust them in some way in response to this issue? --Chris On Thu, Feb 4, 2010 at 12:01 PM, Sam Weinig <sam.weinig@gmail.com> wrote:
I would be in favor of fixing the existing uses by using explicit std::isinf. -Sam
On Wed, Feb 3, 2010 at 5:07 PM, Chris Rogers <crogers@google.com> wrote:
Basically, if you include <complex> then it undefines the functions (or macros) for isinf(), isnan(), and others, and then expects you to use std::isinf(), std::isnan() instead. We use these functions in a number of places, so we'd need to figure out a reasonable solution. Or just go with my original class.
On Wed, Feb 3, 2010 at 5:01 PM, Sam Weinig <sam.weinig@gmail.com> wrote:
What specific errors are you getting? I don't understand why including a standard header would break other standard functions. -Sam
On Wed, Feb 3, 2010 at 3:22 PM, Chris Rogers <crogers@google.com> wrote:
I initially put in a patch for a class for Complex numbers, but people preferred that I just use the std::complex version. In the process of switching my code over to use std::complex I noticed a conflict with isinf(), isnan(), etc. The problem is that simply including: #include <complex> breaks the isinf(), isnan() functions (and some others I think). So now I'm getting compile errors in any header files which use these functions, such as WebGLFloatArray.h (which I need to include for music visualizer stuff). I'm a bit queasy about all the side-effects of simply including <complex> and am not even sure how to address the current situation, short of switching all of webkit over to using std::isinf, std::isnan, etc. Now I remember having similar problems with this in other codebases I've worked on, as the effects of <complex> seem to be viral... Anybody have any recommendations? Thanks, Chris
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
On Feb 4, 2010, at 1:26 PM, Chris Jerdonek wrote:
Does this issue have any bearing on the '"using" Statements' section of the style guidelines?
http://webkit.org/coding/coding-style.html
Would it make sense to adjust them in some way in response to this issue?
Sure, once we have a little more experience with it. I think it’s actually consistent — in headers you use "std::" and in implementation files you use "using namespace std". The only fuzzy part is what we’ll do for identifiers that in both C and C++ and are in the "std" namespace in C++. Should be simple to work out as we go, though. Then we can write down whatever we need to for the benefit of people working on the code in the future. -- Darin
participants (5)
-
Chris Jerdonek
-
Chris Rogers
-
Darin Adler
-
Eric Seidel
-
Sam Weinig