示例#1
0
Field::Field(
    const Cursor &cursor, 
    const Namespace &currentNamespace, 
    Class *parent
)
    : LanguageType( cursor, currentNamespace )
    , m_isConst( cursor.GetType( ).IsConst( ) )
    , m_parent( parent )
    , m_name( cursor.GetSpelling( ) )
    , m_type( utils::GetQualifiedName( cursor.GetType( ) ) )
{
    auto displayName = m_metaData.GetNativeString( native_property::DisplayName );

    if (displayName.empty( ))
        m_displayName = m_name;
    else
        m_displayName = displayName;

    m_explicitGetter = m_metaData.GetNativeString( native_property::ExplicitGetter );
    m_veryExplicitGetter = m_metaData.GetNativeString( native_property::VeryExplicitGetter );
    m_hasExplicitGetter = !m_explicitGetter.empty( ) || !m_veryExplicitGetter.empty( );

    m_explicitSetter = m_metaData.GetNativeString( native_property::ExplicitSetter );
    m_hasExplicitSetter = !m_explicitSetter.empty( );
}
Global::Global(
    const Cursor &cursor, 
    const Namespace &currentNamespace, 
    Class *parent
)
    : LanguageType( cursor, currentNamespace )
    , m_isConst( cursor.GetType( ).IsConst( ) )
    , m_hasExplicitGetter( m_metaData.GetFlag( native_property::ExplicitGetter ) )
    , m_hasExplicitSetter( m_metaData.GetFlag( native_property::ExplicitSetter ) )
    , m_parent( parent )
    , m_name( cursor.GetSpelling( ) )
    , m_qualifiedName( utils::GetQualifiedName( cursor, currentNamespace ) )
    , m_type( utils::GetQualifiedName( cursor.GetType( ) ) )
{
    auto displayName = m_metaData.GetNativeString( native_property::DisplayName );

    if (displayName.empty( ))
    {
        m_displayName = m_qualifiedName;
    }
    else
    {
        m_displayName = 
            utils::GetQualifiedName( displayName, currentNamespace );
    }
}
示例#3
0
Field::Field(
    const Cursor &cursor, 
    const Namespace &currentNamespace, 
    Class *parent
)
    : LanguageType( cursor, currentNamespace )
    , m_isConst( cursor.GetType( ).IsConst( ) )
    , m_parent( parent )
    , m_name( cursor.GetSpelling( ) )
    , m_type( cursor.GetType( ).GetDisplayName( ) )
{
    auto displayName = m_metaData.GetNativeString( kMetaDisplayName );

    if (displayName.empty( ))
        m_displayName = m_name;
    else
        m_displayName = displayName;

    m_explicitGetter = m_metaData.GetNativeString( kMetaExplicitGetter );
    m_hasExplicitGetter = !m_explicitGetter.empty( );

    m_explicitSetter = m_metaData.GetNativeString( kMetaExplicitSetter );
    m_hasExplicitSetter = !m_explicitSetter.empty( );
}
示例#4
0
Enum::Enum(const Cursor &cursor, const Namespace &currentNamespace)
    : LanguageType( cursor, currentNamespace )
    , m_name( cursor.GetType( ).GetDisplayName( ) )
    , m_qualifiedName( m_name )
{
    auto displayName = m_metaData.GetNativeString( kMetaDisplayName );

    if (displayName.empty( ))
        m_displayName = m_qualifiedName;
    else
        m_displayName = utils::GetQualifiedName( cursor, currentNamespace );

    // it's an anonymous enum?
    if (m_displayName.find( "anonymous enum" ) != std::string::npos)
        m_displayName = "";

    for (auto &child : cursor.GetChildren( ))
    {
        if (child.GetKind( ) == CXCursor_EnumConstantDecl)
            m_values.emplace_back( this, child );
    }
}
示例#5
0
Class::Class(const Cursor &cursor, const Namespace &currentNamespace)
    : LanguageType( cursor, currentNamespace )
    , m_name( cursor.GetDisplayName( ) )
    , m_qualifiedName( cursor.GetType( ).GetDisplayName( ) )
{
    auto displayName = m_metaData.GetNativeString( native_property::DisplayName );

    if (displayName.empty( ))
    {
        m_displayName = m_qualifiedName;
    }
    else
    {
        m_displayName = displayName;
    }

    for (auto &child : cursor.GetChildren( ))
    {
        switch (child.GetKind( ))
        {
        case CXCursor_CXXBaseSpecifier:
        {
            auto baseClass = new BaseClass( child );

            m_baseClasses.emplace_back( baseClass );

            // automatically enable the type if not explicitly disabled
            if (isNativeType( baseClass->name ))
                m_enabled = !m_metaData.GetFlag( native_property::Disable );
        }
            break;
        // constructor
        case CXCursor_Constructor:
            m_constructors.emplace_back( 
                new Constructor( child, currentNamespace, this ) 
            );
            break;
        // field
        case CXCursor_FieldDecl:
            m_fields.emplace_back( 
                new Field( child, currentNamespace, this )
            );
            break;
        // static field
        case CXCursor_VarDecl:
            m_staticFields.emplace_back( 
                new Global( child, Namespace( ), this ) 
            );
            break;
        // method / static method
        case CXCursor_CXXMethod:
            if (child.IsStatic( )) 
            { 
                m_staticMethods.emplace_back( 
                    new Function( child, Namespace( ), this ) 
                );
            }
            else 
            { 
                m_methods.emplace_back( 
                    new Method( child, currentNamespace, this ) 
                );
            }
            break;
        default:
            break;
        }
    }
}
示例#6
0
BaseClass::BaseClass(const Cursor &cursor)
    : name( cursor.GetType( ).GetCanonicalType( ).GetDisplayName( ) )
{

}