Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e0367a2dd7 | ||
|
|
1e0f1119e2 | ||
|
|
6d6314a924 | ||
|
|
e0b881d036 | ||
|
|
d24ff6c3d2 | ||
|
|
ef17aac046 | ||
|
|
83b63a9138 |
@@ -1,3 +1,29 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;" />
|
||||
<meta name="keywords" content="EPICS, EPICSv4" />
|
||||
<title>EPICS V4 pvData C++ Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../base.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../../epicsv4.css" />
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Release 6.0.1</h1>
|
||||
|
||||
<p>The changes since release 6.0.0 are:</p>
|
||||
|
||||
<ul>
|
||||
<li>Fix "Problem building pvDataCPP for win32-x86-mingw" (issue #42)</li>
|
||||
<li>In src/misc/bitSet.cpp #include <algorithm> required for MSVS 2015</li>
|
||||
<li>In testApp/misc/testTypeCast.cpp print (u)int8 values as integers</li>
|
||||
<li>Minor documentation updates</li>
|
||||
</ul>
|
||||
|
||||
<h1>Release 6.0.0</h1>
|
||||
|
||||
<p>The main changes since release 5.0.4 are:</p>
|
||||
@@ -211,8 +237,8 @@ it was necessary to have code like:</p>
|
||||
|
||||
<p>A new template getField method has been added to Structure</p>
|
||||
|
||||
<p>template<typename FT >
|
||||
std::tr1::shared_ptr< const FT > getField(std::string const &fieldName) const </p>
|
||||
<p>template<typename FT->
|
||||
std::tr1::shared_ptr< const FT-> getField(std::string const &fieldName) const </p>
|
||||
|
||||
<p>Can be used, for example, as follows:</p>
|
||||
|
||||
@@ -313,3 +339,7 @@ This is prototype and is subject to debate.</p>
|
||||
<h1>Release 3.0.2</h1>
|
||||
|
||||
<p>This was the starting point for RELEASE_NOTES</p>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
Release 6.0.1
|
||||
=============
|
||||
|
||||
The changes since release 6.0.0 are:
|
||||
|
||||
* Fix "Problem building pvDataCPP for win32-x86-mingw" (issue #42)
|
||||
* In src/misc/bitSet.cpp #include <algorithm> required for MSVS 2015
|
||||
* In testApp/misc/testTypeCast.cpp print (u)int8 values as integers
|
||||
* Minor documentation updates
|
||||
|
||||
Release 6.0.0
|
||||
=============
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<div class="head">
|
||||
<h1>EPICS pvDataCPP</h1>
|
||||
|
||||
<h2 class="nocount">Release 6.0.0 - 2016.08.01</h2>
|
||||
<h2 class="nocount">Release 6.0.1 - 2016-09-14</h2>
|
||||
|
||||
<dl>
|
||||
<dt>Editors:</dt>
|
||||
@@ -45,10 +45,6 @@
|
||||
<dd>Matej Sekoranja, CosyLab</dd>
|
||||
<dd>David Hickin, Diamond Light Source</dd>
|
||||
</dl>
|
||||
|
||||
<p class="copyright">This product is made available subject to acceptance of the <a
|
||||
href="http://epics-pvdata.sourceforge.net/LICENSE.html">EPICS open source
|
||||
license.</a></p>
|
||||
<hr />
|
||||
</div>
|
||||
|
||||
@@ -66,7 +62,7 @@ V4 control system programming environment:<br />
|
||||
|
||||
<h2 class="nocount">Status of this Document</h2>
|
||||
|
||||
<p>This is the 01-August-2016 version for the 6.0.0 release of the
|
||||
<p>This is the 14-September-2016 version for the 6.0.1 release of the
|
||||
C++ implementation of pvData.
|
||||
</p>
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <stdio.h>
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
#include <algorithm>
|
||||
|
||||
#include <epicsMutex.h>
|
||||
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
// gently nudge the compiler to inline our wrappers
|
||||
// Warning: Only use this when the template body is *small*.
|
||||
// You have been warned!
|
||||
#if defined(__GNUC__) && __GNUC__>=3
|
||||
#if defined(__MINGW32__)
|
||||
# define FORCE_INLINE inline
|
||||
#elif defined(__GNUC__) && __GNUC__>=3
|
||||
# define FORCE_INLINE __attribute__((always_inline)) inline
|
||||
#elif defined(_MSC_VER)
|
||||
# define FORCE_INLINE __forceinline
|
||||
|
||||
@@ -29,6 +29,13 @@
|
||||
using std::string;
|
||||
|
||||
namespace {
|
||||
// Mangle value to be printable as per print_convolute<>
|
||||
template<typename T>
|
||||
inline
|
||||
typename epics::pvData::detail::print_convolute<T>::return_t
|
||||
print(T v) {
|
||||
return epics::pvData::detail::print_convolute<T>::op(v);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
struct testequal {
|
||||
@@ -54,24 +61,24 @@ namespace {
|
||||
//actual = ::epics::pvData::detail::cast_helper<TO,FROM>::op(inp);
|
||||
} catch(std::runtime_error& e) {
|
||||
msg<<"Failed to cast "
|
||||
<<inp<<" ("<<typeid(FROM).name()<<") -> "
|
||||
<<expect<<" ("<<typeid(TO).name()<<")\n Error: "
|
||||
<<print(inp)<<" ("<<typeid(FROM).name()<<") -> "
|
||||
<<print(expect)<<" ("<<typeid(TO).name()<<")\n Error: "
|
||||
<<typeid(e).name()<<"("<<e.what()<<")";
|
||||
testFail("%s", msg.str().c_str());
|
||||
return;
|
||||
}
|
||||
if(!testequal<TO>::op(actual, expect)) {
|
||||
msg<<"Failed cast gives unexpected value "
|
||||
<<inp<<" ("<<typeid(FROM).name()<<") -> "
|
||||
<<expect<<" ("<<typeid(TO).name()<<") yields: "
|
||||
<<actual;
|
||||
<<print(inp)<<" ("<<typeid(FROM).name()<<") -> "
|
||||
<<print(expect)<<" ("<<typeid(TO).name()<<") yields: "
|
||||
<<print(actual);
|
||||
testFail("%s", msg.str().c_str());
|
||||
return;
|
||||
}
|
||||
msg<<"cast "
|
||||
<<inp<<" ("<<typeid(FROM).name()<<") -> "
|
||||
<<expect<<" ("<<typeid(TO).name()<<") yields: "
|
||||
<<actual;
|
||||
<<print(inp)<<" ("<<typeid(FROM).name()<<") -> "
|
||||
<<print(expect)<<" ("<<typeid(TO).name()<<") yields: "
|
||||
<<print(actual);
|
||||
testPass("%s", msg.str().c_str());
|
||||
return;
|
||||
}
|
||||
@@ -86,14 +93,14 @@ namespace {
|
||||
try {
|
||||
actual = ::epics::pvData::castUnsafe<TO,FROM>(inp);
|
||||
msg<<"Failed to generate expected error "
|
||||
<<inp<<" ("<<typeid(FROM).name()<<") -> ("
|
||||
<<print(inp)<<" ("<<typeid(FROM).name()<<") -> ("
|
||||
<<typeid(TO).name()<<") yields: "
|
||||
<<actual;
|
||||
testFail("%s", msg.str().c_str());
|
||||
return;
|
||||
} catch(std::runtime_error& e) {
|
||||
msg<<"Got expected error "
|
||||
<<inp<<" ("<<typeid(FROM).name()<<") -> ("
|
||||
<<print(inp)<<" ("<<typeid(FROM).name()<<") -> ("
|
||||
<<typeid(TO).name()<<") fails with: "
|
||||
<<e.what();
|
||||
testPass("%s", msg.str().c_str());
|
||||
|
||||
Reference in New Issue
Block a user