hosseinmoein / DataFrame

C++ DataFrame for statistical, Financial, and ML analysis -- in modern C++ using native types and contiguous memory storage
https://hosseinmoein.github.io/DataFrame/
BSD 3-Clause "New" or "Revised" License
2.54k stars 313 forks source link

Exceptions thrown in dataframe_tester #63

Closed swilson314 closed 4 years ago

swilson314 commented 4 years ago

I've built DataFrame with VS 2017 on Windows 10. A number of exceptions are thrown when I run dataframe_tester.exe.

The first occurs here, I think this test is wrong since the size of dvec is 1:

dvec = df3.get_column<double> ("dbl_col");
dvec2 = df3.get_column<double> ("dbl_col_2");
assert(dvec.size() == 1);
// SBW throws exception.
// assert(dvec[5] == 2.2345);

Other exceptions occur during the following tests, I stopped testing at this point:

// SBW throws exception.
// test_shifting_up_down();
test_rotating_up_down();
test_dataframe_with_datetime();
test_dataframe_friend_plus_operator();
test_dataframe_friend_minus_operator();
test_dataframe_friend_multiplies_operator();
test_dataframe_friend_divides_operator();
test_fill_missing_values();
test_fill_missing_fill_forward();
test_fill_missing_fill_backward();
// SBW throws exception.
// test_fill_missing_fill_linear_interpolation();
test_drop_missing_all_no_drop();
// SBW throws exception.
// test_drop_missing_all_2_drop();
// SBW throws exception.
// test_drop_missing_any();
hosseinmoein commented 4 years ago

I fixed the typo in the first case. It is interesting it was passing all the builds and tests

Re/ other exceptions, I cannot see a problem immediately. None of them has an assert call? What kind of exception do they throw?

hosseinmoein commented 4 years ago

Is this a C++17 enabled build? Do you get any warnings?

swilson314 commented 4 years ago

Yes, the /std:c++17 is set.

Here are the warnings I get:

