Skip to content

Commit

Permalink
Version 12.0.2
Browse files Browse the repository at this point in the history
  • Loading branch information
papyrussolution committed May 19, 2024
1 parent 8b03327 commit 15dc4d2
Show file tree
Hide file tree
Showing 128 changed files with 2,052 additions and 2,063 deletions.
Binary file modified ManWork/LaTex/features.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion ManWork/LaTex/features.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
% FEATURES.TEX
% Copyright (c) A.Sobolev 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016, 2017, 2018, 2019, 2020, 2021
% Copyright (c) A.Sobolev 2008, 2009, 2010, 2011, 2012, 2013, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2024
% Part of project Papyrus
% Features
%
Expand Down
20 changes: 10 additions & 10 deletions Src/BuildVC2019/libthirdparty.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -461,16 +461,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseJava|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\OSF\mupdf\thirdparty\mujs\jsbuiltin.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugJava|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseJava|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugJava|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Memento|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseJava|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugJava|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Memento|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseJava|Win32'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugJava|x64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Memento|x64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseJava|x64'">false</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\OSF\mupdf\thirdparty\mujs\jscompile.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugJava|Win32'">true</ExcludedFromBuild>
Expand Down
43 changes: 43 additions & 0 deletions Src/BuildVC2019/papyrus.sln
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sql-parser", "sql-parser.vc
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Kab-Q", "Kab-Q.vcxproj", "{CA297291-8CCC-42A1-B6F2-4FF1F111E4C5}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sasl2", "cyrus-sasl-sasl2.vcxproj", "{25B39566-623A-410B-B489-FEFE6B997A7E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -3628,6 +3630,46 @@ Global
{CA297291-8CCC-42A1-B6F2-4FF1F111E4C5}.Universe-HTT|x64.Build.0 = Debug|x64
{CA297291-8CCC-42A1-B6F2-4FF1F111E4C5}.Universe-HTT|x86.ActiveCfg = Debug|Win32
{CA297291-8CCC-42A1-B6F2-4FF1F111E4C5}.Universe-HTT|x86.Build.0 = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.Debug|Any CPU.ActiveCfg = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.Debug|x64.ActiveCfg = Debug|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.Debug|x64.Build.0 = Debug|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.Debug|x86.ActiveCfg = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.Debug|x86.Build.0 = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllDebug|Any CPU.ActiveCfg = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllDebug|Any CPU.Build.0 = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllDebug|x64.ActiveCfg = Debug|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllDebug|x64.Build.0 = Debug|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllDebug|x86.ActiveCfg = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllDebug|x86.Build.0 = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllRelease|Any CPU.ActiveCfg = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllRelease|Any CPU.Build.0 = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllRelease|x64.ActiveCfg = Release|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllRelease|x64.Build.0 = Release|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllRelease|x86.ActiveCfg = Release|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.MtDllRelease|x86.Build.0 = Release|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.Release|Any CPU.ActiveCfg = Release|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.Release|x64.ActiveCfg = Release|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.Release|x64.Build.0 = Release|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.Release|x86.ActiveCfg = Release|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.Release|x86.Build.0 = Release|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerDebug|Any CPU.ActiveCfg = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerDebug|Any CPU.Build.0 = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerDebug|x64.ActiveCfg = Debug|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerDebug|x64.Build.0 = Debug|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerDebug|x86.ActiveCfg = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerDebug|x86.Build.0 = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerRelease|Any CPU.ActiveCfg = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerRelease|Any CPU.Build.0 = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerRelease|x64.ActiveCfg = Release|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerRelease|x64.Build.0 = Release|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerRelease|x86.ActiveCfg = Release|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.ServerRelease|x86.Build.0 = Release|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.Universe-HTT|Any CPU.ActiveCfg = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.Universe-HTT|Any CPU.Build.0 = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.Universe-HTT|x64.ActiveCfg = Debug|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.Universe-HTT|x64.Build.0 = Debug|x64
{25B39566-623A-410B-B489-FEFE6B997A7E}.Universe-HTT|x86.ActiveCfg = Debug|Win32
{25B39566-623A-410B-B489-FEFE6B997A7E}.Universe-HTT|x86.Build.0 = Debug|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -3718,6 +3760,7 @@ Global
{E1464D54-BC95-462D-BE39-D8509E6633A7} = {FD90FB26-6B5A-4AC1-97FF-DA2E80858452}
{09B6C707-5B2F-48F9-8512-551046E3259C} = {FD90FB26-6B5A-4AC1-97FF-DA2E80858452}
{CA297291-8CCC-42A1-B6F2-4FF1F111E4C5} = {F562924D-985A-486D-8139-7ABCB538930F}
{25B39566-623A-410B-B489-FEFE6B997A7E} = {FD90FB26-6B5A-4AC1-97FF-DA2E80858452}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FD484575-6985-460E-87A6-D61D65094CC2}
Expand Down
3 changes: 0 additions & 3 deletions Src/Doc/VERSION.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -16958,6 +16958,3 @@ Ver 1.2 Date 13/09/96
-FIX: {������� ����} ��������� �������� ������, ��-�� �������� ��������� �������� ��� �������� � ������� ����
����� ���������� ������.
-FIX: {���������} ������, ���������� �������� ������ ����� �� ���������� ����� ����������� Atol.



