Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:23:48

0001 //------------------------------- -*- C++ -*- -------------------------------//
0002 // Copyright Celeritas contributors: see top-level COPYRIGHT file for details
0003 // SPDX-License-Identifier: (Apache-2.0 OR MIT)
0004 //---------------------------------------------------------------------------//
0005 //! \file orange/orangeinp/detail/BuildIntersectRegion.hh
0006 //---------------------------------------------------------------------------//
0007 #pragma once
0008 
0009 #include <string>
0010 #include <string_view>
0011 
0012 #include "../CsgTypes.hh"
0013 
0014 namespace celeritas
0015 {
0016 namespace orangeinp
0017 {
0018 class IntersectRegionInterface;
0019 namespace detail
0020 {
0021 class VolumeBuilder;
0022 //---------------------------------------------------------------------------//
0023 
0024 // Build a intersect region
0025 [[nodiscard]] NodeId
0026 build_intersect_region(VolumeBuilder& vb,
0027                        std::string&& label,
0028                        std::string&& face_prefix,
0029                        IntersectRegionInterface const& region);
0030 
0031 //! Build a intersect region with no face prefix
0032 [[nodiscard]] inline NodeId
0033 build_intersect_region(VolumeBuilder& vb,
0034                        std::string&& label,
0035                        IntersectRegionInterface const& region)
0036 {
0037     return build_intersect_region(vb, std::move(label), {}, region);
0038 }
0039 
0040 //! Build a intersect region using a string view
0041 [[nodiscard]] inline NodeId
0042 build_intersect_region(VolumeBuilder& vb,
0043                        std::string_view label,
0044                        std::string&& face_prefix,
0045                        IntersectRegionInterface const& region)
0046 {
0047     return build_intersect_region(
0048         vb, std::string{label}, std::move(face_prefix), region);
0049 }
0050 
0051 //---------------------------------------------------------------------------//
0052 }  // namespace detail
0053 }  // namespace orangeinp
0054 }  // namespace celeritas