1>------ Build started: Project: dataframe_tester, Configuration: Debug Win32 ------ 1>dataframetester.cc 1>f:\dev\dataframe-master\include\dataframe\vectors\vectorptrview.h(59): warning C4251: 'hmdf::VectorPtrView::vector': class 'std::vector<T,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::VectorPtrView' 1> with 1> [ 1> _Ty=T 1> ] 1>f:\dev\dataframe-master\include\dataframe\vectors\vectorptrview.h(57): note: see declaration of 'std::vector<T,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=T 1> ] 1>f:\dev\dataframe-master\include\dataframe\vectors\vectorptrview.h(637): note: see reference to class template instantiation 'hmdf::VectorPtrView' being compiled 1>f:\dev\dataframe-master\include\dataframe\vectors\heteroptrview.h(101): warning C4251: 'hmdf::HeteroPtrView::views_': class 'std::unordered_map<const hmdf::HeteroPtrView,hmdf::VectorPtrView,std::hash<_Kty>,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of struct 'hmdf::HeteroPtrView' 1> with 1> [ 1> _Kty=const hmdf::HeteroPtrView , 1> _Ty=hmdf::VectorPtrView 1> ] 1>f:\dev\dataframe-master\include\dataframe\vectors\heteroptrview.h(100): note: see declaration of 'std::unordered_map<const hmdf::HeteroPtrView,hmdf::VectorPtrView,std::hash<_Kty>,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' 1> with 1> [ 1> _Kty=const hmdf::HeteroPtrView , 1> _Ty=hmdf::VectorPtrView 1> ] 1>f:\dev\dataframe-master\include\dataframe\vectors\heteroptrview.h(106): warning C4251: 'hmdf::HeteroPtrView::clearfunction': class 'std::function<void (hmdf::HeteroPtrView &)>' needs to have dll-interface to be used by clients of struct 'hmdf::HeteroPtrView' 1>f:\dev\dataframe-master\include\dataframe\vectors\heteroptrview.h(103): note: see declaration of 'std::function<void (hmdf::HeteroPtrView &)>' 1>f:\dev\dataframe-master\include\dataframe\vectors\heteroptrview.h(110): warning C4251: 'hmdf::HeteroPtrView::copyfunction': class 'std::function<void (const hmdf::HeteroPtrView &,hmdf::HeteroPtrView &)>' needs to have dll-interface to be used by clients of struct 'hmdf::HeteroPtrView' 1>f:\dev\dataframe-master\include\dataframe\vectors\heteroptrview.h(107): note: see declaration of 'std::function<void (const hmdf::HeteroPtrView &,hmdf::HeteroPtrView &)>' 1>f:\dev\dataframe-master\include\dataframe\vectors\heteroptrview.h(114): warning C4251: 'hmdf::HeteroPtrView::movefunction': class 'std::function<void (hmdf::HeteroPtrView &,hmdf::HeteroPtrView &)>' needs to have dll-interface to be used by clients of struct 'hmdf::HeteroPtrView' 1>f:\dev\dataframe-master\include\dataframe\vectors\heteroptrview.h(111): note: see declaration of 'std::function<void (hmdf::HeteroPtrView &,hmdf::HeteroPtrView &)>' 1>f:\dev\dataframe-master\include\dataframe\utils\datetime.h(178): warning C4251: 'hmdf::DateTime::dtinit': class 'hmdf::DateTime::DT_initializer' needs to have dll-interface to be used by clients of class 'hmdf::DateTime' 1>f:\dev\dataframe-master\include\dataframe\utils\datetime.h(176): note: see declaration of 'hmdf::DateTime::DT_initializer' 1>f:\dev\dataframe-master\include\dataframe\utils\fixedsizestring.h(313): warning C4305: 'initializing': truncation from 'unsigned __int64' to 'hmdf::VirtualString::size_type' 1>f:\dev\dataframe-master\include\dataframe\utils\fixedsizestring.h(313): warning C4309: 'initializing': truncation of constant value 1>f:\dev\dataframe-master\include\dataframe\utils\fixedsizestring.h(316): warning C4244: '=': conversion from 'unsigned __int64' to 'hmdf::VirtualString::sizetype', possible loss of data 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(96): warning C4251: 'hmdf::DataFrame<I,H>::data': class 'std::vector<H,std::allocator<_Other>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<I,H>' 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(69): note: see declaration of 'std::vector<H,std::allocator<_Other>>' 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(2402): note: see reference to class template instantiation 'hmdf::DataFrame<I,H>' being compiled 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(98): warning C4251: 'hmdf::DataFrame<I,H>::columntb': class 'std::unordered_map<hmdf::DataFrame<I,H>::ColNameType,std::vector<H,std::allocator<_Other>>::size_type,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<I,H>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> _Ty=std::vector<H,std::allocator<_Other>>::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(92): note: see declaration of 'std::unordered_map<hmdf::DataFrame<I,H>::ColNameType,std::vector<H,std::allocator<_Other>>::size_type,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> _Ty=std::vector<H,std::allocator<_Other>>::sizetype 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(96): warning C4251: 'hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::data': class 'std::vector<hmdf::HeteroVector,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<unsigned long,hmdf::HeteroVector>' 1> with 1> [ 1> _Ty=hmdf::HeteroVector 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(69): note: see declaration of 'std::vector<hmdf::HeteroVector,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=hmdf::HeteroVector 1> ] 1>f:\dev\dataframe-master\test\dataframetester.cc(75): note: see reference to class template instantiation 'hmdf::DataFrame<unsigned long,hmdf::HeteroVector>' being compiled 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(97): warning C4251: 'hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::indices': class 'std::vector<unsigned long,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<unsigned long,hmdf::HeteroVector>' 1> with 1> [ 1> _Ty=unsigned long 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_standalone.tcc(384): note: see declaration of 'std::vector<unsigned long,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=unsigned long 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(98): warning C4251: 'hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::columntb': class 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<unsigned long,hmdf::HeteroVector>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> _Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(92): note: see declaration of 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(96): warning C4251: 'hmdf::DataFrame<std::string,hmdf::HeteroVector>::data': class 'std::vector<hmdf::HeteroVector,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<std::string,hmdf::HeteroVector>' 1> with 1> [ 1> _Ty=hmdf::HeteroVector 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(69): note: see declaration of 'std::vector<hmdf::HeteroVector,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=hmdf::HeteroVector 1> ] 1>f:\dev\dataframe-master\test\dataframetester.cc(538): note: see reference to class template instantiation 'hmdf::DataFrame<std::string,hmdf::HeteroVector>' being compiled 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(97): warning C4251: 'hmdf::DataFrame<std::string,hmdf::HeteroVector>::indices': class 'std::vector<std::string,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<std::string,hmdf::HeteroVector>' 1> with 1> [ 1> _Ty=std::string 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_standalone.tcc(177): note: see declaration of 'std::vector<std::string,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=std::string 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(98): warning C4251: 'hmdf::DataFrame<std::string,hmdf::HeteroVector>::columntb': class 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<std::string,hmdf::HeteroVector>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> _Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(92): note: see declaration of 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(96): warning C4251: 'hmdf::DataFrame<hmdf::DateTime,hmdf::HeteroVector>::data': class 'std::vector<hmdf::HeteroVector,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<hmdf::DateTime,hmdf::HeteroVector>' 1> with 1> [ 1> _Ty=hmdf::HeteroVector 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(69): note: see declaration of 'std::vector<hmdf::HeteroVector,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=hmdf::HeteroVector 1> ] 1>f:\dev\dataframe-master\test\dataframetester.cc(553): note: see reference to class template instantiation 'hmdf::DataFrame<hmdf::DateTime,hmdf::HeteroVector>' being compiled 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(97): warning C4251: 'hmdf::DataFrame<hmdf::DateTime,hmdf::HeteroVector>::indices': class 'std::vector<hmdf::DateTime,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<hmdf::DateTime,hmdf::HeteroVector>' 1> with 1> [ 1> _Ty=hmdf::DateTime 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_standalone.tcc(248): note: see declaration of 'std::vector<hmdf::DateTime,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=hmdf::DateTime 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(98): warning C4251: 'hmdf::DataFrame<hmdf::DateTime,hmdf::HeteroVector>::columntb': class 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<hmdf::DateTime,hmdf::HeteroVector>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> _Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(92): note: see declaration of 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(96): warning C4251: 'hmdf::DataFrame<unsigned long,hmdf::HeteroView>::data': class 'std::vector<hmdf::HeteroView,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<unsigned long,hmdf::HeteroView>' 1> with 1> [ 1> _Ty=hmdf::HeteroView 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(69): note: see declaration of 'std::vector<hmdf::HeteroView,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=hmdf::HeteroView 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(681): note: see reference to class template instantiation 'hmdf::DataFrame<unsigned long,hmdf::HeteroView>' being compiled 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(98): warning C4251: 'hmdf::DataFrame<unsigned long,hmdf::HeteroView>::columntb': class 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<unsigned long,hmdf::HeteroView>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> _Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(92): note: see declaration of 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(96): warning C4251: 'hmdf::DataFrame<double,hmdf::HeteroVector>::data': class 'std::vector<hmdf::HeteroVector,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<double,hmdf::HeteroVector>' 1> with 1> [ 1> _Ty=hmdf::HeteroVector 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(69): note: see declaration of 'std::vector<hmdf::HeteroVector,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=hmdf::HeteroVector 1> ] 1>f:\dev\dataframe-master\test\dataframetester.cc(924): note: see reference to class template instantiation 'hmdf::DataFrame<double,hmdf::HeteroVector>' being compiled 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(97): warning C4251: 'hmdf::DataFrame<double,hmdf::HeteroVector>::indices': class 'std::vector<double,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<double,hmdf::HeteroVector>' 1> with 1> [ 1> _Ty=double 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_standalone.tcc(306): note: see declaration of 'std::vector<double,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=double 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(98): warning C4251: 'hmdf::DataFrame<double,hmdf::HeteroVector>::columntb': class 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<double,hmdf::HeteroVector>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> _Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(92): note: see declaration of 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(96): warning C4251: 'hmdf::DataFrame<unsigned long,hmdf::HeteroPtrView>::data': class 'std::vector<hmdf::HeteroPtrView,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<unsigned long,hmdf::HeteroPtrView>' 1> with 1> [ 1> _Ty=hmdf::HeteroPtrView 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(69): note: see declaration of 'std::vector<hmdf::HeteroPtrView,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=hmdf::HeteroPtrView 1> ] 1>f:\dev\dataframe-master\test\dataframetester.cc(2858): note: see reference to class template instantiation 'hmdf::DataFrame<unsigned long,hmdf::HeteroPtrView>' being compiled 1>f:\dev\dataframe-master\include\dataframe\vectors\vectorptrview.h(59): warning C4251: 'hmdf::VectorPtrView::vector': class 'std::vector<T ,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::VectorPtrView' 1> with 1> [ 1> U=unsigned long 1> ] 1> and 1> [ 1> T=unsigned long, 1> _Ty=unsigned long 1> ] 1> and 1> [ 1> U=unsigned long 1> ] 1>f:\dev\dataframe-master\include\dataframe\vectors\vectorptrview.h(57): note: see declaration of 'std::vector<T ,std::allocator<_Ty>>' 1> with 1> [ 1> T=unsigned long, 1> _Ty=unsigned long 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(97): note: see reference to class template instantiation 'hmdf::VectorPtrView' being compiled 1> with 1> [ 1> U=unsigned long 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(98): warning C4251: 'hmdf::DataFrame<unsigned long,hmdf::HeteroPtrView>::columntb': class 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<unsigned long,hmdf::HeteroPtrView>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> _Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(92): note: see declaration of 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\vectors\vectorptrview.h(59): warning C4251: 'hmdf::VectorPtrView::vector': class 'std::vector<T ,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::VectorPtrView' 1> with 1> [ 1> U=double 1> ] 1> and 1> [ 1> T=double, 1> _Ty=double 1> ] 1> and 1> [ 1> U=double 1> ] 1>f:\dev\dataframe-master\include\dataframe\vectors\vectorptrview.h(57): note: see declaration of 'std::vector<T ,std::allocator<_Ty>>' 1> with 1> [ 1> T=double, 1> _Ty=double 1> ] 1>f:\dev\dataframe-master\test\dataframetester.cc(2862): note: see reference to class template instantiation 'hmdf::VectorPtrView' being compiled 1> with 1> [ 1> U=double 1> ] 1>f:\dev\dataframe-master\include\dataframe\vectors\vectorptrview.h(59): warning C4251: 'hmdf::VectorPtrView::vector': class 'std::vector<T ,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::VectorPtrView' 1> with 1> [ 1> U=std::string 1> ] 1> and 1> [ 1> T=std::string, 1> _Ty=std::string 1> ] 1> and 1> [ 1> U=std::string 1> ] 1>f:\dev\dataframe-master\include\dataframe\vectors\vectorptrview.h(57): note: see declaration of 'std::vector<T ,std::allocator<_Ty>>' 1> with 1> [ 1> T=std::string, 1> _Ty=std::string 1> ] 1>f:\dev\dataframe-master\test\dataframetester.cc(2863): note: see reference to class template instantiation 'hmdf::VectorPtrView' being compiled 1> with 1> [ 1> U=std::string 1> ] 1>f:\dev\dataframe-master\include\dataframe\vectors\vectorptrview.h(59): warning C4251: 'hmdf::VectorPtrView::vector': class 'std::vector<T ,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::VectorPtrView' 1> with 1> [ 1> T=Point, 1> _Ty=Point 1> ] 1>f:\dev\dataframe-master\include\dataframe\vectors\vectorptrview.h(57): note: see declaration of 'std::vector<T ,std::allocator<_Ty>>' 1> with 1> [ 1> T=Point, 1> _Ty=Point 1> ] 1>c:\program files (x86)\microsoft visual studio\2017\professional\vc\tools\msvc\14.16.27023\include\array(225): note: see reference to class template instantiation 'hmdf::VectorPtrView' being compiled 1>f:\dev\dataframe-master\test\dataframetester.cc(4048): note: see reference to class template instantiation 'std::array<hmdf::VectorPtrView,5>' being compiled 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(96): warning C4251: 'hmdf::DataFrame<unsigned int,hmdf::HeteroVector>::data': class 'std::vector<hmdf::HeteroVector,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<unsigned int,hmdf::HeteroVector>' 1> with 1> [ 1> _Ty=hmdf::HeteroVector 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(69): note: see declaration of 'std::vector<hmdf::HeteroVector,std::allocator<_Ty>>' 1> with 1> [ 1> _Ty=hmdf::HeteroVector 1> ] 1>f:\dev\dataframe-master\test\dataframetester.cc(4294): note: see reference to class template instantiation 'hmdf::DataFrame<unsigned int,hmdf::HeteroVector>' being compiled 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(97): warning C4251: 'hmdf::DataFrame<unsigned int,hmdf::HeteroVector>::indices': class 'std::vector<std::_Vbase,std::allocator>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<unsigned int,hmdf::HeteroVector>' 1>c:\program files (x86)\microsoft visual studio\2017\professional\vc\tools\msvc\14.16.27023\include\vector(2468): note: see declaration of 'std::vector<std::_Vbase,std::allocator>' 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(98): warning C4251: 'hmdf::DataFrame<unsigned int,hmdf::HeteroVector>::columntb': class 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'hmdf::DataFrame<unsigned int,hmdf::HeteroVector>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> _Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframe.h(92): note: see declaration of 'std::unordered_map<hmdf::DataFrame<unsigned long,hmdf::HeteroVector>::ColNameType,unsigned int,std::hash,std::equal_to<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' 1> with 1> [ 1> _Kty=hmdf::DataFrame<I,H>::ColNameType, 1> _Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(227): warning C4244: 'initializing': conversion from 'hmdf::VectorView::size_type' to 'unsigned int', possible loss of data 1> with 1> [ 1> U=unsigned long 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3825): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::visit<double,hmdf::MeanVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::MeanVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3824): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::visit<double,hmdf::MeanVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::MeanVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(227): warning C4244: 'initializing': conversion from 'hmdf::VectorView::size_type' to 'const unsigned int', possible loss of data 1> with 1> [ 1> U=unsigned long 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(228): warning C4244: 'argument': conversion from 'hmdf::VectorView::size_type' to 'const _Ty', possible loss of data 1> with 1> [ 1> U=double 1> ] 1> and 1> [ 1> _Ty=unsigned int 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(281): warning C4244: 'initializing': conversion from 'hmdf::VectorView::size_type' to 'unsigned int', possible loss of data 1> with 1> [ 1> U=unsigned long 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3829): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::visit<double,double,hmdf::DotProdVisitor<double,unsigned long,double>>(const char ,const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::DotProdVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3828): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::visit<double,double,hmdf::DotProdVisitor<double,unsigned long,double>>(const char ,const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::DotProdVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(281): warning C4244: 'initializing': conversion from 'hmdf::VectorView::size_type' to 'const unsigned int', possible loss of data 1> with 1> [ 1> U=unsigned long 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(282): warning C4244: 'initializing': conversion from 'hmdf::VectorView::size_type' to 'unsigned int', possible loss of data 1> with 1> [ 1> U=double 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(282): warning C4244: 'initializing': conversion from 'hmdf::VectorView::size_type' to 'const unsigned int', possible loss of data 1> with 1> [ 1> U=double 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(283): warning C4244: 'initializing': conversion from 'hmdf::VectorView::size_type' to 'unsigned int', possible loss of data 1> with 1> [ 1> U=double 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(283): warning C4244: 'initializing': conversion from 'hmdf::VectorView::size_type' to 'const unsigned int', possible loss of data 1> with 1> [ 1> U=double 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(768): warning C4244: 'initializing': conversion from 'const _Ty' to 'size_t', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::SimpleRollAdopter<hmdf::MeanVisitor<double,unsigned long,double>,double,unsigned long>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::SimpleRollAdopter<hmdf::MeanVisitor<double,unsigned long,double>,double,unsigned long>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3835): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::SimpleRollAdopter<hmdf::MeanVisitor<double,unsigned long,double>,double,unsigned long>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::SimpleRollAdopter<hmdf::MeanVisitor<double,unsigned long,double>,double,unsigned long> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3834): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::SimpleRollAdopter<hmdf::MeanVisitor<double,unsigned long,double>,double,unsigned long>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::SimpleRollAdopter<hmdf::MeanVisitor<double,unsigned long,double>,double,unsigned long> 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(768): warning C4244: 'initializing': conversion from 'const _Ty' to 'const size_t', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1090): warning C4244: 'initializing': conversion from 'const _Ty' to 'hmdf::CumSumVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::CumSumVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::CumSumVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3857): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::CumSumVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::CumSumVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3856): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::CumSumVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::CumSumVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1090): warning C4244: 'initializing': conversion from 'const _Ty' to 'const hmdf::CumSumVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1132): warning C4244: 'initializing': conversion from 'const _Ty' to 'hmdf::CumProdVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::CumProdVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::CumProdVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3864): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::CumProdVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::CumProdVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3863): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::CumProdVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::CumProdVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1132): warning C4244: 'initializing': conversion from 'const _Ty' to 'const hmdf::CumProdVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1215): warning C4244: 'initializing': conversion from 'const _Ty' to 'hmdf::CumMinVisitor<double,unsigned long>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::CumMinVisitor<double,unsigned long>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::CumMinVisitor<double,unsigned long>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3871): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::CumMinVisitor<double,unsigned long>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::CumMinVisitor<double,unsigned long> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3870): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::CumMinVisitor<double,unsigned long>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::CumMinVisitor<double,unsigned long> 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1215): warning C4244: 'initializing': conversion from 'const _Ty' to 'const hmdf::CumMinVisitor<double,unsigned long>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1173): warning C4244: 'initializing': conversion from 'const _Ty' to 'hmdf::CumMaxVisitor<double,unsigned long>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::CumMaxVisitor<double,unsigned long>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::CumMaxVisitor<double,unsigned long>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3878): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::CumMaxVisitor<double,unsigned long>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::CumMaxVisitor<double,unsigned long> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3877): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::CumMaxVisitor<double,unsigned long>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::CumMaxVisitor<double,unsigned long> 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1173): warning C4244: 'initializing': conversion from 'const _Ty' to 'const hmdf::CumMaxVisitor<double,unsigned long>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1260): warning C4244: 'initializing': conversion from 'const _Ty' to 'hmdf::AutoCorrVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::AutoCorrVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::AutoCorrVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3888): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::AutoCorrVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::AutoCorrVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3887): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::AutoCorrVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::AutoCorrVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1260): warning C4244: 'initializing': conversion from 'const _Ty' to 'const hmdf::AutoCorrVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1489): warning C4244: 'initializing': conversion from 'hmdf::VectorView::size_type' to 'hmdf::MedianVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> U=double 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::MedianVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::MedianVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3900): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::MedianVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::MedianVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3899): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::MedianVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::MedianVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1489): warning C4244: 'initializing': conversion from 'hmdf::VectorView::size_type' to 'const hmdf::MedianVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> U=double 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1694): warning C4244: 'initializing': conversion from 'const _Ty' to 'hmdf::ModeVisitor<2,double,unsigned long>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::ModeVisitor<2,double,unsigned long>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::ModeVisitor<2,double,unsigned long>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3905): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::ModeVisitor<2,double,unsigned long>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::ModeVisitor<2,double,unsigned long> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3904): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::ModeVisitor<2,double,unsigned long>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::ModeVisitor<2,double,unsigned long> 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1694): warning C4244: 'initializing': conversion from 'const _Ty' to 'const hmdf::ModeVisitor<2,double,unsigned long>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1932): warning C4244: 'initializing': conversion from 'const _Ty' to 'hmdf::DiffVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::DiffVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::DiffVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3910): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::DiffVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::DiffVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3909): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::DiffVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::DiffVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1932): warning C4244: 'initializing': conversion from 'const _Ty' to 'const hmdf::DiffVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1995): warning C4244: 'initializing': conversion from 'const _Ty' to 'hmdf::ZScoreVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::ZScoreVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\include\dataframe\internals\dataframe_get.tcc(620): note: see reference to function template instantiation 'void hmdf::ZScoreVisitor<double,unsigned long,double>::operator ()<hmdf::VectorView,hmdf::VectorView>(const K &,const H &)' being compiled 1> with 1> [ 1> U=unsigned long, 1> K=hmdf::VectorView, 1> H=hmdf::VectorView 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3917): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::ZScoreVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::ZScoreVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\test\dataframe_tester.cc(3916): note: see reference to function template instantiation 'V &hmdf::DataFrame<unsigned long,hmdf::HeteroView>::single_act_visit<double,hmdf::ZScoreVisitor<double,unsigned long,double>>(const char ,V &)' being compiled 1> with 1> [ 1> V=hmdf::ZScoreVisitor<double,unsigned long,double> 1> ] 1>f:\dev\dataframe-master\include\dataframe\dataframestatsvisitors.h(1995): warning C4244: 'initializing': conversion from 'const _Ty' to 'const hmdf::ZScoreVisitor<double,unsigned long,double>::size_type', possible loss of data 1> with 1> [ 1> _Ty=hmdf::VectorView::size_type 1> ] 1> Creating library F:/Dev/DataFrame-master/debug/lib/Debug/dataframe_tester.lib and object F:/Dev/DataFrame-master/debug/lib/Debug/dataframe_tester.exp 1>dataframe_tester.vcxproj -> F:\Dev\DataFrame-master\debug\bin\Debug\dataframe_tester.exe 1>Done building project "dataframe_tester.vcxproj". ========== Build: 1 succeeded, 0 failed, 2 up-to-date, 0 skipped ==========

