// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3) deadcode 
// Source File Name:   ProgramElementDocImpl.java

package com.sun.tools.javadoc;

import com.sun.javadoc.*;
import com.sun.tools.javac.v8.code.Symbol;
import java.lang.reflect.Modifier;
import java.text.CollationKey;
import java.text.Collator;

// Referenced classes of package com.sun.tools.javadoc:
//            DocImpl, DocEnv, DocLocale

public abstract class ProgramElementDocImpl extends DocImpl
    implements ProgramElementDoc
{

    protected int getModifiers()
    {
        return DocEnv.translateModifiers(getFlags());
    }

    public int modifierSpecifier()
    {
        int i = getModifiers();
        if(isMethod() && containingClass().isInterface())
            return i & 0xfffffbff;
        else
            return i;
    }

    protected abstract long getFlags();

    public boolean isFinal()
    {
        int i = getModifiers();
        return Modifier.isFinal(i);
    }

    public boolean isPackagePrivate()
    {
        return !isPublic() && !isPrivate() && !isProtected();
    }

    public boolean isPrivate()
    {
        int i = getModifiers();
        return Modifier.isPrivate(i);
    }

    public boolean isProtected()
    {
        int i = getModifiers();
        return Modifier.isProtected(i);
    }

    public boolean isPublic()
    {
        int i = getModifiers();
        return Modifier.isPublic(i);
    }

    public boolean isStatic()
    {
        int i = getModifiers();
        return Modifier.isStatic(i);
    }

    public ClassDoc containingClass()
    {
        if(getContainingClass() == null)
            return null;
        else
            return env.getClassDoc(getContainingClass());
    }

    public PackageDoc containingPackage()
    {
        return env.getPackageDoc(getContainingClass().packge());
    }

    protected abstract com.sun.tools.javac.v8.code.Symbol.ClassSymbol getContainingClass();

    public String modifiers()
    {
        int i = getModifiers();
        if(isMethod() && containingClass().isInterface())
            return Modifier.toString(i & 0xfffffbff);
        else
            return Modifier.toString(i);
    }

    CollationKey generateKey()
    {
        String s = name();
        return env.doclocale.collator.getCollationKey(s);
    }

    protected ProgramElementDocImpl(DocEnv docenv, String s)
    {
        DocImpl(docenv, s);
    }
}
