Skip to content

Commit

Permalink
Исправление загрузки бинарных данных ALMv2
Browse files Browse the repository at this point in the history
  • Loading branch information
anyks committed Sep 19, 2020
1 parent fce9f75 commit bdfbd1f
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 21 deletions.
2 changes: 2 additions & 0 deletions ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# [Change Log](https://github.com/anyks/alm/archive/release.tar.gz)

## [3.4.6](https://github.com/anyks/alm/archive/v3.4.6.tar.gz) Bug fixes

## [3.4.5](https://github.com/anyks/alm/archive/v3.4.5.tar.gz) Bug fixes

## [3.4.4](https://github.com/anyks/alm/archive/v3.4.4.tar.gz) Bug fixes and new version pip
Expand Down
2 changes: 1 addition & 1 deletion app/alm.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// Название языковой модели
#define ANYKS_LM_NAME "alm"
// Версия приложения
#define ANYKS_LM_VERSION "3.4.5"
#define ANYKS_LM_VERSION "3.4.6"
// Автор приложения
#define ANYKS_LM_AUTHOR "Yuriy Lobarev"
// Телефон автора
Expand Down
43 changes: 23 additions & 20 deletions src/alm2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -742,6 +742,8 @@ const pair <bool, size_t> anyks::Alm2::check(const vector <size_t> & seq, const
void anyks::Alm2::setBin(const vector <char> & buffer) const noexcept {
// Если буфер передан
if(!buffer.empty()){
// Полученная последовательность
seq_t sequence;
// Количество слов в последовательности
u_short count = 0;
// Смещение в буфере
Expand All @@ -750,27 +752,28 @@ void anyks::Alm2::setBin(const vector <char> & buffer) const noexcept {
vector <seq_t> seq;
// Получаем данные буфера
const char * data = buffer.data();
// Извлекаем количество слов в последовательности
memcpy(&count, data + offset, sizeof(count));
// Увеличиваем смещение
offset += sizeof(count);
// Если последовательность получена
if(count > 0){
// Полученная последовательность
seq_t sequence;
// Выделяем память для последовательности
seq.resize(count);
// Переходим по всем словам последовательности
for(u_short i = 0; i < count; i++){
// Извлекаем данные слова
memcpy(&sequence, data + offset, sizeof(sequence));
// Добавляем последовательность в список
seq[i] = sequence;
// Увеличиваем смещение
offset += sizeof(sequence);
// Выполняем перебор данных всего буфера
while(offset < buffer.size()){
// Извлекаем количество слов в последовательности
memcpy(&count, data + offset, sizeof(count));
// Увеличиваем смещение
offset += sizeof(count);
// Если последовательность получена
if(count > 0){
// Очищаем последовательность
seq.clear();
// Переходим по всем словам последовательности
for(u_short i = 0; i < count; i++){
// Извлекаем данные слова
memcpy(&sequence, data + offset, sizeof(sequence));
// Добавляем последовательность в список
seq.push_back(sequence);
// Увеличиваем смещение
offset += sizeof(sequence);
}
// Если нужно установить исходные данные
if(!seq.empty()) this->set(seq);
}
// Если нужно установить исходные данные
this->set(seq);
}
}
}
Expand Down

0 comments on commit bdfbd1f

Please sign in to comment.