/*
* Copyright (c) 2012 Sam Harwell, Tunnel Vision Laboratories LLC
* All rights reserved.
*
* The source code of this document is proprietary work, and is not licensed for
* distribution. For information about licensing, contact Sam Harwell at:
* sam@tunnelvisionlabs.com
*/
package org.tvl.goworks.editor.go.semantics;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import org.tvl.goworks.editor.go.codemodel.CodeElementModel;
import org.tvl.goworks.editor.go.codemodel.IntrinsicTypeModels;
import org.tvl.goworks.editor.go.codemodel.PackageModel;
import org.tvl.goworks.editor.go.codemodel.TypeModel;
/**
*
* @author Sam Harwell
*/
public class BuiltinTypeReference extends CodeElementReference {
public static final BuiltinTypeReference BOOL = new BuiltinTypeReference("bool");
public static final BuiltinTypeReference BYTE = new BuiltinTypeReference("byte");
public static final BuiltinTypeReference COMPLEX64 = new BuiltinTypeReference("complex64");
public static final BuiltinTypeReference COMPLEX128 = new BuiltinTypeReference("complex128");
public static final BuiltinTypeReference ERROR = new BuiltinTypeReference("error");
public static final BuiltinTypeReference FLOAT32 = new BuiltinTypeReference("float32");
public static final BuiltinTypeReference FLOAT64 = new BuiltinTypeReference("float64");
public static final BuiltinTypeReference INT = new BuiltinTypeReference("int");
public static final BuiltinTypeReference INT8 = new BuiltinTypeReference("int8");
public static final BuiltinTypeReference INT16 = new BuiltinTypeReference("int16");
public static final BuiltinTypeReference INT32 = new BuiltinTypeReference("int32");
public static final BuiltinTypeReference INT64 = new BuiltinTypeReference("int64");
public static final BuiltinTypeReference RUNE = new BuiltinTypeReference("rune");
public static final BuiltinTypeReference STRING = new BuiltinTypeReference("string");
public static final BuiltinTypeReference UINT = new BuiltinTypeReference("uint");
public static final BuiltinTypeReference UINT8 = new BuiltinTypeReference("uint8");
public static final BuiltinTypeReference UINT16 = new BuiltinTypeReference("uint16");
public static final BuiltinTypeReference UINT32 = new BuiltinTypeReference("uint32");
public static final BuiltinTypeReference UINT64 = new BuiltinTypeReference("uint64");
public static final BuiltinTypeReference UINTPTR = new BuiltinTypeReference("uintptr");
private final String name;
private BuiltinTypeReference(String name) {
this.name = name;
}
public final TypeModel resolve() {
return IntrinsicTypeModels.getIntrinsicType(name);
}
@Override
public Collection<? extends CodeElementModel> resolve(GoAnnotatedParseTree annotatedParseTree, PackageModel currentPackage, Map<String, Collection<PackageModel>> resolvedPackages) {
CodeElementModel type = resolve();
if (type == null) {
return Collections.emptyList();
}
return Collections.singletonList(type);
}
}