2 changes: 1 addition & 1 deletion Src/Include/CAIRO-1160/cairoint.h
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ cairo_private cairo_status_t FASTCALL _cairo_user_data_array_set_data(cairo_user
cairo_private cairo_status_t _cairo_user_data_array_copy(cairo_user_data_array_t * dst, const cairo_user_data_array_t * src);
cairo_private void _cairo_user_data_array_foreach(cairo_user_data_array_t * array, void (*func)(const void * key, void * elt, void * closure), void * closure);

#define _CAIRO_HASH_INIT_VALUE 5381
// @v12.0.2 (replaced with SlConst::DjbHashInit32) #define _CAIRO_HASH_INIT_VALUE 5381

cairo_private ulong FASTCALL _cairo_hash_string(const char * c);
cairo_private ulong FASTCALL _cairo_hash_bytes(ulong hash, const void * bytes, uint length);
Expand Down
99 changes: 87 additions & 12 deletions Src/Include/Db.h
Original file line number Diff line number Diff line change
Expand Up @@ -4589,10 +4589,11 @@ class BDbTransaction {
};
//
// @v12.0.1 @experimental {
// Менеджер записей как база для собственной DBMS (мечта детства). В практической плоскости
// я намерен использовать этот модуль пока ситуативно.
//
struct SDataPageHeader {
static constexpr uint32 SignatureValue = 0x76AE0000U;
static constexpr uint32 EndSentinelSize() { return 0U; }
//
// Descr: Типы страниц
//
Expand All @@ -4612,33 +4613,102 @@ struct SDataPageHeader {
fEmpty = 0x0002
};
struct RecPrefix {
static constexpr uint8 Signature = 0x9A;
static constexpr uint8 Signature_Used = 0x9A; // Сигнатура записи занятого блока
static constexpr uint8 Signature_Free = 0xA9; // Сигнатура свободного участка страницы
static constexpr uint8 Signature_End1 = 0xAA; // Сигнатура свободного участка завершающегося этим сигнатурным байтом
static constexpr uint8 Signature_End2 = 0xAB; // Сигнатура свободного участка длиной 2 байта (включая эту сигнатуру)
static constexpr uint8 Signature_End3 = 0xAC; // Сигнатура свободного участка длиной 3 байта (включая эту сигнатуру)
//
// Descr: Флаги префикса блока. Значения начинаются с 0x04 поскольку младшие 2 бита
// используются как индикатор длины поля payload-размера блока.
//
enum {
fDeleted = 0x04
};
uint32 Size;
uint Flags;
RecPrefix() : PayloadSize(0), Flags(0), TotalSize(0)
{
}
void SetPayload(uint size, uint flags)
{
PayloadSize = size;
TotalSize = 0;
Flags = flags;
}
void SetTotalSize(uint totalSize, uint flags)
{
//assert(oneof3(padding, 1, 2, 3));
PayloadSize = 0;
Flags = flags;
if(totalSize >= 1 && totalSize <= 3) {
Flags |= fDeleted; // Ошметки 1..3 байта безусловно трактуем как неиспользуемые блоки
}
TotalSize = totalSize;
}
uint32 PayloadSize;
uint Flags; // Младшие 2 бита поля Flags используются как индикатор длины поля размера блока.
// b00 - 4bytes, b01 - 1byte, b10 - 2bytes, b11 - 3bytes
//uint Padding; // 1 || 2 || 3 // Если блок является остаточным "ошметком", находящимся между другими блоками
// или же в конце страницы, то он маркируется специальным образом.
uint TotalSize; // Общий размер блока, включая префикс. При вызове функции EvaluateRecPrefix
// должен быть задан ненулевым только один из факторов: PayloadSize || TotalSize, поскольку в противном
// случае может возникнуть неоднозначность.
};
uint GetFreeSizeFromPos(uint pos) const;
uint GetFreeSize() const;
bool IsValid() const;
uint32 ReadRecPrefix(uint pos, RecPrefix & rPfx) const;
static uint32 EvaluateRecPrefix(const RecPrefix & rPfx, uint8 * pPfxBuf, uint8 * pFlags);
uint32 WriteRecPrefix(uint offset, const RecPrefix & rPfx);
//
// Descr: Вычисляет префикс блока, определяемого параметром rPfx. Поле rPfx.Size
// задает payload-размер блока (без учета префикса).
// Если аргумент pPfxBuf != 0, то заносит бинарное представление префикса блока по этому адресу.
// Если аргумент pFlags != 0, то по этому адресу присваиваются значения битовых флагов префикса.
// Вызывающая функция должна определить одно и только одно из двух полей RecPrefix: TotalSize или PayloadSize.
// Если определено TotalSize, то функция вычислит PayloadSize и установит его на выходе.
// И наоборот, если определено PayloadSize, то функция вычислит TotalSize и установит его на выходе.
//
// Returns:
// 0 - error
// !0 - размер префикса
//
static uint32 EvaluateRecPrefix(RecPrefix & rPfx, uint8 * pPfxBuf, uint8 * pFlags);
//
// Descr: Служебная функция, записывающая префикс блока по смещению offset.
// Аргумент rPfx должен определить либо TotalSize, либо PayloadSize, но не
// то и другое одновременно (see EvaluateRecPrefix).
//
uint32 WriteRecPrefix(uint offset, RecPrefix & rPfx);
//
// Returns:
// 0 - error
// !0 - значение rowid внесенной записи
//
uint64 Write(const void * pData, uint dataLen);
uint64 Write(uint offset, const void * pData, uint dataLen);
//
// Returns:
// 0 - error
// !0 - actual data size was read
//
uint Read(uint offset, void * pBuf, size_t bufSize);
const void * Enum(uint * pPos, uint * pSize) const;
uint MarkOutBlock(uint offset, uint size);
static SDataPageHeader * Allocate(uint32 type, uint32 seq, uint totalSize);
//
// Descr: Проверяет валидность пары {offset; size} как блока страницы.
// Пара считается валидной если (offset+size) не выходит за пределы
// страницы и, если блок не является последним на странице, то
// следующий байт - допустимая сигнатура блока (RecPrefix::Signature_XXX).
// Returns:
// 0 - пара {offset; size} не валидна
// _FFFF32 - блок, определяемый парой, завершает страницу
// иное значение - сигнатура следующего блока.
//
uint VerifyBlock(uint offset, uint size) const;
//
// Descr: То же, что и VerifyBlock(uint offset, uint size) const, но для случая, когда размер
// блока не известен. Функция проверяет чтобы смещение находилось в начале блока,
// определяет размер этого блока и возвращает сигнатуру следующего блока.
//
uint VerifyBlock(uint offset, uint * pSize) const;

uint32 Signature;
uint32 Type; // Тип страницы
Expand All @@ -4649,16 +4719,16 @@ struct SDataPageHeader {
uint16 Flags;
uint16 FixedChunkSize; // Если GetType() == tFixedChunkPool, то >0 иначе - 0.
uint32 TotalSize; // Общий размер страницы вместе с этим заголовком и sentinel'ами (если есть такие)
uint32 FreePos; // Смещение, с которого начинается свободное пространство. Свободный размер = (TotalSize-FreePos-EndSentinelSize)
uint32 FreePos; // Смещение, с которого начинается свободное пространство. Свободный размер = (TotalSize-FreePos)
};

class SRecPageFreeList {
public:
struct FreeEntry {
FreeEntry() : Seq(0), FreeSize(0)
FreeEntry() : RowId(0ULL), FreeSize(0)
{
}
uint32 Seq;
uint64 RowId;
uint32 FreeSize;
};
private:
Expand All @@ -4669,7 +4739,7 @@ class SRecPageFreeList {
}
int Serialize(int dir, SBuffer & rBuf, SSerializeContext * pSCtx);
uint32 GetType() const { return Type; }
int Put(uint32 seq, uint32 freeSize);
int Put(uint64 rowId, uint32 freeSize);
const FreeEntry * Get(uint32 reqSize) const;
private:
const uint32 Type;
Expand All @@ -4692,7 +4762,12 @@ class SRecPageManager {
SRecPageManager(uint32 pageSize);
~SRecPageManager();
int Write(uint64 * pRowId, uint pageType, const void * pData, size_t dataLen);
int Read(uint64 rowId, void * pBuf, size_t bufSize);
//
// Returns:
// 0 - error
// !0 - actual size of the read data
//
uint Read(uint64 rowId, void * pBuf, size_t bufSize);
private:
SDataPageHeader * GetPage(uint32 seq);
SDataPageHeader * AllocatePage(uint32 type);
Expand Down
16 changes: 16 additions & 0 deletions Src/Include/Pp.h
Original file line number Diff line number Diff line change
Expand Up @@ -31052,11 +31052,27 @@ class PPObjComputer : public PPObjGoods { // @construction
~PPObjComputer();
int Get(PPID id, PPComputerPacket * pPack);
int Put(PPID * pID, PPComputerPacket * pPack, int use_ta);
//
// Descr: Находит все идентификаторы компьютеров, имеющих mac-адрес равный rKey.
// Предварительно очищает список rIdList.
// Note: Вообще, все компьютеры должны иметь уникальные mac-адреса, но в реальности
// возможны какие-то сбои с работе системы, эксцессы исполнителей и т.д. По-этому
// нам нужна функция, которая вернет все идентификаторы записей, имеющих заданный mac-адрес.
//
int GetListByMacAddr(const MACAddr & rKey, PPIDArray & rIdList);
//
// Descr: Находит первую запись компьютера, имеющую mac-адрес равный rKey.
// Note: See note to function GetListByMacAddr
//
int SearchByMacAddr(const MACAddr & rKey, PPID * pID, PPComputerPacket * pPack);
int GenerateName(PPID categoryID, SString & rBuf);
private:
virtual ListBoxDef * Selector(ListBoxDef * pOrgDef, long flags, void * extraPtr);
virtual int Edit(PPID * pID, void * extraPtr);
//
// Descr: Реализация извлечения записей по критерию равенства mac-адреса.
//
int Implement_GetByMacAddr(const MACAddr & rKey, PPID * pID, PPComputerPacket * pPack, PPIDArray * pIdList);

PPObjProcessor * P_PrcObj; // Скрытый экземпляр для быстрой обработки сообщений DBMSG_COMPUTERACQUIRECAT
};
Expand Down
Loading

0 comments on commit 15dc4d2

Please sign in to comment.