Files
odfstudio/include/basctl/idecodecompletiontypes.hxx
Xisco Fauli fb28678005 loplugin:unusedmethods
Change-Id: If3dae53e3cf16df2d0c505a898138dfa6fe6c0f9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205442
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-05-22 09:32:38 +02:00

171 lines
4.3 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#pragma once
#include <vector>
#include <map>
#include <optional>
#include <memory>
#include <string_view>
#include <rtl/ustring.hxx>
#include <basic/sbxdef.hxx>
namespace basctl
{
enum class IdeSymbolKind
{
UNKNOWN,
VARIABLE,
CONSTANT,
PARAMETER,
FUNCTION,
SUB,
PROPERTY_GET,
PROPERTY_LET,
PROPERTY_SET,
UDT, // User Defined Type (Struct)
UDT_MEMBER,
ENUM,
ENUM_MEMBER,
MODULE,
NAMESPACE,
LIBRARY,
CLASS_MODULE, // BASIC Class Module
// UNO specific kinds
UNO_SERVICE,
UNO_INTERFACE,
UNO_STRUCT,
UNO_ENUM,
UNO_CONSTANTS, // A constants group
UNO_EXCEPTION,
UNO_TYPE, // Generic UNO type
UNO_TYPEDEF,
UNO_METHOD,
UNO_PROPERTY,
UNO_FIELD, // For struct/exception members
// Built-in specific kinds
BUILTIN_FUNCTION,
BUILTIN_PROPERTY,
GLOBAL_CONSTANT_UNO, // e.g. StarDesktop
// Logical groupings for the browser UI
ROOT_APPLICATION_LIBS,
ROOT_DOCUMENT_LIBS,
ROOT_UNO_APIS,
ROOT_BASIC_BUILTINS,
UNO_NAMESPACE,
PLACEHOLDER // For temporary UI nodes like "[Loading...]"
};
enum class IdeScopeKind
{
UNKNOWN,
GLOBAL_APPLICATION,
GLOBAL_DOCUMENT,
LIBRARY_PUBLIC,
MODULE_PUBLIC,
MODULE_PRIVATE,
CLASS_MEMBER_PUBLIC,
CLASS_MEMBER_PRIVATE,
PROCEDURE_LOCAL,
BLOCK_LOCAL,
WITH_BLOCK_MEMBER
};
enum class IdeAccessModifier
{
NOT_APPLICABLE,
PUBLIC,
PRIVATE
};
struct IdeParamInfo
{
OUString sName;
OUString sTypeName;
OUString sQualifiedTypeName;
SbxDataType eBasicType = SbxDataType::SbxEMPTY;
bool bIsByVal = true;
bool bIsOptional = false;
bool bIsUnoTypeOrigin = false;
std::optional<OUString> osDefaultValueExpression;
bool bIsParamArray = false;
// For UNO parameters
bool bIsOut = false;
bool bIsIn = true;
IdeParamInfo() = default;
};
/**
* @struct IdeDimensionInfo
* @brief Represents array dimension bounds.
*/
struct IdeDimensionInfo
{
sal_Int32 nLowerBound = 0;
sal_Int32 nUpperBound = 0;
bool bIsDynamic = true;
IdeDimensionInfo() = default;
};
/**
* @struct IdeSymbolInfo
* @brief Comprehensive structure for storing metadata about any program symbol.
* @comment For mapMembers, the IdeSymbolInfo objects pointed to are owned.
* Direct cycles through mapMembers are not expected from BASIC language constructs.
* UNO type cycles are handled by name resolution against a global UNO type cache.
*/
struct IdeSymbolInfo
{
bool bSelectable = true;
OUString sIdentifier;
OUString sName;
OUString sQualifiedName;
IdeSymbolKind eKind = IdeSymbolKind::UNKNOWN;
OUString sTypeName;
OUString sQualifiedTypeName;
SbxDataType eBasicType = SbxDataType::SbxEMPTY;
bool bIsUnoTypeOrigin = false;
IdeScopeKind eScope = IdeScopeKind::UNKNOWN;
OUString sOriginLibrary;
OUString sOriginLocation;
OUString sOriginModule;
OUString sOriginUnoContainer;
OUString sParentName;
sal_Int32 nSourceLine = -1;
sal_Int32 nSourceColumn = -1;
std::vector<IdeParamInfo> aParameters;
OUString sReturnTypeName;
OUString sQualifiedReturnTypeName;
bool bIsArray = false;
std::vector<IdeDimensionInfo> aArrayDimensions;
IdeAccessModifier eAccessModifier = IdeAccessModifier::NOT_APPLICABLE;
bool bIsResolved = true;
bool bHasParseErrors = false;
std::optional<OUString> osConstantValue;
std::optional<OUString> osBriefDescription;
std::optional<OUString> osFullSignatureForDisplay;
std::optional<OUString> osHelpURL;
std::map<OUString, std::shared_ptr<IdeSymbolInfo>> mapMembers;
IdeSymbolInfo() = default;
IdeSymbolInfo(std::u16string_view rName, IdeSymbolKind eTheKind,
std::u16string_view rParentIdentifier);
};
using SymbolInfoList = std::vector<std::shared_ptr<IdeSymbolInfo>>;
using ParamInfoList = std::vector<IdeParamInfo>;
} // namespace basctl
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */