SmApiUsdHeal.h#

Fully qualified name: SM_API_USD/inc/SmApiUsdHeal.h

File members: SM_API_USD/inc/SmApiUsdHeal.h

// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

/******************************************************************/
#ifndef _SM_API_USD_HEAL_H_
#define _SM_API_USD_HEAL_H_

#include "SmApiUsdConfig.h"
#include <SmMessages.h>

#include "UsdBrepHeaders.h" // pxr headers with warning suppression (BREP_USD_DATA)
#include <pxr/usd/sdf/layer.h>
#include <pxr/usd/sdf/path.h>
#include <pxr/usd/usd/prim.h>
#include <pxr/usd/usd/stage.h>

#include <cstddef>
#include <memory>
#include <string>
#include <vector>

namespace UsdBrepData
{
class UsdBrepArrayData;
}

struct SmApiUsdBrepArraySite
{
    pxr::SdfLayerHandle        m_sLayer;
    pxr::SdfPath               m_sSpecPath;
    std::vector<pxr::SdfPath>  m_sPrimPaths;
    std::string                m_sProblem;
};

SM_API_USD_EXPORT SmStatus SmApiUsdFindBrepArraySites
(
    const pxr::UsdStagePtr                  & crStage,
    std::vector<SmApiUsdBrepArraySite>      & rSites
);

struct SmApiUsdHealedBrepArray
{
    pxr::SdfPath                                         m_sPrimPath;
    std::string                                          m_sMessage;
    std::size_t                                          m_lBrepCount = 0;
    std::shared_ptr<const UsdBrepData::UsdBrepArrayData> m_pArrays;
};

SM_API_USD_EXPORT SmStatus SmApiUsdHealBrepArray
(
    const pxr::UsdPrim                      & crBrepArray,
    SmApiUsdHealedBrepArray                 & rHealed
);

SM_API_USD_EXPORT SmStatus SmApiUsdWriteHealedBrepArray
(
    const SmApiUsdHealedBrepArray           & crHealed,
    const pxr::UsdStagePtr                  & crStage,
    std::string                             & rMessage
);

#endif // _SM_API_USD_HEAL_H_