001package org.unix4j.codegen.def;
002
003
004public class TypeDef extends AbstractElementDef {
005        
006        public TypeDef(Class<?> type) {
007                this(type.getSimpleName(), new PackageDef(type.getPackage()));
008        }
009        public TypeDef(String fullyQualifiedClassName) {
010                this(getTypeName(fullyQualifiedClassName), getPackageName(fullyQualifiedClassName));
011        }
012        public TypeDef(String typeName, String packageName) {
013                this(typeName, new PackageDef(packageName));
014        }
015        public TypeDef(String typeName, PackageDef pkg) {
016                this.pkg = pkg;
017                this.simpleName = typeName;
018        }
019        private static String getTypeName(String fullyQualifiedClassName) {
020                final int lastDot = fullyQualifiedClassName.lastIndexOf('.');
021                return fullyQualifiedClassName.substring(lastDot + 1);//also works if there is no dot
022        }
023        private static String getPackageName(String fullyQualifiedClassName) {
024                final int lastDot = fullyQualifiedClassName.lastIndexOf('.');
025                return lastDot < 0 ? fullyQualifiedClassName : fullyQualifiedClassName.substring(0, lastDot);
026        }
027        public final PackageDef pkg;
028        public final String simpleName;
029}