Skip to content

Commit

Permalink
3.09.00
Browse files Browse the repository at this point in the history
  • Loading branch information
rparolin committed Apr 2, 2018
1 parent 328a7f0 commit 84127fd
Show file tree
Hide file tree
Showing 33 changed files with 2,160 additions and 2,065 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ build_bench
bench.bat
build.bat
.p4config
EASTL.psf

## CMake generated files
CMakeCache.txt
Expand Down
43 changes: 15 additions & 28 deletions doc/EASTL FAQ.html
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ <h2><br>
<li>Smart pointers</li>
<li>Type traits</li>
</ul>
<p class="faq-answer">Of these, the last two (smart pointers and type traits) do not have analogs in standard C++. With respect to the other items, EASTL provides extensions and optimizations over the equivalents in standard C++ STL.</p>
<p class="faq-answer">EASTL provides extensions and optimizations over the equivalents in standard C++ STL.</p>
<p class="faq-answer">EASTL is a professional-level implementation which outperforms commercial implementations (where functionality overlaps) and is significantly easier to read and debug.</p>
<p class="faq-question"> <a name="Info.2"></a>Info.2
What uses are EASTL suitable for?</p>
Expand Down Expand Up @@ -525,6 +525,10 @@ <h2><br>
<li>utility</li>
<li>functional</li>
<li>iterator</li>
<li>string_view</li>
<li>variant</li>
<li>any</li>
<li>optional</li>
</ul>
<p>EASTL additions/amendments to std STL</p>
<ul style="margin-top: 0in;" type="disc">
Expand Down Expand Up @@ -573,6 +577,7 @@ <h2><br>
<li>fixed_hash_multiset</li>
<li>fixed_hash_map</li>
<li>fixed_hash_multimap</li>
<li>fixed_function</li>
<li>vector_set</li>
<li>vector_multiset</li>
<li>vector_map</li>
Expand Down Expand Up @@ -615,40 +620,20 @@ <h2><br>
<th scope="col">Status</th>
<th scope="col">Notes</th>
</tr>
<tr>
<td>GCC 2.9x</td>
<td>Supported</td>
<td>However, GCC 2.9x has some issues that you may run into that cause you to use EASTL facilities differently than a fully compliant compiler would allow.</td>
</tr>
<tr>
<td>GCC 3.x+</td>
<td>Supported</td>
<td>This compiler is used by the Mac OSX, and Linux platforms.</td>
</tr>
<tr>
<td>MSVC 6.0</td>
<td>Not supported</td>
<td>This compiler is too weak in the area of template and namespace support.</td>
</tr>
<tr>
<td>MSVC 7.0+</td>
<td>Supported</td>
<td>This compiler is used by the PC and Win CE platforms</td>
</tr>
<tr>
<td>Borland 5.5+</td>
<td>Not supported</td>
<td>Borland can successfully compile many parts of EASTL, but not all parts.</td>
<td>Not Supported</td>
<td>Not officially supported due to migration to Clang.</td>
</tr>
<tr>
<td>EDG</td>
<td>MSVC 12.0+</td>
<td>Supported</td>
<td>This is the compiler front end to some other compilers, such as Intel, and Comeau C++.</td>
<td>This compiler is used by the Windows based platforms</td>
</tr>
<tr>
<td>IBM XL 5.0+</td>
<td>Clang 4.0+</td>
<td>Supported</td>
<td>This compiler is sometimes used by PowerPC platforms such as Mac OSX and possibly future console platforms.</td>
<td>This compiler is used by the Linux based platforms</td>
</tr>
</table>
</blockquote>
Expand Down Expand Up @@ -718,10 +703,12 @@ <h2><br>
<li>The C++ standard, which is fairly readable. You can buy an electronic version for about $18 and in the meantime you can make do with draft revisions of it off the Internet by searching for &quot;c++ draft standard&quot;.</li>
<li>STL performance tips, by Pete Isensee</li>
<li>STL algorithms vs. hand-written loops, by Scott Meyers.</li>
<li>cppreference.com</li>
<li>isocpp.org<li>
</ul>
<p class="faq-question"><a name="Info.9"></a>Info.9
What is the legal status of EASTL?</p>
<p class="faq-answer">EASTL is usable for all uses within Electronic Arts, both for internal usage and for shipping products for all platforms. All source code was written by a single EA engineer. Any&nbsp;externally derived code would be explicitly stated as such and approved by the legal department if such code ever gets introduced. As of EASTL v1.0, the red_black_tree.cpp file contains two functions derived from the original HP STL and have received EA legal approval for usage in any product.</p>
<p class="faq-answer">EASTL is usable for all uses within Electronic Arts, both for internal usage and for shipping products for all platforms. Any&nbsp;externally derived code would be explicitly stated as such and approved by the legal department if such code ever gets introduced. As of EASTL v1.0, the red_black_tree.cpp file contains two functions derived from the original HP STL and have received EA legal approval for usage in any product.</p>
<p class="faq-question"><a name="Info.10"></a>Info.10
Does EASTL deal with compiler exception handling settings?</p>
<p class="faq-answer">EASTL has automatic knowledge of the compiler's enabling/disabling of exceptions. If your compiler is set to disable exceptions, EASTL automatically detects so and executes without them. Also, you can force-enable or force-disable that setting to override the automatic behavior by #defining EASTL_EXCEPTIONS_ENABLED to 0 or 1. See EASTL's config.h for more information.</p>
Expand Down
4 changes: 2 additions & 2 deletions doc/EASTL Modules.html
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ <h2>Module Behaviour</h2>
<td style="text-align: center;">-</td>
<td style="text-align: center;">1</td>
<td style="text-align: center;">1</td>
<td style="text-align: center;">1</td>
<td style="text-align: center;">n</td>
<td style="text-align: center;">n+</td>
</tr>
<tr>
Expand All @@ -290,7 +290,7 @@ <h2>Module Behaviour</h2>
<td style="text-align: center;">-</td>
<td style="text-align: center;">1</td>
<td style="text-align: center;">1</td>
<td style="text-align: center;">1</td>
<td style="text-align: center;">n</td>
<td style="text-align: center;">n log(n)</td>
</tr>
<tr>
Expand Down
30 changes: 16 additions & 14 deletions doc/EASTL.natvis
Original file line number Diff line number Diff line change
Expand Up @@ -49,30 +49,32 @@
<Type Name="eastl::basic_string&lt;char,*&gt;">
<DisplayString>{mPair.mFirst.heap.mpBegin,s}</DisplayString>
<Expand>
<Item Name="length" Condition="mPair.mFirst.sso.mpBegin != mPair.mFirst.sso.mBuffer">mPair.mFirst.heap.mpEnd - mPair.mFirst.heap.mpBegin</Item>
<Item Name="capacity" Condition="mPair.mFirst.sso.mpBegin != mPair.mFirst.sso.mBuffer">mPair.mFirst.heap.mpCapacity - mPair.mFirst.heap.mpBegin</Item>
<Item Name="value" Condition="mPair.mFirst.sso.mpBegin != mPair.mFirst.sso.mBuffer">mPair.mFirst.heap.mpBegin,sb</Item>
<Item Name="length" Condition="!!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">mPair.mFirst.heap.mnSize</Item>
<Item Name="capacity" Condition="!!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">(mPair.mFirst.heap.mnCapacity
&amp; ~kHeapMask)</Item>
<Item Name="value" Condition="!!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">mPair.mFirst.heap.mpBegin,sb</Item>

