CPPFile.hpp

Generate a C++ file from code.

This file is part of Empirical, https://github.com/devosoft/Empirical Copyright (C) 2024 Michigan State University MIT Software license; see doc/LICENSE.md

Note

Status: ALPHA

Defines

INCLUDE_EMP_IO_CPPFILE_HPP_GUARD
class CPPFile
#include <CPPFile.hpp>

A class to maintain files for loading, writing, storing, and easy access to components.

Public Functions

inline CPPFile(String filename = "")
inline void Clear()
inline CPPFile &SetGuards(String guard_str)
inline CPPFile &SetNamespace(String ns)
inline const vector<String> &GetCode() const
inline const std::set<String> &GetIncludes() const
template<typename ...Ts>
inline CPPFile &AddCode(Ts&&... args)
template<typename ...Ts>
inline CPPFile &AddCodeBlock(const String &line1, Ts&&... extras)
template<typename ...Ts>
inline CPPFile &AppendCode(Ts&&... args)
inline CPPFile &AppendPadding(size_t target_size, char c = ' ')

Add spaces (or other character) to make current line at least a specified length. (usually used to align code or comments)

template<typename ...Ts>
inline CPPFile &AddVarSetting(const String &var, Ts&&... value)
inline CPPFile &IncIndent(size_t size = 2)
inline CPPFile &DecIndent(size_t size = 2)
inline CPPFile &Include(String filename)
inline CPPFile &Write(std::ostream &os)
inline CPPFile &Write()

Protected Attributes

String filename
vector<String> header
String include_guard
std::set<String> includes
String name_space
vector<String> code
String indent
std::unordered_map<String, String> var_map