/* * Copyright (C) Ascensio System SIA, 2009-2026 * * This program is a free software product. You can redistribute it and/or * modify it under the terms of the GNU Affero General Public License (AGPL) * version 3 as published by the Free Software Foundation, together with the * additional terms provided in the LICENSE file. * * This program is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For * details, see the GNU AGPL at: https://www.gnu.org/licenses/agpl-3.0.html * * You can contact Ascensio System SIA by email at info@onlyoffice.com * or by postal mail at 20A-6 Ernesta Birznieka-Upisha Street, Riga, * LV-1050, Latvia, European Union. * * The interactive user interfaces in modified versions of the Program * are required to display Appropriate Legal Notices in accordance with * Section 5 of the GNU AGPL version 3. * * No trademark rights are granted under this License. * * All non-code elements of the Product, including illustrations, * icon sets, and technical writing content, are licensed under the * Creative Commons Attribution-ShareAlike 4.0 International License: * https://creativecommons.org/licenses/by-sa/4.0/legalcode * * This license applies only to such non-code elements and does not * modify or replace the licensing terms applicable to the Program's * source code, which remains licensed under the GNU Affero General * Public License v3. * * SPDX-License-Identifier: AGPL-3.0-only */ #ifndef COMMON_H #define COMMON_H #include #include #include #include namespace HWP { typedef char16_t HWP_CHAR; typedef std::wstring HWP_STRING; typedef char HWP_BYTE; #define LIST std::list #define VECTOR std::vector #define TO_HWP_STRING(val) std::to_wstring(val) #define CLEAR_ARRAY(type, array) \ for (type* pValue : array) \ if (nullptr != pValue) \ delete pValue #define SWITCH(type, value) switch(static_cast(value)) #define CASE(value) case value : return value #define DEFAULT(value) case value: default: return value #define MAKE_STR(value) #value #define STR(value) MAKE_STR(#value) #define MAKE_WSTR(value) L##value #define WSTR(value) MAKE_WSTR(#value) #define RETURN_VECTOR_CONST_PTR(type, array_values) \ std::vector arTempVector(array_values.size()); \ for (unsigned int unIndex = 0; unIndex < array_values.size(); ++unIndex) \ arTempVector[unIndex] = dynamic_cast(array_values[unIndex]); \ return arTempVector #define TO_LOWER(value) std::transform(value.begin(), value.end(), value.begin(), tolower) #define TO_UPPER(value) std::transform(value.begin(), value.end(), value.begin(), toupper) class IRef { unsigned long m_ulRef; public: IRef() { m_ulRef = 1; } virtual ~IRef() { } virtual unsigned long AddRef() { ++m_ulRef; return m_ulRef; } virtual unsigned long Release() { unsigned long ulRet = --m_ulRef; if (0 == m_ulRef) delete this; return ulRet; } }; } #endif // COMMON_H