<Item Name="length" Condition="mPair.mFirst.sso.mpBegin == mPair.mFirst.sso.mBuffer">mPair.mFirst.sso.mnSize</Item>
<Item Name="capacity" Condition="mPair.mFirst.sso.mpBegin == mPair.mFirst.sso.mBuffer">SSOLayout::SSO_SIZE_IN_BYTES-0</Item>
<Item Name="value" Condition="mPair.mFirst.sso.mpBegin == mPair.mFirst.sso.mBuffer">mPair.mFirst.sso.mpBegin,sb</Item>
<Item Name="length" Condition="!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">mPair.mFirst.sso.mnSize</Item>
<Item Name="capacity" Condition="!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">SSOLayout::SSO_CAPACITY</Item>
<Item Name="value" Condition="!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">mPair.mFirst.sso.mData,sb</Item>

<Item Name="uses heap">mPair.mFirst.sso.mpBegin != mPair.mFirst.sso.mBuffer</Item>
<Item Name="uses heap">!!(mPair.mFirst.sso.mnSize &amp; kSSOMask)</Item>
</Expand>
</Type>

<Type Name="eastl::basic_string&lt;wchar_t,*&gt;">
<DisplayString>{mPair.mFirst.heap.mpBegin,su}</DisplayString>
<Expand>
<Item Name="length" Condition="mPair.mFirst.sso.mpBegin != mPair.mFirst.sso.mBuffer">mPair.mFirst.heap.mpEnd - mPair.mFirst.heap.mpBegin</Item>
<Item Name="capacity" Condition="mPair.mFirst.sso.mpBegin != mPair.mFirst.sso.mBuffer">mPair.mFirst.heap.mpCapacity - mPair.mFirst.heap.mpBegin</Item>
<Item Name="value" Condition="mPair.mFirst.sso.mpBegin != mPair.mFirst.sso.mBuffer">mPair.mFirst.heap.mpBegin,sub</Item>
<Item Name="length" Condition="!!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">mPair.mFirst.heap.mnSize</Item>
<Item Name="capacity" Condition="!!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">(mPair.mFirst.heap.mnCapacity
&amp; ~kHeapMask)</Item>
<Item Name="value" Condition="!!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">mPair.mFirst.heap.mpBegin,sb</Item>

