• # Petit joueur....

    Posté par . En réponse au journal ha le php et ses élites. Évalué à 5.

    Une petite macro parmi plein d'autres dans le code sur lequel je bosse :


    #define UOL_IMPLEMENT_FIND_INFO_CLASS(class_name,base_class) \
    UOL_IMPLEMENT_SERIAL( class_name##FindInfo, base_class##FindInfo, \
    UOL_RUNTIME_CLASS(class_name)->GetSchema() | VERSIONABLE_SUBSCHEMA ) \
    class_name##FindInfo::class_name##FindInfo( class_name##Properties *pOriginal ) \
    : m_pOriginal( pOriginal ) { if( m_pOriginal ) m_pOriginal->AddRef() ; } \
    void class_name##FindInfo::OnCreate( UINT uFlags ) \
    { base_class##FindInfo::OnCreate( uFlags ) ; \
    if( GetRuntimeClass() == UOL_RUNTIME_CLASS( class_name##FindInfo ) ) { \
    ASSERT( !m_pProperties ) ; \
    m_pProperties = new class_name##Properties ; \
    m_pProperties->Initialize( this, m_pOriginal ) ; \
    m_pProperties->OnCreate( uFlags ) ; UOL_ASSERT_VALID( m_pProperties ) ; \
    m_pProperties->AddRef() ; \
    if( m_pOriginal ) { SetClass( m_pOriginal->GetOwner()->GetRuntimeClass() ) ; \
    CUOLGUID *pGUID = dynamic_cast<CUOLGUID *>( m_pOriginal->GetOwner() ) ; \
    UOL_ASSERT_VALID( pGUID ) ; SetGUID( &pGUID->GetGUID() ) ; } \
    else SetClass( UOL_RUNTIME_CLASS( class_name ) ) ; \
    if( m_pOriginal ) m_pOriginal->ReleaseRef() ; } } \
    __UOL_IMPLEMENT_GET_PROPERTIES(class_name##FindInfo,class_name##Properties) \
    __UOL_IMPLEMENT_DIAGNOSTICS_FIND_INFO(class_name,base_class)