swilson314 commented 4 years ago

Here is the exception/call stack for the first error:

image

swilson314 commented 4 years ago

Second error:

image

hosseinmoein commented 4 years ago

It is hard to debug like this. A couple of lines in your stack trace corresponds to writing to std::cout which is strange. Also, this passes the Appveyor which I think is Windows 10. And in Appveyor, I see all the warnings you listed.

I think you are also turning on a switch that triggers STL debug code?

hosseinmoein commented 4 years ago

As an experiment to eliminate one possible cause: Can you comment out all the calls to MyDataFrame::set_thread_level() and the corresponding asserts with MyDataFrame::get_thread_level()?

swilson314 commented 4 years ago

Here are the compiler flags, I haven't changed anything from the original cmake creation of the project:

/GS /TP /analyze- /W3 /Zc:wchar_t /I"F:\Dev\DataFrame-master\include" /Zi /Gm- /Od /Ob0 /Fd"F:\Dev\DataFrame-master\debug\bin\Debug\dataframe_tester.pdb" /Zc:inline /fp:precise /D "WIN32" /D "_WINDOWS" /D "_CRT_SECURE_NO_WARNINGS" /D "LIBRARY_EXPORTS" /D "CMAKE_INTDIR=\"Debug\"" /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope /RTC1 /GR /Gd /Oy- /MDd /std:c++17 /FC /Fa"Debug/" /EHsc /nologo /Fo"dataframe_tester.dir\Debug\" /Fp"dataframe_tester.dir\Debug\dataframe_tester.pch" /diagnostics:classic

