CPGen
C++ project generator
Loading...
Searching...
No Matches
Public Member Functions | List of all members
ModuleResolver Class Reference

Resolves module names to their fully parsed ResolvedModule descriptors. More...

#include <ModuleResolver.hpp>

Public Member Functions

 ModuleResolver ()
 Constructs a ModuleResolver and resolves template search paths.
 
std::pair< ResolvedModule, std::vector< TargetInjection > > resolveModule (const std::string &module_name)
 Locate and parse a module by name.
 

Detailed Description

Resolves module names to their fully parsed ResolvedModule descriptors.

On construction the resolver builds a list of candidate template directories (see resolvePaths). Subsequent resolveModule calls search those directories in priority order and parse the first matching JSON file.

Search path priority

  1. ~/.config/cpgen/templates (user-local)
  2. /usr/local/share/cpgen/templates (system-wide, local install)
  3. /usr/share/cpgen/templates (system-wide, package manager install)
  4. <executable_dir>/templates (development in-tree build)
Exceptions
std::runtime_errorfrom the constructor if none of the candidate paths exist on the current machine.

Constructor & Destructor Documentation

◆ ModuleResolver()

ModuleResolver::ModuleResolver ( )

Constructs a ModuleResolver and resolves template search paths.

Exceptions
std::runtime_errorIf no valid template directory is found.

Member Function Documentation

◆ resolveModule()

std::pair< ResolvedModule, std::vector< TargetInjection > > ModuleResolver::resolveModule ( const std::string &  module_name)

Locate and parse a module by name.

Searches m_resolved_paths for a file at <path>/modules/<module_name>/<module_name>.json and parses it.

Parameters
module_nameIdentifier of the module to resolve (e.g. "gtest").
Returns
A pair of:
  • ResolvedModule — parsed metadata and optional FetchContent info.
  • std::vector<TargetInjection> — CMake snippets for each target the module contributes to.
Exceptions
std::runtime_errorIf the module JSON file cannot be found or opened.

The documentation for this class was generated from the following files: