<div dir="ltr">Hi Paul,<br><br>Thank you very much for your quick response. Based on your suggestion, I had a relook into the passrefptr.h file. In this file T refers to a datatype/class which will be supplied during instantiation of the template in many CPP files and the type is unknown inside the template class. So we cannot include the definition of all the classes which will be supplied during instantiation. I am feeling that webkit cannot be compiled with ARM RVCT compiler due to its limitation. Please suggest if there is any other alternative.<br>
<br>Regards,<br>Shaddu<br><br><div class="gmail_quote">2008/9/5 Paul Pedriana <span dir="ltr">&lt;<a href="mailto:ppedriana@gmail.com">ppedriana@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">



  

<div bgcolor="#ffffff" text="#000000">
It looks to me like the problem is due to a template implementation not
being visible to the code being compiled. GCC and VC++ don&#39;t enforce
the C++ standard strictly here, and the CodeWarrior and EDG-based
compilers correctly flag this as invalid code. VC++ compiles templates
by essentially converting the entire declaration into a macro which
gets expanded only at the final front-end compilation stage, and thus
it doesn&#39;t templated code until later (which in fact the templated type
has become fully visible). GCC is somewhat like VC++ but seems to do a
certain amount of first-pass inspection of the template declaration
that catches some misusage within the template declaration itself, but
it still doesn&#39;t check or compile the template code upon its usage like
CodeWarrior and GCC do. The fix is to make the template declaration (as
opposed to a forward declaration) fully visible at the time of its
usage. <br>
<br>
I&#39;m saying this based on experience and not because I have debugged
this particular problem myself. So it could possibly be a different
issue. But the error messages below, and the fact that it is occurring
with EDG and not GCC and VC++, and because it involves templates rings
all the bells of this problem.<br>
<br>
There is a related C++ problem which is more subtle. Consider this code
that the compiler sees in the given order:<br>
<br>
&nbsp;&nbsp;&nbsp; 1) Declare template X<br>
&nbsp;&nbsp;&nbsp; 2) Use template X<br>
&nbsp;&nbsp;&nbsp; 3) Declare specialization of template X<br>
<br>
Most compilers incorrectly compile the specialization (line 3) into the
usage at line 2. But the standard requires that the specialization be
ignored, since it was not visible at the time line 2 was compiled. You
can see why it is that a compiler which treats templates much like
macros will get this wrong, as they don&#39;t compile line 2 until later
and simply apply both the &#39;macros&#39; declared at line 1 and 3.<br>
<br>
Paul<br>
<br>
<br>
<blockquote type="cite"><div><div></div><div class="Wj3C7c">
  <div dir="ltr">Hi Webkit Forum,<br>
  <br>
I am getting compilation errors while compiling webcore and
javascriptcore with ARM RVCT compiler version 2.2 build 559. This is my
maiden attempt to build webkit with RVCT compiler.<br>
Three errors are appearing while compiling many source files. I have
provided Attr.cpp as an example compilation.<br>
When compiling k:\webkit/webcore/dom/Attr.cpp following 3 errors are
displayed<br>
1) &quot;E:\WebKit\CygWin\home\output\include/JavaScriptCore/PassRefPtr.h&quot;,
line 44: Error:&nbsp; #393: pointer ptr to incomplete class type is not
allowed ALWAYS_INLINE ~PassRefPtr() { if (T* ptr = m_ptr)
ptr-&gt;deref(); }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
^<br>
2) &quot;E:\WebKit\CygWin\home\output\include/JavaScriptCore/ListHashSet.h&quot;,
line 445: Error:&nbsp; #254: typename is not allowed<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typename ImplType::iterator it = m_impl.template
find&lt;ValueType, Translator&gt;(value);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^<br>
3) &quot;E:\WebKit\CygWin\home\output\include/JavaScriptCore/RefPtr.h&quot;, line
58: Error:&nbsp; #20: identifier &quot;adoptRef&quot; is undefined<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PassRefPtr&lt;T&gt; release() { PassRefPtr&lt;T&gt; tmp =
adoptRef(m_ptr); m_ptr = 0; return tmp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
^<br>
Please help to resolve this problem.<br>
  <br>
Regards,<br>
Shaddu<br>
  </div>
  </div></div><pre><hr size="4" width="90%">
_______________________________________________
webkit-dev mailing list
<a href="mailto:webkit-dev@lists.webkit.org" target="_blank">webkit-dev@lists.webkit.org</a>
<a href="http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev" target="_blank">http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev</a>
  </pre>
</blockquote>
<br>
</div>

</blockquote></div><br></div>