1
0
Fork 0
libreoffice/codemaker/source/netmaker/netproduce.hxx
Daniel Baumann 8e63e14cf6
Adding upstream version 4:25.2.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 16:20:04 +02:00

71 lines
2.5 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 <unordered_set>
#include <string_view>
#include <codemaker/typemanager.hxx>
#include <rtl/string.hxx>
#include <unoidl/unoidl.hxx>
#include "netoptions.hxx"
class NetProducer
{
public:
NetProducer()
: m_manager(new TypeManager())
, m_verbose(false)
, m_dryRun(false)
{
}
public:
void initProducer(const NetOptions& options);
void produceAll();
private:
void produceType(const OString& name);
void produceModule(std::string_view name, const rtl::Reference<unoidl::MapCursor>& cursor);
void produceEnum(std::string_view name, const rtl::Reference<unoidl::EnumTypeEntity>& entity);
void producePlainStruct(std::string_view name,
const rtl::Reference<unoidl::PlainStructTypeEntity>& entity);
void
producePolyStruct(std::string_view name,
const rtl::Reference<unoidl::PolymorphicStructTypeTemplateEntity>& entity);
void produceException(std::string_view name,
const rtl::Reference<unoidl::ExceptionTypeEntity>& entity);
void produceInterface(std::string_view name,
const rtl::Reference<unoidl::InterfaceTypeEntity>& entity);
void produceTypedef(std::string_view name, const rtl::Reference<unoidl::TypedefEntity>& entity);
void produceConstantGroup(std::string_view name,
const rtl::Reference<unoidl::ConstantGroupEntity>& entity);
void produceService(std::string_view name,
const rtl::Reference<unoidl::SingleInterfaceBasedServiceEntity>& entity);
void produceSingleton(std::string_view name,
const rtl::Reference<unoidl::InterfaceBasedSingletonEntity>& entity);
OString getNetName(std::string_view name);
OString getNetName(std::u16string_view name);
private:
rtl::Reference<TypeManager> m_manager;
std::unordered_set<OString> m_startingTypes;
std::unordered_set<OString> m_typesProduced;
std::unordered_map<OString, OString> m_typedefs;
OString m_outputDir;
bool m_verbose;
bool m_dryRun;
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */