当前位置: 首页>>代码示例>>C++>>正文


C++ DM::SetRoot方法代码示例

本文整理汇总了C++中DM::SetRoot方法的典型用法代码示例。如果您正苦于以下问题:C++ DM::SetRoot方法的具体用法?C++ DM::SetRoot怎么用?C++ DM::SetRoot使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DM的用法示例。


在下文中一共展示了DM::SetRoot方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: DM

shared_ptr<DistMatrix<T,U,V>> 
WriteProxy( AbstractDistMatrix<S>* A, const ProxyCtrl& ctrl )
{
    typedef DistMatrix<T,U,V> DM;
    if( std::is_same<S,T>::value )
    {
        DM* ACast = dynamic_cast<DM*>(A);

        const bool haveDist = (ACast != nullptr);
        const bool haveColAlign = haveDist &&
            (!ctrl.colConstrain || A->ColAlign() == ctrl.colAlign);
        const bool haveRowAlign = haveDist &&
            (!ctrl.rowConstrain || A->RowAlign() == ctrl.rowAlign);
        const bool haveRoot = haveDist &&
            (!ctrl.rootConstrain || A->Root() == ctrl.root);

        if( haveColAlign && haveRowAlign && haveRoot )
        {
            // Constrain the proxy to have the forced alignemnts.
            // This is somewhat tricky since a subsequent write could otherwise
            // change the alignment.
            if( ctrl.colConstrain )
                A->AlignCols( ctrl.colAlign );
            if( ctrl.rowConstrain )
                A->AlignRows( ctrl.rowAlign );
            if( ctrl.rootConstrain )
                A->SetRoot( ctrl.root );
            return shared_ptr<DM>( ACast, []( const DM* B ) { } );
        }
    }

    DM* ARaw = new DM( A->Grid() );
    try
    {
        if( ctrl.rootConstrain )
            ARaw->SetRoot( ctrl.root );
        if( ctrl.colConstrain )
            ARaw->AlignCols( ctrl.colAlign );
        if( ctrl.rowConstrain )
            ARaw->AlignRows( ctrl.rowAlign );
        ARaw->Resize( A->Height(), A->Width() );
    }
    catch( std::exception& e )
    {
        delete ARaw;
        throw e;
    }

    return shared_ptr<DM>
           ( ARaw, [=]( const DM* B ) { Copy( *B, *A ); delete B; } );
}
开发者ID:sg0,项目名称:Elemental,代码行数:51,代码来源:Proxy.cpp


注:本文中的DM::SetRoot方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。