hosseinmoein commented 4 years ago

Can you also run it with release mode

cmake -DCMAKE_BUILD_TYPE=Release ..

aside from the elimination of MyDataFrame::get_thread_level() calls

swilson314 commented 4 years ago

No change with removal of set_thread_level().

swilson314 commented 4 years ago

Works fine in Release build. This includes the clearly bad stmt:

  assert(dvec[5] == 2.2345)

because NDEBUG is defined, so assert() is nop.

hosseinmoein commented 4 years ago

hmm, all these works fine in Linux which assert is really assert. This might to do that that dll's are not properly built for this project.

hosseinmoein commented 4 years ago

You may want to use the Conan package which is up to release 1.8.0 CC @yssource

swilson314 commented 4 years ago

If you're not getting an error in a linux debug build with the stmt assert(dvec[5] == 2.2345), then it seems likely your stl isn't doing bounds checking. Maybe this is something you can turn on?

Aside: assert() can be turned on by not specifying NDEBUG in your cmake.

swilson314 commented 4 years ago

The first error in test_shifting_up_down() occurs in this stmt "if (iter + n < vec_end)" because the result of iter+n is beyond the end of the vector, which I believe is undefined per the standard. While the code works if not strictly checked, it might be better to break this into two loops anyways to avoid "if" testing within the loop.

