001 /* 002 * The JastAdd Extensible Java Compiler (http://jastadd.org) is covered 003 * by the modified BSD License. You should have received a copy of the 004 * modified BSD license with this compiler. 005 * 006 * Copyright (c) 2005-2008, Torbjorn Ekman 007 * All rights reserved. 008 */ 009 010 aspect Flags { 011 public static final int Modifiers.ACC_PUBLIC = 0x0001; // class field method 012 public static final int Modifiers.ACC_PRIVATE = 0x0002; // field method 013 public static final int Modifiers.ACC_PROTECTED = 0x0004; // field method 014 public static final int Modifiers.ACC_STATIC = 0x0008; // field method 015 public static final int Modifiers.ACC_FINAL = 0x0010; // class field method 016 public static final int Modifiers.ACC_SYNCHRONIZED = 0x0020; // method 017 public static final int Modifiers.ACC_SUPER = 0x0020; // class 018 public static final int Modifiers.ACC_VOLATILE = 0x0040; // field 019 public static final int Modifiers.ACC_TRANSIENT = 0x0080; // field 020 public static final int Modifiers.ACC_NATIVE = 0x0100; // method 021 public static final int Modifiers.ACC_INTERFACE = 0x0200; // class 022 public static final int Modifiers.ACC_ABSTRACT = 0x0400; // class method 023 public static final int Modifiers.ACC_SYNTHETIC = 0x1000; // field method 024 public static final int Modifiers.ACC_STRICT = 0x0800; // method 025 026 027 // mangle modifiers for nested types 028 public int TypeDecl.mangledFlags(int flags) { 029 boolean privateFlag = (flags & Modifiers.ACC_PRIVATE) != 0; 030 boolean protectedFlag = (flags & Modifiers.ACC_PROTECTED) != 0; 031 flags &= ~ Modifiers.ACC_PRIVATE; 032 flags &= ~ Modifiers.ACC_PROTECTED; 033 if(protectedFlag) 034 flags |= Modifiers.ACC_PUBLIC; 035 return flags; 036 } 037 038 039 040 syn lazy int MethodDecl.flags() { 041 int res = 0; 042 if(isPublic()) res |= Modifiers.ACC_PUBLIC; 043 if(isPrivate()) res |= Modifiers.ACC_PRIVATE; 044 if(isProtected()) res |= Modifiers.ACC_PROTECTED; 045 if(isStatic()) res |= Modifiers.ACC_STATIC; 046 if(isFinal()) res |= Modifiers.ACC_FINAL; 047 if(isSynchronized()) res |= Modifiers.ACC_SYNCHRONIZED; 048 if(isNative()) res |= Modifiers.ACC_NATIVE; 049 if(isAbstract()) res |= Modifiers.ACC_ABSTRACT; 050 if(isStrictfp() || (hostType().isStrictfp() && !hostType().isInterfaceDecl())) res |= Modifiers.ACC_STRICT; 051 return res; 052 } 053 054 syn lazy int ConstructorDecl.flags() { 055 int res = 0; 056 if(isPublic()) res |= Modifiers.ACC_PUBLIC; 057 if(isPrivate()) res |= Modifiers.ACC_PRIVATE; 058 if(isProtected()) res |= Modifiers.ACC_PROTECTED; 059 //if(isSynchronized()) res |= Modifiers.ACC_SYNCHRONIZED; 060 //if(isStrictfp()) res |= Modifiers.ACC_STRICT; 061 return res; 062 } 063 064 syn lazy int TypeDecl.flags() { 065 int res = 0; 066 if(isPublic()) res |= Modifiers.ACC_PUBLIC; 067 if(isPrivate()) res |= Modifiers.ACC_PRIVATE; 068 if(isProtected()) res |= Modifiers.ACC_PROTECTED; 069 if(isStatic()) res |= Modifiers.ACC_STATIC; 070 if(isFinal()) res |= Modifiers.ACC_FINAL; 071 // ACC_INTERFACE handled in InterfaceDecl 072 if(isAbstract()) res |= Modifiers.ACC_ABSTRACT; 073 return res; 074 } 075 076 syn lazy int FieldDeclaration.flags() { 077 int res = 0; 078 if(isPublic()) res |= Modifiers.ACC_PUBLIC; 079 if(isPrivate()) res |= Modifiers.ACC_PRIVATE; 080 if(isProtected()) res |= Modifiers.ACC_PROTECTED; 081 if(isStatic()) res |= Modifiers.ACC_STATIC; 082 if(isFinal()) res |= Modifiers.ACC_FINAL; 083 if(isVolatile()) res |= Modifiers.ACC_VOLATILE; 084 if(isTransient()) res |= Modifiers.ACC_TRANSIENT; 085 return res; 086 } 087 }