<Item Name="length" Condition="mPair.mFirst.sso.mpBegin == mPair.mFirst.sso.mBuffer">mPair.mFirst.sso.mnSize</Item>
<Item Name="capacity" Condition="mPair.mFirst.sso.mpBegin == mPair.mFirst.sso.mBuffer">SSOLayout::SSO_SIZE_IN_BYTES-0</Item>
<Item Name="value" Condition="mPair.mFirst.sso.mpBegin == mPair.mFirst.sso.mBuffer">mPair.mFirst.sso.mpBegin,sub</Item>
<Item Name="length" Condition="!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">mPair.mFirst.sso.mnSize</Item>
<Item Name="capacity" Condition="!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">SSOLayout::SSO_CAPACITY</Item>
<Item Name="value" Condition="!(mPair.mFirst.sso.mnSize &amp; kSSOMask)">mPair.mFirst.sso.mData,sb</Item>

<Item Name="uses heap">mPair.mFirst.sso.mpBegin != mPair.mFirst.sso.mBuffer</Item>
<Item Name="uses heap">!!(mPair.mFirst.sso.mnSize &amp; kSSOMask)</Item>
</Expand>
</Type>

Expand Down
7 changes: 4 additions & 3 deletions include/EASTL/any.h
Original file line number Diff line number Diff line change
Expand Up @@ -379,9 +379,10 @@ namespace eastl
any(ValueType&& value,
typename eastl::enable_if<!eastl::is_same<typename eastl::decay<ValueType>::type, any>::value>::type* = 0)
{
static_assert(is_copy_constructible<decay_t<ValueType>>::value, "ValueType must be copy-constructible");
storage_handler<decay_t<ValueType>>::construct(m_storage, eastl::forward<ValueType>(value));
m_handler = &storage_handler<ValueType>::handler_func;
typedef decay_t<ValueType> DecayedValueType;
static_assert(is_copy_constructible<DecayedValueType>::value, "ValueType must be copy-constructible");
storage_handler<DecayedValueType>::construct(m_storage, eastl::forward<ValueType>(value));
m_handler = &storage_handler<DecayedValueType>::handler_func;
}

template <class T, class... Args>
Expand Down
Loading

0 comments on commit 84127fd

Please sign in to comment.