template<typename I, typename H> template void DataFrame<I, H>::shiftleft(V &vec, size_type n) {

using value_type =
    typename std::remove_reference<decltype(vec)>::type::value_type;

const auto  vec_end = vec.end();

for (auto iter = vec.begin(); iter != vec_end; ++iter)
    if (iter + n < vec_end)
        *iter = std::move(*(iter + n));
    else
        *iter = std::move(_get_nan<value_type>());

return;

}

yssource commented 4 years ago

https://github.com/hosseinmoein/DataFrame/issues/64

if(MSVC)
  add_definitions(-DLIBRARY_EXPORTS)
endif()
yssource commented 4 years ago

@hosseinmoein By the way, Conan does not do any works on unit testing. It has a patch removing all the testing bins on the CMakeLists.txt. So, Conan does not verify dataframe_tester and other test bins.

hosseinmoein commented 4 years ago

@swilson314 , I fixed the iterator arithmetic to be standard. Please try it again and let me know

hosseinmoein commented 4 years ago

@hosseinmoein By the way, Conan does not do any works on unit testing. It has a patch removing all the testing bins on the CMakeLists.txt. So, Conan does not verify dataframe_tester and other test bins.

Understood

swilson314 commented 4 years ago

Certainly got further this time :)

First exception is now in test_fill_missing_fill_linear_interpolation():

