add == for introspection; == of PVField is done in base class via convert.
Make monitorQueue compatible with monitor, i.e. shared_pointer
This commit is contained in:
@@ -7,6 +7,13 @@
|
||||
|
||||
namespace epics { namespace pvData {
|
||||
|
||||
// PVXXX object comparison
|
||||
|
||||
bool operator==(PVField& left, PVField& right)
|
||||
{
|
||||
return getConvert()->equals(left,right);
|
||||
}
|
||||
|
||||
// Introspection object comparision
|
||||
|
||||
/** Field equality conditions:
|
||||
|
||||
@@ -109,9 +109,9 @@ void Convert::getFullName(StringBuilder buf,PVField * pvField)
|
||||
}
|
||||
}
|
||||
|
||||
bool Convert::equals(PVField *a,PVField *b)
|
||||
bool Convert::equals(PVField &a,PVField &b)
|
||||
{
|
||||
return convertEquals(a,b);
|
||||
return convertEquals(&a,&b);
|
||||
}
|
||||
|
||||
void Convert::getString(StringBuilder buf,PVField * pvField,int indentLevel)
|
||||
|
||||
@@ -248,14 +248,4 @@ namespace epics { namespace pvData {
|
||||
}
|
||||
}
|
||||
|
||||
bool BasePVStructureArray::operator==(PVField &pvField)
|
||||
{
|
||||
return getConvert()->equals(this,&pvField);
|
||||
}
|
||||
|
||||
bool BasePVStructureArray::operator!=(PVField &pvField)
|
||||
{
|
||||
return !(getConvert()->equals(this,&pvField));
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
@@ -31,8 +31,6 @@ namespace epics { namespace pvData {
|
||||
StructureArrayData *data);
|
||||
virtual int put(int offset,int length,
|
||||
PVStructurePtrArray from, int fromOffset);
|
||||
virtual bool operator==(PVField &pv);
|
||||
virtual bool operator!=(PVField &pv);
|
||||
virtual void shareData( PVStructurePtrArray value,int capacity,int length);
|
||||
virtual void serialize(ByteBuffer *pbuffer,
|
||||
SerializableControl *pflusher) const;
|
||||
|
||||
@@ -42,8 +42,6 @@ public:
|
||||
SerializableControl *pflusher) const;
|
||||
virtual void deserialize(ByteBuffer *pbuffer,
|
||||
DeserializableControl *pflusher);
|
||||
virtual bool operator==(PVField& pv) ;
|
||||
virtual bool operator!=(PVField& pv) ;
|
||||
private:
|
||||
T value;
|
||||
};
|
||||
@@ -78,18 +76,6 @@ void BasePVScalar<T>::deserialize(ByteBuffer *pbuffer,
|
||||
value = pbuffer->get<T>();
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
bool BasePVScalar<T>::operator==(PVField& pvField)
|
||||
{
|
||||
return getConvert()->equals(this, &pvField);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
bool BasePVScalar<T>::operator!=(PVField& pvField)
|
||||
{
|
||||
return !(getConvert()->equals(this, &pvField));
|
||||
}
|
||||
|
||||
typedef BasePVScalar<bool> BasePVBoolean;
|
||||
typedef BasePVScalar<int8> BasePVByte;
|
||||
typedef BasePVScalar<int16> BasePVShort;
|
||||
@@ -115,8 +101,6 @@ public:
|
||||
DeserializableControl *pflusher);
|
||||
virtual void serialize(ByteBuffer *pbuffer,
|
||||
SerializableControl *pflusher, int offset, int count) const;
|
||||
virtual bool operator==(PVField& pv) ;
|
||||
virtual bool operator!=(PVField& pv) ;
|
||||
private:
|
||||
String value;
|
||||
};
|
||||
@@ -160,22 +144,6 @@ void BasePVString::serialize(ByteBuffer *pbuffer,
|
||||
SerializeHelper::serializeSubstring(value, offset, count, pbuffer, pflusher);
|
||||
}
|
||||
|
||||
bool BasePVString::operator==(PVField& pvField)
|
||||
{
|
||||
return getConvert()->equals(this, &pvField);
|
||||
}
|
||||
|
||||
bool BasePVString::operator!=(PVField& pvField)
|
||||
{
|
||||
return !(getConvert()->equals(this, &pvField));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/** Default storage for arrays
|
||||
*/
|
||||
template<typename T>
|
||||
@@ -197,8 +165,6 @@ public:
|
||||
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher);
|
||||
virtual void serialize(ByteBuffer *pbuffer,
|
||||
SerializableControl *pflusher, int offset, int count) const;
|
||||
virtual bool operator==(PVField& pv) ;
|
||||
virtual bool operator!=(PVField& pv) ;
|
||||
private:
|
||||
pointer value;
|
||||
};
|
||||
@@ -346,18 +312,6 @@ void DefaultPVArray<T>::serialize(ByteBuffer *pbuffer,
|
||||
}
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
bool DefaultPVArray<T>::operator==(PVField& pv)
|
||||
{
|
||||
return getConvert()->equals(this, &pv);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
bool DefaultPVArray<T>::operator!=(PVField& pv)
|
||||
{
|
||||
return !(getConvert()->equals(this, &pv));
|
||||
}
|
||||
|
||||
// specializations for String
|
||||
|
||||
template<>
|
||||
|
||||
@@ -534,17 +534,6 @@ namespace epics { namespace pvData {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool PVStructure::operator==(PVField &obj)
|
||||
{
|
||||
return getConvert()->equals(this,&obj);
|
||||
}
|
||||
|
||||
bool PVStructure::operator!=(PVField &pv)
|
||||
{
|
||||
return !(getConvert()->equals(this,&pv));
|
||||
}
|
||||
|
||||
static PVField *findSubField(String fieldName,PVStructure *pvStructure) {
|
||||
if( fieldName.length()<1) return 0;
|
||||
String::size_type index = fieldName.find('.');
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
* in file LICENSE that is included with this distribution.
|
||||
*/
|
||||
|
||||
#include "pvType.h"
|
||||
#ifndef LINKEDLISTVOID_H
|
||||
#define LINKEDLISTVOID_H
|
||||
#include "pvType.h"
|
||||
namespace epics { namespace pvData {
|
||||
|
||||
class LinkedListVoid;
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
* EPICS pvDataCPP is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
*/
|
||||
#include <string>
|
||||
#ifndef REQUESTER_H
|
||||
#define REQUESTER_H
|
||||
#include <string>
|
||||
#include "pvType.h"
|
||||
#include "sharedPtr.h"
|
||||
|
||||
|
||||
@@ -63,14 +63,16 @@ namespace epics { namespace pvData {
|
||||
virtual Status stop() = 0;
|
||||
/**
|
||||
* If monitor has occurred return data.
|
||||
* @return monitorElement for modified data on null if no monitors have occurred.
|
||||
* @return monitorElement for modified data on null
|
||||
* if no monitors have occurred.
|
||||
*/
|
||||
virtual MonitorElement::shared_pointer poll() = 0;
|
||||
/**
|
||||
* Release a MonitorElement that was returned by poll.
|
||||
* @param monitorElement
|
||||
*/
|
||||
virtual void release(MonitorElement::shared_pointer& monitorElement) = 0;
|
||||
virtual void release(
|
||||
MonitorElement::shared_pointer& monitorElement) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -89,9 +91,11 @@ namespace epics { namespace pvData {
|
||||
* @param monitor The monitor
|
||||
* @param structure The structure defining the data.
|
||||
*/
|
||||
virtual void monitorConnect(const Status &status, Monitor::shared_pointer& monitor, StructureConstPtr& structure) = 0;
|
||||
virtual void monitorConnect(const Status &status,
|
||||
Monitor::shared_pointer& monitor, StructureConstPtr& structure) = 0;
|
||||
/**
|
||||
* A monitor event has occurred. The requester must call Monitor.poll to get data.
|
||||
* A monitor event has occurred.
|
||||
* The requester must call Monitor.poll to get data.
|
||||
* @param monitor The monitor.
|
||||
*/
|
||||
virtual void monitorEvent(Monitor::shared_pointer& monitor) = 0;
|
||||
|
||||
@@ -12,44 +12,46 @@
|
||||
|
||||
namespace epics { namespace pvData {
|
||||
|
||||
typedef QueueElement<MonitorElement> MonitorQueueElement;
|
||||
typedef QueueElement<MonitorElement::shared_pointer> MonitorQueueElement;
|
||||
|
||||
class MonitorElementImpl : public MonitorElement {
|
||||
public:
|
||||
MonitorElementImpl(PVStructure *pvStructure);
|
||||
MonitorElementImpl(PVStructure::shared_pointer pvStructure);
|
||||
~MonitorElementImpl(){}
|
||||
virtual PVStructure* getPVStructure();
|
||||
virtual BitSet* getChangedBitSet();
|
||||
virtual BitSet* getOverrunBitSet();
|
||||
virtual PVStructure::shared_pointer getPVStructure();
|
||||
virtual BitSet::shared_pointer getChangedBitSet();
|
||||
virtual BitSet::shared_pointer getOverrunBitSet();
|
||||
void setQueueElement(MonitorQueueElement *queueElement);
|
||||
MonitorQueueElement *getQueueElement();
|
||||
private:
|
||||
PVStructure *pvStructure;
|
||||
std::auto_ptr<BitSet> changedBitSet;
|
||||
std::auto_ptr<BitSet> overrunBitSet;
|
||||
PVStructure::shared_pointer pvStructure;
|
||||
BitSet::shared_pointer changedBitSet;
|
||||
BitSet::shared_pointer overrunBitSet;
|
||||
MonitorQueueElement *queueElement;
|
||||
};
|
||||
|
||||
MonitorElementImpl::MonitorElementImpl(PVStructure *pvStructure)
|
||||
MonitorElementImpl::MonitorElementImpl(PVStructure::shared_pointer pvStructure)
|
||||
: pvStructure(pvStructure),
|
||||
changedBitSet(std::auto_ptr<BitSet>(new BitSet(pvStructure->getNumberFields()))),
|
||||
overrunBitSet(std::auto_ptr<BitSet>(new BitSet(pvStructure->getNumberFields()))),
|
||||
changedBitSet(BitSet::shared_pointer(
|
||||
new BitSet(pvStructure->getNumberFields()))),
|
||||
overrunBitSet(BitSet::shared_pointer(
|
||||
new BitSet(pvStructure->getNumberFields()))),
|
||||
queueElement(0)
|
||||
{}
|
||||
|
||||
PVStructure* MonitorElementImpl::getPVStructure()
|
||||
PVStructure::shared_pointer MonitorElementImpl::getPVStructure()
|
||||
{
|
||||
return pvStructure;
|
||||
}
|
||||
|
||||
BitSet* MonitorElementImpl::getChangedBitSet()
|
||||
BitSet::shared_pointer MonitorElementImpl::getChangedBitSet()
|
||||
{
|
||||
return changedBitSet.get();
|
||||
return changedBitSet;
|
||||
}
|
||||
|
||||
BitSet* MonitorElementImpl::getOverrunBitSet()
|
||||
BitSet::shared_pointer MonitorElementImpl::getOverrunBitSet()
|
||||
{
|
||||
return overrunBitSet.get();
|
||||
return overrunBitSet;
|
||||
}
|
||||
|
||||
void MonitorElementImpl::setQueueElement(MonitorQueueElement *queueElement)
|
||||
@@ -62,20 +64,28 @@ MonitorQueueElement *MonitorElementImpl::getQueueElement()
|
||||
return queueElement;
|
||||
}
|
||||
|
||||
MonitorQueue::MonitorQueue(MonitorElement** elements,int number)
|
||||
MonitorQueue::MonitorQueue(PVStructure::shared_pointer* structures,int number)
|
||||
: number(number),
|
||||
elements(elements),
|
||||
queue(new Queue<MonitorElement>(elements,number))
|
||||
structures(structures),
|
||||
queue(0)
|
||||
{
|
||||
if(number<2) {
|
||||
throw std::logic_error(String("queueSize must be >=2"));
|
||||
}
|
||||
MonitorQueueElement *queueElement;
|
||||
|
||||
MonitorElement::shared_pointer ** queueElements
|
||||
= new MonitorElement::shared_pointer*[number];
|
||||
for(int i=0; i<number; i++) {
|
||||
queueElements[i] = new MonitorElement::shared_pointer(
|
||||
new MonitorElementImpl(structures[i]));
|
||||
}
|
||||
queue = new Queue<MonitorElement::shared_pointer>(queueElements,number);
|
||||
MonitorQueueElement *queueElement;
|
||||
for(int i=0; i<number;i++) {
|
||||
queueElement = queue->getFree();
|
||||
MonitorElementImpl *temp =
|
||||
static_cast<MonitorElementImpl*>(queueElement->getObject());
|
||||
temp->setQueueElement(queueElement);
|
||||
MonitorElementImpl * element = static_cast<MonitorElementImpl *>(
|
||||
queueElement->getObject()->get());
|
||||
element->setQueueElement(queueElement);
|
||||
queue->setUsed(queueElement);
|
||||
queue->releaseUsed(queueElement);
|
||||
}
|
||||
@@ -84,17 +94,16 @@ MonitorQueue::MonitorQueue(MonitorElement** elements,int number)
|
||||
MonitorQueue::~MonitorQueue()
|
||||
{
|
||||
delete queue;
|
||||
for(int i=0; i<number; i++) {
|
||||
delete elements[i];
|
||||
}
|
||||
delete[] elements;
|
||||
delete[] structures;
|
||||
}
|
||||
|
||||
MonitorElement** MonitorQueue::createElements(PVStructurePtrArray array,int number)
|
||||
PVStructure::shared_pointer* MonitorQueue::createStructures(
|
||||
PVStructurePtrArray array,int number)
|
||||
{
|
||||
MonitorElement** elements = new MonitorElement*[number];
|
||||
for(int i=0; i<number; i++) {
|
||||
elements[i] = new MonitorElementImpl(array[i]);
|
||||
PVStructure::shared_pointer* elements =
|
||||
new PVStructure::shared_pointer[number];
|
||||
for(int i=0; i<number; i++){
|
||||
elements[i] = PVStructure::shared_pointer(array[i]);
|
||||
}
|
||||
return elements;
|
||||
}
|
||||
@@ -114,30 +123,31 @@ int MonitorQueue::capacity()
|
||||
return number;
|
||||
}
|
||||
|
||||
MonitorElement * MonitorQueue::getFree()
|
||||
MonitorElement::shared_pointer MonitorQueue::getFree()
|
||||
{
|
||||
|
||||
MonitorQueueElement *queueElement = queue->getFree();
|
||||
if(queueElement==0) return 0;
|
||||
return queueElement->getObject();
|
||||
if(queueElement==0) return MonitorElement::shared_pointer();
|
||||
return *queueElement->getObject();
|
||||
}
|
||||
|
||||
void MonitorQueue::setUsed(MonitorElement * element)
|
||||
void MonitorQueue::setUsed(MonitorElement::shared_pointer element)
|
||||
{
|
||||
MonitorElementImpl *temp = static_cast<MonitorElementImpl*>(element);
|
||||
queue->setUsed(temp->getQueueElement());
|
||||
MonitorElementImpl *impl = static_cast<MonitorElementImpl *>(element.get());
|
||||
queue->setUsed(impl->getQueueElement());
|
||||
}
|
||||
|
||||
MonitorElement * MonitorQueue::getUsed()
|
||||
MonitorElement::shared_pointer MonitorQueue::getUsed()
|
||||
{
|
||||
MonitorQueueElement *queueElement = queue->getUsed();
|
||||
if(queueElement==0) return 0;
|
||||
return queueElement->getObject();
|
||||
if(queueElement==0) return MonitorElement::shared_pointer();
|
||||
return *queueElement->getObject();
|
||||
}
|
||||
|
||||
void MonitorQueue::releaseUsed(MonitorElement * element)
|
||||
void MonitorQueue::releaseUsed(MonitorElement::shared_pointer element)
|
||||
{
|
||||
MonitorElementImpl *temp = static_cast<MonitorElementImpl*>(element);
|
||||
queue->releaseUsed(temp->getQueueElement());
|
||||
MonitorElementImpl *impl = static_cast<MonitorElementImpl *>(element.get());
|
||||
queue->releaseUsed(impl->getQueueElement());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -21,20 +21,21 @@ namespace epics { namespace pvData {
|
||||
|
||||
class MonitorQueue {
|
||||
public:
|
||||
MonitorQueue(MonitorElement** elements,int number);
|
||||
MonitorQueue(PVStructure::shared_pointer* structures,int number);
|
||||
~MonitorQueue();
|
||||
static MonitorElement** createElements(PVStructurePtrArray array,int number);
|
||||
static PVStructure::shared_pointer* createStructures(
|
||||
PVStructurePtrArray array,int number);
|
||||
void clear();
|
||||
int getNumberFree();
|
||||
int capacity();
|
||||
MonitorElement *getFree();
|
||||
void setUsed(MonitorElement * element);
|
||||
MonitorElement * getUsed();
|
||||
void releaseUsed(MonitorElement * element);
|
||||
MonitorElement::shared_pointer getFree();
|
||||
void setUsed(MonitorElement::shared_pointer element);
|
||||
MonitorElement::shared_pointer getUsed();
|
||||
void releaseUsed(MonitorElement::shared_pointer element);
|
||||
private:
|
||||
int number;
|
||||
MonitorElement ** elements;
|
||||
Queue<MonitorElement> *queue;
|
||||
PVStructure::shared_pointer* structures;
|
||||
Queue<MonitorElement::shared_pointer> *queue;
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
@@ -4,21 +4,46 @@
|
||||
* EPICS pvDataCPP is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
*/
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#ifndef CONVERT_H
|
||||
#define CONVERT_H
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
|
||||
#include "pvIntrospect.h"
|
||||
#include "pvData.h"
|
||||
|
||||
namespace epics { namespace pvData {
|
||||
|
||||
bool operator==(PVField&, PVField&);
|
||||
|
||||
static inline bool operator!=(PVField& a, PVField& b)
|
||||
{return !(a==b);}
|
||||
|
||||
|
||||
bool operator==(const Field&, const Field&);
|
||||
bool operator==(const Scalar&, const Scalar&);
|
||||
bool operator==(const ScalarArray&, const ScalarArray&);
|
||||
bool operator==(const Structure&, const Structure&);
|
||||
bool operator==(const StructureArray&, const StructureArray&);
|
||||
|
||||
static inline bool operator!=(const Field& a, const Field& b)
|
||||
{return !(a==b);}
|
||||
static inline bool operator!=(const Scalar& a, const Scalar& b)
|
||||
{return !(a==b);}
|
||||
static inline bool operator!=(const ScalarArray& a, const ScalarArray& b)
|
||||
{return !(a==b);}
|
||||
static inline bool operator!=(const Structure& a, const Structure& b)
|
||||
{return !(a==b);}
|
||||
static inline bool operator!=(const StructureArray& a, const StructureArray& b)
|
||||
{return !(a==b);}
|
||||
|
||||
|
||||
class Convert : NoDefaultMethods {
|
||||
public:
|
||||
Convert();
|
||||
~Convert();
|
||||
void getFullName(StringBuilder buf,PVField *pvField);
|
||||
bool equals(PVField *a,PVField *b);
|
||||
bool equals(PVField &a,PVField &b);
|
||||
void getString(StringBuilder buf,PVField * pvField,int indentLevel);
|
||||
void getString(StringBuilder buf,PVField *pvField);
|
||||
void fromString(PVScalar *pv, String from);
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
* EPICS pvDataCPP is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
*/
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#ifndef PVDATA_H
|
||||
#define PVDATA_H
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#include "pvType.h"
|
||||
#include "pvIntrospect.h"
|
||||
#include "noDefaultMethods.h"
|
||||
@@ -80,10 +80,9 @@ public:
|
||||
bool renameField(String newName);
|
||||
void postPut() ;
|
||||
void setPostHandler(PostHandler *postHandler);
|
||||
bool equals(PVField &pv);
|
||||
virtual void toString(StringBuilder buf) ;
|
||||
virtual void toString(StringBuilder buf,int indentLevel) ;
|
||||
virtual bool operator==(PVField &pv) = 0;
|
||||
virtual bool operator!=(PVField &pv) = 0;
|
||||
protected:
|
||||
PVField(PVStructure *parent,FieldConstPtr field);
|
||||
void setParent(PVStructure * parent);
|
||||
@@ -245,8 +244,6 @@ public:
|
||||
String getExtendsStructureName();
|
||||
bool putExtendsStructureName(
|
||||
String extendsStructureName);
|
||||
virtual bool operator==(PVField &pv) ;
|
||||
virtual bool operator!=(PVField &pv) ;
|
||||
virtual void serialize(
|
||||
ByteBuffer *pbuffer,SerializableControl *pflusher) const;
|
||||
virtual void deserialize(
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
* It also defines the arrays of the primitive types
|
||||
*/
|
||||
|
||||
#include <string>
|
||||
#include <stdint.h>
|
||||
#ifndef PVTYPE_H
|
||||
#define PVTYPE_H
|
||||
#include <string>
|
||||
#include <stdint.h>
|
||||
|
||||
namespace epics { namespace pvData {
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
* EPICS pvDataCPP is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
*/
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#ifndef STANDARDFIELD_H
|
||||
#define STANDARDFIELD_H
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#include "pvIntrospect.h"
|
||||
|
||||
namespace epics { namespace pvData {
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
* EPICS pvDataCPP is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
*/
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#ifndef STANDARDPVFIELD_H
|
||||
#define STANDARDPVFIELD_H
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#include "pvIntrospect.h"
|
||||
#include "pvData.h"
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ There is a logic_error
|
||||
On line 68 of ../testBaseException.cpp
|
||||
../bin/linux-x86/testBaseException[0x80497b9]
|
||||
../bin/linux-x86/testBaseException[0x8049a54]
|
||||
/lib/libc.so.6(__libc_start_main+0xe6)[0x126e36]
|
||||
/lib/libc.so.6(__libc_start_main+0xe6)[0x3ede36]
|
||||
../bin/linux-x86/testBaseException[0x80490e1]
|
||||
To translate run 'addr2line -e execname 0xXXXXXXX ...'
|
||||
Note: Must be compiled with debug symbols
|
||||
@@ -17,7 +17,7 @@ On line 75 of ../testBaseException.cpp
|
||||
../bin/linux-x86/testBaseException() [0x8049cec]
|
||||
../bin/linux-x86/testBaseException() [0x8049923]
|
||||
../bin/linux-x86/testBaseException() [0x8049a54]
|
||||
/lib/libc.so.6(__libc_start_main+0xe6) [0x126e36]
|
||||
/lib/libc.so.6(__libc_start_main+0xe6) [0x3ede36]
|
||||
../bin/linux-x86/testBaseException() [0x80490e1]
|
||||
|
||||
testBaseException...
|
||||
@@ -26,7 +26,7 @@ all is OK
|
||||
On line 48 of ../testBaseException.cpp
|
||||
../bin/linux-x86/testBaseException() [0x8049581]
|
||||
../bin/linux-x86/testBaseException() [0x8049a5c]
|
||||
/lib/libc.so.6(__libc_start_main+0xe6) [0x126e36]
|
||||
/lib/libc.so.6(__libc_start_main+0xe6) [0x3ede36]
|
||||
../bin/linux-x86/testBaseException() [0x80490e1]
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ On line 57 of ../testBaseException.cpp
|
||||
../bin/linux-x86/testBaseException() [0x80491ec]
|
||||
../bin/linux-x86/testBaseException() [0x80496f9]
|
||||
../bin/linux-x86/testBaseException() [0x8049a5c]
|
||||
/lib/libc.so.6(__libc_start_main+0xe6) [0x126e36]
|
||||
/lib/libc.so.6(__libc_start_main+0xe6) [0x3ede36]
|
||||
../bin/linux-x86/testBaseException() [0x80490e1]
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--- testBaseExceptionGold 2011-02-10 04:39:30.000000000 -0500
|
||||
+++ testBaseException 2011-04-21 10:00:27.000000000 -0400
|
||||
--- testBaseExceptionGold 2011-04-25 13:04:28.000000000 -0400
|
||||
+++ testBaseException 2011-04-27 07:53:41.000000000 -0400
|
||||
@@ -1,37 +1,46 @@
|
||||
+
|
||||
+
|
||||
@@ -8,7 +8,7 @@
|
||||
+On line 68 of ../testBaseException.cpp
|
||||
+../bin/linux-x86/testBaseException[0x80497b9]
|
||||
+../bin/linux-x86/testBaseException[0x8049a54]
|
||||
+/lib/libc.so.6(__libc_start_main+0xe6)[0x126e36]
|
||||
+/lib/libc.so.6(__libc_start_main+0xe6)[0x3ede36]
|
||||
+../bin/linux-x86/testBaseException[0x80490e1]
|
||||
+To translate run 'addr2line -e execname 0xXXXXXXX ...'
|
||||
+ Note: Must be compiled with debug symbols
|
||||
@@ -20,7 +20,7 @@
|
||||
+../bin/linux-x86/testBaseException() [0x8049cec]
|
||||
+../bin/linux-x86/testBaseException() [0x8049923]
|
||||
+../bin/linux-x86/testBaseException() [0x8049a54]
|
||||
+/lib/libc.so.6(__libc_start_main+0xe6) [0x126e36]
|
||||
+/lib/libc.so.6(__libc_start_main+0xe6) [0x3ede36]
|
||||
+../bin/linux-x86/testBaseException() [0x80490e1]
|
||||
+
|
||||
testBaseException...
|
||||
@@ -34,7 +34,7 @@
|
||||
+On line 48 of ../testBaseException.cpp
|
||||
+../bin/linux-x86/testBaseException() [0x8049581]
|
||||
+../bin/linux-x86/testBaseException() [0x8049a5c]
|
||||
+/lib/libc.so.6(__libc_start_main+0xe6) [0x126e36]
|
||||
+/lib/libc.so.6(__libc_start_main+0xe6) [0x3ede36]
|
||||
+../bin/linux-x86/testBaseException() [0x80490e1]
|
||||
+
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
+../bin/linux-x86/testBaseException() [0x80491ec]
|
||||
+../bin/linux-x86/testBaseException() [0x80496f9]
|
||||
+../bin/linux-x86/testBaseException() [0x8049a5c]
|
||||
+/lib/libc.so.6(__libc_start_main+0xe6) [0x126e36]
|
||||
+/lib/libc.so.6(__libc_start_main+0xe6) [0x3ede36]
|
||||
+../bin/linux-x86/testBaseException() [0x80490e1]
|
||||
+
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
|
||||
Time test
|
||||
diff 23.497236 milliSeconds
|
||||
time per iteration 23.497236 microseconds
|
||||
time per addTail/removeHead 0.011749 microseconds
|
||||
diff 22.226751 milliSeconds
|
||||
time per iteration 22.226751 microseconds
|
||||
time per addTail/removeHead 0.011113 microseconds
|
||||
|
||||
Time test locked
|
||||
diff 206.570083 milliSeconds
|
||||
time per iteration 206.570083 microseconds
|
||||
time per addTail/removeHead 0.103285 microseconds
|
||||
diff 205.273532 milliSeconds
|
||||
time per iteration 205.273532 microseconds
|
||||
time per addTail/removeHead 0.102637 microseconds
|
||||
|
||||
Time std::list test
|
||||
diff 632.330525 milliSeconds
|
||||
time per iteration 632.330525 microseconds
|
||||
time per addTail/removeHead 0.316165 microseconds
|
||||
diff 666.642776 milliSeconds
|
||||
time per iteration 666.642776 microseconds
|
||||
time per addTail/removeHead 0.333321 microseconds
|
||||
|
||||
Time std::list test locked
|
||||
diff 783.256490 milliSeconds
|
||||
time per iteration 783.256490 microseconds
|
||||
time per addTail/removeHead 0.391628 microseconds
|
||||
diff 812.128477 milliSeconds
|
||||
time per iteration 812.128477 microseconds
|
||||
time per addTail/removeHead 0.406064 microseconds
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--- testPVAppendGold 2011-02-09 05:21:30.000000000 -0500
|
||||
+++ testPVAppend 2011-04-21 10:00:32.000000000 -0400
|
||||
--- testPVAppendGold 2011-04-25 13:04:28.000000000 -0400
|
||||
+++ testPVAppend 2011-04-27 07:53:46.000000000 -0400
|
||||
@@ -29,4 +29,4 @@
|
||||
structure child2
|
||||
string Jane Bad Girl
|
||||
|
||||
@@ -1 +1 @@
|
||||
2011.04.21 10:00:33 929776649 nanoSeconds isDst true
|
||||
2011.04.27 07:53:47 782836752 nanoSeconds isDst true
|
||||
|
||||
@@ -1 +1 @@
|
||||
time per call 0.007064 microseconds
|
||||
time per call 0.007046 microseconds
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
current 1303394433 13269031 milliSec 1303394433013
|
||||
2011.04.21 10:00:33 13269031 nanoSeconds isDst true
|
||||
current 1303905226 876200358 milliSec 1303905226876
|
||||
2011.04.27 07:53:46 876200358 nanoSeconds isDst true
|
||||
fromTime_t
|
||||
current 1303394433 0 milliSec 1303394433000
|
||||
2011.04.21 10:00:33 0 nanoSeconds isDst true
|
||||
current 1303905226 0 milliSec 1303905226000
|
||||
2011.04.27 07:53:46 0 nanoSeconds isDst true
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
one requested 0.400000 diff 0.400193 seconds
|
||||
two requested 0.200000 diff 0.200190 seconds
|
||||
one requested 0.200000 diff 0.200333 seconds
|
||||
two requested 0.400000 diff 0.400372 seconds
|
||||
one requested 0.000000 diff 0.000034 seconds
|
||||
two requested 0.000000 diff 0.000050 seconds
|
||||
one requested 0.400000 diff 0.400283 seconds
|
||||
two requested 0.200000 diff 0.200268 seconds
|
||||
one requested 0.200000 diff 0.200291 seconds
|
||||
two requested 0.400000 diff 0.400374 seconds
|
||||
one requested 0.000000 diff 0.000042 seconds
|
||||
two requested 0.000000 diff 0.000061 seconds
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "noDefaultMethods.h"
|
||||
#include "byteBuffer.h"
|
||||
#include "CDRMonitor.h"
|
||||
#include "convert.h"
|
||||
|
||||
#define BYTE_MAX_VALUE 127
|
||||
#define BYTE_MIN_VALUE -128
|
||||
@@ -90,8 +91,8 @@ void serializationTest(PVField* field) {
|
||||
deserializedField->deserialize(buffer, control);
|
||||
|
||||
// must equal
|
||||
assert((*field)==(*deserializedField));
|
||||
|
||||
bool isEqual = getConvert()->equals(*field,*deserializedField);
|
||||
assert(isEqual);
|
||||
delete deserializedField; // clean up
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user