Avoid manual new / delete[] in AtomVec::Method
This commit is contained in:
@ -2470,7 +2470,7 @@ int AtomVec::process_fields(char *str, const char *default_str, Method *method)
|
|||||||
// allocate memory in method
|
// allocate memory in method
|
||||||
method->resize(nfield);
|
method->resize(nfield);
|
||||||
|
|
||||||
int *index = method->index;
|
std::vector<int> & index = method->index;
|
||||||
int match;
|
int match;
|
||||||
|
|
||||||
for (int i = 0; i < nfield; i++) {
|
for (int i = 0; i < nfield; i++) {
|
||||||
@ -2523,40 +2523,12 @@ void AtomVec::init_method(int nfield, Method *method)
|
|||||||
Method class members
|
Method class members
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
AtomVec::Method::~Method()
|
|
||||||
{
|
|
||||||
delete [] pdata;
|
|
||||||
delete [] datatype;
|
|
||||||
delete [] cols;
|
|
||||||
delete [] maxcols;
|
|
||||||
delete [] collength;
|
|
||||||
delete [] plength;
|
|
||||||
delete [] index;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AtomVec::Method::resize(int nfield) {
|
void AtomVec::Method::resize(int nfield) {
|
||||||
delete [] pdata;
|
pdata.resize(nfield);
|
||||||
delete [] datatype;
|
datatype.resize(nfield);
|
||||||
delete [] cols;
|
cols.resize(nfield);
|
||||||
delete [] maxcols;
|
maxcols.resize(nfield);
|
||||||
delete [] collength;
|
collength.resize(nfield);
|
||||||
delete [] plength;
|
plength.resize(nfield);
|
||||||
delete [] index;
|
index.resize(nfield);
|
||||||
pdata = nullptr;
|
|
||||||
datatype = nullptr;
|
|
||||||
cols = nullptr;
|
|
||||||
maxcols = nullptr;
|
|
||||||
collength = nullptr;
|
|
||||||
plength = nullptr;
|
|
||||||
index = nullptr;
|
|
||||||
|
|
||||||
if (nfield > 0) {
|
|
||||||
pdata = new void*[nfield];
|
|
||||||
datatype = new int[nfield];
|
|
||||||
cols = new int[nfield];
|
|
||||||
maxcols = new int*[nfield];
|
|
||||||
collength = new int[nfield];
|
|
||||||
plength = new void*[nfield];
|
|
||||||
index = new int[nfield];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -191,16 +191,14 @@ class AtomVec : protected Pointers {
|
|||||||
const char *default_create,*default_data_atom,*default_data_vel;
|
const char *default_create,*default_data_atom,*default_data_vel;
|
||||||
|
|
||||||
struct Method {
|
struct Method {
|
||||||
void **pdata = nullptr;
|
std::vector<void *> pdata;
|
||||||
int *datatype = nullptr;
|
std::vector<int> datatype;
|
||||||
int *cols = nullptr;
|
std::vector<int> cols;
|
||||||
int **maxcols = nullptr;
|
std::vector<int*> maxcols;
|
||||||
int *collength = nullptr;
|
std::vector<int> collength;
|
||||||
void **plength = nullptr;
|
std::vector<void *> plength;
|
||||||
int *index = nullptr;
|
std::vector<int> index;
|
||||||
|
|
||||||
Method() = default;
|
|
||||||
~Method();
|
|
||||||
void resize(int nfield);
|
void resize(int nfield);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user