Michael Davidsaver
45bb461c32
shared_vector require freeze/thaw
...
Remove the implicit cast from non-const to const.
Require the use of freeze/thaw when
changing between const and non-const.
Change argument of const_shared_vector_cast
to a non-const shared_vector reference
to allow it to be cleared by freeze/thaw.
2013-07-25 15:26:29 -04:00
Michael Davidsaver
105c3185f7
remove take(), copyIn(), and copyOut().
2013-07-19 14:20:55 -04:00
Michael Davidsaver
5565e4e30c
Convert don't use copyIn or copyOut
2013-07-19 14:18:04 -04:00
Michael Davidsaver
70ae281f45
test freeze/thaw
2013-07-16 18:59:04 -04:00
Michael Davidsaver
6e3a344caa
fix Convert::fromStringArray
...
destination should grow to fit
2013-07-16 10:48:01 -04:00
Michael Davidsaver
2e3cbed520
restart testConvert
...
start with fromStringArray
2013-07-16 10:47:11 -04:00
Michael Davidsaver
5e2e7c81a6
Merge remote branch 'md/master' into pvarr
...
* md/master:
added
minor changes
comparison between implementations
Proposed pvData.h interface
added pvArray.html; made queue.h and bitSetUtil.* compatible with pvDataCPP.
2013-07-09 18:37:53 -04:00
Michael Davidsaver
cff59487ae
shared_vector freeze and thaw
2013-07-09 18:24:51 -04:00
Michael Davidsaver
cdcbfe7378
update testPVScalarArray
2013-07-09 18:24:51 -04:00
Michael Davidsaver
0c4ef8f079
PV* use shared_vector_convert
2013-07-09 18:24:50 -04:00
Michael Davidsaver
c0e9dcff21
revise static_shared_vector_cast
...
Move the work into a special ctor
to allow full inline of casting wrapper
Prevent static_shared_vector_cast from
casting const <-> non-const
2013-07-09 18:24:41 -04:00
Michael Davidsaver
79eeb0fa2a
update PVScalar and PVScalarValue<T>
...
hide the void* members for now.
Define PVScalarValue<T>::getAs and putFrom
to give a more efficient implementation.
2013-07-09 18:24:41 -04:00
Michael Davidsaver
46feb86a99
test shared_vector_convert
2013-07-09 18:24:41 -04:00
Michael Davidsaver
74f68c47d3
shared_vector_convert
...
Allow converting of shared_vector between types
Conversion utilizes castUnsafe<TO,FROM>().
Converting to/from void is supported. Convert to void
is an alias for static_shared_vector_cast<void>().
Convert from void utilizes shared_vector<void>::original_type()
and throws std::runtime_error if this is not valid.
Casting now handles 'const void'
is most places where 'void' can be used.
2013-07-09 18:24:40 -04:00
Michael Davidsaver
3c7a738ffc
shared_vector<void> tracks original type
2013-07-09 18:24:40 -04:00
Michael Davidsaver
22d4a53d65
create templateMeta.h
...
Home for common C++ template tricks
2013-07-09 18:24:40 -04:00
Michael Davidsaver
d319e2ed7b
add ScalarTypeID template
...
Define a compile time mapping from
type to ScalarType enum value.
2013-07-09 11:19:46 -04:00
Michael Davidsaver
2cb07a8490
move parts of ScalarTypeFunc to sharedVector.h
...
Move the parts of ScalarTypeFunc which
deal with untyped shared_vector s
to sharedVector.h to allow sharedVector.h
to include pvIntrospect.h w/o creating
an include loop...
2013-07-09 10:36:48 -04:00
Michael Davidsaver
6900d4bbec
make boolean type unambiguous
...
"char", "signed char", and "unsigned char"
are distinct types. Define "boolean" to
be whichever is not "int8" or "uint8".
2013-07-08 09:58:37 -04:00
Michael Davidsaver
73450bdbc7
combine shared_vector<T> for void and const void
2013-07-03 14:23:17 -04:00
Marty Kraimer
776ff49ed2
added
2013-07-03 12:11:05 -04:00
Michael Davidsaver
00da6c88ae
minor
2013-07-03 11:41:53 -04:00
Michael Davidsaver
986f036d20
replace accepts const_svector
...
Allows
PVValueArray<T> *a, *b;
a->replace(b->view());
2013-07-03 11:34:32 -04:00
Michael Davidsaver
5699c43b74
correct max_size
...
Take into account sizeof(E).
2013-07-02 17:42:46 -04:00
Marty Kraimer
b58b97a916
minor changes
2013-06-28 14:17:23 -04:00
Marty Kraimer
5f52f14094
comparison between implementations
2013-06-25 12:18:38 -04:00
Marty Kraimer
ec6b67ffad
Proposed pvData.h interface
2013-06-18 10:01:52 -04:00
Marty Kraimer
3de28e3cef
added pvArray.html; made queue.h and bitSetUtil.* compatible with pvDataCPP.
2013-06-13 14:52:27 -04:00
Michael Davidsaver
23d5aab1e8
add Doxyfile
2013-06-11 17:42:31 -04:00
Michael Davidsaver
cf8c6718dd
test PVStructureArray in testSerialization
2013-06-11 17:42:30 -04:00
Michael Davidsaver
b0c8249562
re-write testPVStructureArray
2013-06-11 17:42:30 -04:00
Michael Davidsaver
8cb0b1a7d6
use new PVStructureArray api
2013-06-11 17:42:30 -04:00
Michael Davidsaver
7f9745c8d1
Implement PVStructureArray with shared_vector
...
Combine as much as possible with scalar array handling.
PVStructureArray becomes PVValueArray<shared_ptr<PVStructure> >
Bulk of shared implementation moved the PVVectorStorage
which has a parametrized base to avoid using multiple inheritance.
2013-06-11 17:42:30 -04:00
Michael Davidsaver
4e749cc8be
Improve shared_vector::push_back
...
push_back now allocates additional space
in powers of 2 up to 1k elements, then
in blocks of 1k elements.
2013-06-11 17:42:30 -04:00
Michael Davidsaver
70c9a7c18f
simplify shared_vector ctors
...
Casting will be done through the copy constructor.
2013-06-11 14:39:40 -04:00
Michael Davidsaver
11e2ee19ea
Fix Printer for structure arrays
...
Not handling NULL elements correctly.
2013-06-11 14:39:40 -04:00
Michael Davidsaver
a4cfab1242
Fix "optimize shared_vector for storing non-POD types"
...
Can't move references when the source array is
still referenced by other shared_vectors
2013-06-11 14:39:40 -04:00
Michael Davidsaver
be4738f59c
remove weak_vector
...
It seems that shared_ptr::use_count() does
not include weak_ptr instances. Therefore
shared_ptr::use_count()==1 (aka unique())
does *not* ensure exclusive ownership!
This breaks the assumption used by
shared_vector::make_unique() to avoid
allocating a new array in some cases.
2013-06-10 15:09:42 -04:00
Michael Davidsaver
b63c3da565
add const_pointer to shared_vector
2013-06-10 12:09:29 -04:00
Michael Davidsaver
0b89f08d09
explicit copy and assignment for shared_vector
...
Add explicit copy constructor and
assignment operator for shared_vector.
2013-06-10 12:09:29 -04:00
Michael Davidsaver
ac53153bea
shared_vector: test reference and const_reference
...
Ensure that these typedefs are present and work
for 'T' and 'const T'.
2013-06-05 16:15:49 -04:00
Michael Davidsaver
bc3187a3f6
optimize shared_vector for storing non-POD types
...
pass values by reference where appropriate.
When reallocating arrays of shared_ptr
"move" with swap() instead of operator=
to avoid ref counter inc and dec for each
element.
2013-06-03 19:31:05 -04:00
Michael Davidsaver
4294710d9e
make viewUnsafe protected
...
No longer part of the public API of PVValueArray
2013-06-03 19:31:05 -04:00
Michael Davidsaver
82a33460cf
pvData update doc comments
2013-05-31 09:58:52 -04:00
Michael Davidsaver
3b6268a4fc
add const_iterator to shared_vector
2013-05-31 09:58:52 -04:00
Michael Davidsaver
41425b3fa1
more testIntrospect
2013-05-31 09:58:52 -04:00
Michael Davidsaver
57804494ef
Misc fixes and error checking
...
fix argument type for getScalarType
mark getFieldName as const
Argument checking for Field construction
2013-05-24 18:28:54 -04:00
Michael Davidsaver
9039a10c9a
update testIntrospect with epicsUnitTest
2013-05-24 18:28:54 -04:00
Michael Davidsaver
9e865bc37d
Avoid unnecessary copying in copyIn
...
Only re-use the existing reference if
it is large enough to hold all the new data.
If it isn't then throw it away to avoid
copying its current contents during
the resize().
2013-05-23 18:19:35 -04:00
Michael Davidsaver
54ee8bf7a0
PVStructureArray: setLength before postPut
...
Ensure that the correct (new) length is seen.
2013-05-23 17:51:52 -04:00