mirror of
https://github.com/luau-lang/luau.git
synced 2024-11-15 14:25:44 +08:00
64 lines
1.7 KiB
C++
64 lines
1.7 KiB
C++
// This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details
|
|
#pragma once
|
|
|
|
#include "Luau/DenseHash.h"
|
|
#include "Luau/Variant.h"
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace Luau
|
|
{
|
|
|
|
struct FunctionDocumentation;
|
|
struct TableDocumentation;
|
|
struct OverloadedFunctionDocumentation;
|
|
struct BasicDocumentation;
|
|
|
|
using Documentation = Luau::Variant<BasicDocumentation, FunctionDocumentation, TableDocumentation, OverloadedFunctionDocumentation>;
|
|
using DocumentationSymbol = std::string;
|
|
|
|
struct BasicDocumentation
|
|
{
|
|
std::string documentation;
|
|
std::string learnMoreLink;
|
|
std::string codeSample;
|
|
};
|
|
|
|
struct FunctionParameterDocumentation
|
|
{
|
|
std::string name;
|
|
DocumentationSymbol documentation;
|
|
};
|
|
|
|
// Represents documentation for anything callable. This could be a method or a
|
|
// callback or a free function.
|
|
struct FunctionDocumentation
|
|
{
|
|
std::string documentation;
|
|
std::vector<FunctionParameterDocumentation> parameters;
|
|
std::vector<DocumentationSymbol> returns;
|
|
std::string learnMoreLink;
|
|
std::string codeSample;
|
|
};
|
|
|
|
struct OverloadedFunctionDocumentation
|
|
{
|
|
// This is a map of function signature to overload symbol name.
|
|
Luau::DenseHashMap<std::string, DocumentationSymbol> overloads;
|
|
};
|
|
|
|
// Represents documentation for a table-like item, meaning "anything with keys".
|
|
// This could be a table or a class.
|
|
struct TableDocumentation
|
|
{
|
|
std::string documentation;
|
|
Luau::DenseHashMap<std::string, DocumentationSymbol> keys;
|
|
std::string learnMoreLink;
|
|
std::string codeSample;
|
|
};
|
|
|
|
using DocumentationDatabase = Luau::DenseHashMap<DocumentationSymbol, Documentation>;
|
|
|
|
} // namespace Luau
|