epam / epam/Indigo

Replace Array<char> with Array<T> or Array<std::string> implementation.

Open
#780 0 comments 0 reactions 1 assignee Claimed by @NikolaiBalabanov View on GitHub
Dominant language
C++
Stars
406
Forks
134
Avg merge
2d 11h
Merged PRs (30d)
24

Description

`Array` is used in the Indigo as string-buffer.
```cpp
// typical pattern (array.h)
void appendString(const char* str, bool keep_zero) {
int len = (int)strlen(str);
int initial_size = _length;
if (initial_size > 0 && _array[initial_size - 1] == 0)
initial_size--;
resize(initial_size + len);
memcpy(_array + initial_size, str, len);
if (keep_zero)
push(0);
}
```
This is manual zer-termination, manual `memcpy` and `Array` - specific method is a representation of legacy pattern which is duplicate `std:;string`;

It's used in Names/properties (MOL, SDF, RDF), Binary buffers (CMF, fingerprints), Output `printf` buffer and byte buffers for Python/Java integration.

**Acceptance Criteria**:

- [ ] All loaders (MOL/SDF/RDF/CDX/SMILES) uses `std::string` or equivalent of type for property names.
- [ ] `Output::printf` accepts `std::string`/`std::format` like style argument.
- [ ] All kind of bindings are simplified which allows to use simple and direct mapping.
- [ ] All new and existing Unit test provided and passed.
- [ ] No regressions on any levels and parsing.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.