public String getName() { return (_package.isEmpty() ? "" : (_package + '.')) + getSimpleName(); }
public SrcConstructor( SrcClass owner ) { super( owner ); if( owner != null ) { name( owner.getSimpleName() ); } }
private void addExtensionInterfacesToExistingClass( SrcClass srcClass, StringBuilder sb ) { String start = (srcClass.isInterface() ? "interface " : "class ") + srcClass.getSimpleName(); int iStart = sb.indexOf( start ); int iBrace = sb.indexOf( "{", iStart ); StringBuilder sbSrcClass = new StringBuilder(); srcClass.render( sbSrcClass, 0 ); int iSrcClassStart = sbSrcClass.indexOf( start ); int iSrcClassBrace = sbSrcClass.indexOf( "{", iSrcClassStart ); String fromSrcClass = sbSrcClass.substring( iSrcClassStart, iSrcClassBrace ); sb.replace( iStart, iBrace, fromSrcClass ); }
private void addExtensionInterfacesToExistingClass( SrcClass srcClass, StringBuilder sb ) { String start = (srcClass.isInterface() ? "interface " : "class ") + srcClass.getSimpleName(); int iStart = sb.indexOf( start ); int iBrace = sb.indexOf( "{", iStart ); StringBuilder sbSrcClass = new StringBuilder(); srcClass.render( sbSrcClass, 0 ); int iSrcClassStart = sbSrcClass.indexOf( start ); int iSrcClassBrace = sbSrcClass.indexOf( "{", iSrcClassStart ); String fromSrcClass = sbSrcClass.substring( iSrcClassStart, iSrcClassBrace ); sb.replace( iStart, iBrace, fromSrcClass ); }
private boolean hasThisAnnotation( AbstractSrcMethod method, SrcClass extendedType ) { List params = method.getParameters(); if( params.size() == 0 ) { return false; } SrcParameter param = (SrcParameter)params.get( 0 ); if( !param.hasAnnotation( This.class ) ) { return false; } // checking only for simple name for cases where the name cannot be resolved yet e.g., extension method on another source producer type return param.getType().getName().endsWith( extendedType.getSimpleName() ); }
private boolean hasThisAnnotation( AbstractSrcMethod method, SrcClass extendedType ) { List params = method.getParameters(); if( params.size() == 0 ) { return false; } SrcParameter param = (SrcParameter)params.get( 0 ); if( !param.hasAnnotation( This.class ) ) { return false; } // checking only for simple name for cases where the name cannot be resolved yet e.g., extension method on another source producer type return param.getType().getName().endsWith( extendedType.getSimpleName() ); }
private void addExtensionAnnotationsToExistingClass( SrcClass srcClass, StringBuilder sb ) { if( srcClass.getAnnotations().isEmpty() ) { return; } StringBuilder sbAnnos = new StringBuilder(); for( SrcAnnotationExpression anno : srcClass.getAnnotations() ) { anno.render( sbAnnos, 0 ).append( '\n' ); } String start = (srcClass.isInterface() ? "interface " : "class ") + srcClass.getSimpleName(); int iStart = sb.indexOf( start ); while( iStart != 0 ) { if( sb.charAt( iStart ) == '\n' ) { break; } iStart--; } if( sb.charAt( iStart ) == '\n' ) { iStart++; } sb.insert( iStart, sbAnnos ); }
private void addExtensionAnnotationsToExistingClass( SrcClass srcClass, StringBuilder sb ) { if( srcClass.getAnnotations().isEmpty() ) { return; } StringBuilder sbAnnos = new StringBuilder(); for( SrcAnnotationExpression anno : srcClass.getAnnotations() ) { anno.render( sbAnnos, 0 ).append( '\n' ); } String start = (srcClass.isInterface() ? "interface " : "class ") + srcClass.getSimpleName(); int iStart = sb.indexOf( start ); while( iStart != 0 ) { if( sb.charAt( iStart ) == '\n' ) { break; } iStart--; } if( sb.charAt( iStart ) == '\n' ) { iStart++; } sb.insert( iStart, sbAnnos ); }
private void renderAnnotation( StringBuilder sb, int indent ) { renderAnnotations( sb, indent, false ); indent( sb, indent ); renderModifiers( sb, getModifiers() & ~(Modifier.FINAL | Modifier.ABSTRACT), false, Modifier.PUBLIC ); sb.append( "@interface " ).append( getSimpleName() ) .append( " {\n" ); renderClassFeatures( sb, indent + INDENT ); indent( sb, indent ); sb.append( "}\n\n" ); }
private void renderClassOrInterface( StringBuilder sb, int indent ) { renderAnnotations( sb, indent, false ); indent( sb, indent ); renderModifiers( sb, false, Modifier.PUBLIC ); sb.append( _kind == Kind.Interface ? "interface " : "class " ).append( getSimpleName() ).append( renderTypeVars( _typeVars, sb ) ) .append( genClassExtends( sb ) ) .append( renderClassImplements( sb ) ) .append( " {\n" ); renderClassFeatures( sb, indent + INDENT ); indent( sb, indent ); sb.append( "}\n\n" ); }
private void renderEnum( StringBuilder sb, int indent ) { renderAnnotations( sb, indent, false ); indent( sb, indent ); renderModifiers( sb, getModifiers() & ~Modifier.FINAL, false, Modifier.PUBLIC ); sb.append( "enum " ).append( getSimpleName() ) .append( renderClassImplements( sb ) ) .append( " {\n" ); renderEnumConstants( sb, indent + INDENT ); renderClassFeatures( sb, indent + INDENT ); indent( sb, indent ); sb.append( "}\n\n" ); }
public SrcMethod( SrcClass srcClass, boolean isCtor ) { super( srcClass ); setConstructor( isCtor ); if( !isCtor ) { returns( "void" ); } else { name( srcClass.getSimpleName() ); } } }