_NODISCARD _Ty& operator[](const size_type _Pos)
    {   // subscript mutable sequence

if _ITERATOR_DEBUG_LEVEL != 0

    _STL_VERIFY(_Pos < size(), "vector subscript out of range");

endif / _ITERATOR_DEBUG_LEVEL != 0 /

    return (this->_Myfirst()[_Pos]);
    }

From code, call is vec[14], but size of vec is 14:

image

hosseinmoein commented 4 years ago

This is also fixed. I have to get one of those compilers :-)

swilson314 commented 4 years ago

If you have a windows VM, there’s a “community” version of visual studio.

swilson314 commented 4 years ago

Also, I did run through the remaining code and there were more exceptions thrown. I stopped after about 5.

hosseinmoein commented 4 years ago

Could you send me the location of other exceptions?

swilson314 commented 4 years ago

Sure thing, will work on this tomorrow.

swilson314 commented 4 years ago

test_gen_datetime_index()

image

swilson314 commented 4 years ago

test_remove_data_by_sel() _STL_VERIFY(_Off <= _Mycont->_Mylast - _Ptr, "cannot seek vector iterator after end");

image

swilson314 commented 4 years ago

test_drop_missing_all_2_drop()

_NODISCARD reference operator*() const
    {   // return designated value

if _ITERATOR_DEBUG_LEVEL != 0

    const auto _Mycont = static_cast<const _Mytree *>(this->_Getcont());
    _STL_ASSERT(_Mycont, "cannot dereference value-initialized map/set iterator");
    _STL_VERIFY(this->_Ptr != _Mycont->_Myhead, "cannot dereference end map/set iterator");

endif / _ITERATOR_DEBUG_LEVEL != 0 /

image

swilson314 commented 4 years ago

PS Not sure why the last one failed "out of order", i.e. not the first time it ran.

swilson314 commented 4 years ago

test_get_data_by_rand()

image

swilson314 commented 4 years ago

Here's another one that failed "out of order" ... maybe race with threads?

test_drop_missing_all_no_drop()

_NODISCARD reference operator*() const
    {   // return designated value

if _ITERATOR_DEBUG_LEVEL != 0

    const auto _Mycont = static_cast<const _Mytree *>(this->_Getcont());
    _STL_ASSERT(_Mycont, "cannot dereference value-initialized map/set iterator");
    _STL_VERIFY(this->_Ptr != _Mycont->_Myhead, "cannot dereference end map/set iterator");

image

swilson314 commented 4 years ago

test_get_view_by_rand()

image

swilson314 commented 4 years ago

test_drop_missing_any()

_NODISCARD reference operator*() const
    {   // return designated value

if _ITERATOR_DEBUG_LEVEL != 0

    const auto _Mycont = static_cast<const _Mytree *>(this->_Getcont());
    _STL_ASSERT(_Mycont, "cannot dereference value-initialized map/set iterator");
    _STL_VERIFY(this->_Ptr != _Mycont->_Myhead, "cannot dereference end map/set iterator");

endif / _ITERATOR_DEBUG_LEVEL != 0 /

image

swilson314 commented 4 years ago

test_view_visitors()

image

swilson314 commented 4 years ago

test_k_means()

image

swilson314 commented 4 years ago

test_affinity_propagation()

_NODISCARD reference operator*() const
    {   // return designated object

if _ITERATOR_DEBUG_LEVEL != 0

    const auto _Mycont = static_cast<const _Myvec *>(this->_Getcont());
    _STL_VERIFY(_Ptr, "can't dereference value-initialized vector iterator");
    _STL_VERIFY(_Mycont->_Myfirst <= _Ptr && _Ptr < _Mycont->_Mylast,
        "can't dereference out of range vector iterator");

endif / _ITERATOR_DEBUG_LEVEL != 0 /

image

swilson314 commented 4 years ago

test_drop_threashold_3()

_NODISCARD reference operator*() const
    {   // return designated value

if _ITERATOR_DEBUG_LEVEL != 0

    const auto _Mycont = static_cast<const _Mytree *>(this->_Getcont());
    _STL_ASSERT(_Mycont, "cannot dereference value-initialized map/set iterator");
    _STL_VERIFY(this->_Ptr != _Mycont->_Myhead, "cannot dereference end map/set iterator");

endif / _ITERATOR_DEBUG_LEVEL != 0 /

image

swilson314 commented 4 years ago
               *** The End ***
hosseinmoein commented 4 years ago

@swilson314 , thanks a lot Actually today I got an ubuntu laptop with a gcc that is even more strict in debug mode than VC++. I fixed all the asserts in dataframe tester and tester_2. But Two categories still remain that I cannot fix but they are safe. I inspected all of them.

  1. Testing algorithms that are based on random numbers will produce slightly different results on different platforms. So, the asserts for hardcoded values may fail.
  2. In my vector views I am forced to dereference a vector.end() to build the "end" of my view. There is nothing I can do about it. But this is ok, since the value of dereferenced end is never accessed.
swilson314 commented 4 years ago

I tried the new version and am still getting exceptions, but I don't know whether they fall in the categories above. Which are the functions that will still fail? Should they be #ifdef'd for the compiler that works?

hosseinmoein commented 4 years ago

On your side the first exception should be get_data_by_rand or k-means which both fall under the first category. Any testing of views will throw an exception because of the second category.

The first category is obviously not a problem. The second category is not a problem at run time. It is just violating the STL boundary checks enabled by the compiler flag. You could disable that flag and still have a debug-able executable.

I may have a solution for the second case. But I have to find time to implement it.

swilson314 commented 4 years ago

Would it make sense to document this in the code? For anybody looking to adopt the library, a first question will be whether the tests/examples work.

hosseinmoein commented 4 years ago

Test examples work for every environment that people have reported to me, including many windows environment (of course excluding random number stuff). Is the boundary check flag a default on VC++ 2017?

hosseinmoein commented 4 years ago

I should document the random number algos

hosseinmoein commented 4 years ago

@swilson314 , My solution worked to fix the views violating STL boundary checks. I also removed asserts from testing algorithms based on random numbers. So, you now should be able run all tests clean through

swilson314 commented 4 years ago

Fantastic!! I’ll give it a try. I’m working on an example that loads a DataFrame class from an Arrow Table, read from a csv file. Should be able to post next week.

swilson314 commented 4 years ago

I still get an assert here:

image

hosseinmoein commented 4 years ago

Are you located in EST region? I also suspect timezone info might not be updated on your host.

swilson314 commented 4 years ago

Also: test_drop_missing_all_2_drop() test_drop_missing_all_no_drop() test_view_visitors() test_drop_missing_any() test_drop_threashold_3()

swilson314 commented 4 years ago

I'm PST