Improved intrinsic procedure descriptions in Fortran Declaration view
diff --git a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/analysis/binding/Intrinsic.java b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/analysis/binding/Intrinsic.java
index 1477108..bb60858 100644
--- a/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/analysis/binding/Intrinsic.java
+++ b/org.eclipse.photran.core.vpg/src/org/eclipse/photran/internal/core/analysis/binding/Intrinsic.java
@@ -50,6 +50,18 @@
// return false;
// }
+ @Override
+ public String describe()
+ {
+ String canonicalizedName = PhotranVPG.canonicalizeIdentifier(declaredName);
+
+ IntrinsicProcDescription proc = Intrinsics.get(canonicalizedName);
+ if (proc == null)
+ return "";
+ else
+ return proc.toString();
+ }
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// BINDING RESOLUTION
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/org.eclipse.photran.core/src/org/eclipse/photran/internal/core/intrinsics/IntrinsicProcDescription.java b/org.eclipse.photran.core/src/org/eclipse/photran/internal/core/intrinsics/IntrinsicProcDescription.java
index 21c17fd..6a80bff 100644
--- a/org.eclipse.photran.core/src/org/eclipse/photran/internal/core/intrinsics/IntrinsicProcDescription.java
+++ b/org.eclipse.photran.core/src/org/eclipse/photran/internal/core/intrinsics/IntrinsicProcDescription.java
@@ -54,8 +54,19 @@
public String toString()
{
- return "! (Intrinsic Procedure) " + description + "\n" //$NON-NLS-1$ //$NON-NLS-2$
- + "! Usage: " + genericName + args + "\n"; //$NON-NLS-1$ //$NON-NLS-2$
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("! "); sb.append(description); sb.append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
+ sb.append("!\n"); //$NON-NLS-1$
+ sb.append("! Usage: "); sb.append(genericName); sb.append(args); sb.append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
+// for (String form : getAllForms())
+// {
+// sb.append("! "); sb.append(form); sb.append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
+// }
+ sb.append("!\n"); //$NON-NLS-1$
+ sb.append("INTRINSIC "); sb.append(genericName); sb.append("\n"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ return sb.toString();
}
/**
diff --git a/org.eclipse.photran.core/src/org/eclipse/photran/internal/core/intrinsics/Intrinsics.java b/org.eclipse.photran.core/src/org/eclipse/photran/internal/core/intrinsics/Intrinsics.java
index ad4210a..119e269 100644
--- a/org.eclipse.photran.core/src/org/eclipse/photran/internal/core/intrinsics/Intrinsics.java
+++ b/org.eclipse.photran.core/src/org/eclipse/photran/internal/core/intrinsics/Intrinsics.java
@@ -32,7 +32,18 @@
private Intrinsics() {;}
private static TreeSet<IntrinsicProcDescription> intrinsicProcedures = null;
-
+
+ public static IntrinsicProcDescription get(String identifier)
+ {
+ String target = identifier.toUpperCase();
+
+ for (IntrinsicProcDescription proc : intrinsicProcedures)
+ if (proc.genericName.toUpperCase().equals(target))
+ return proc;
+
+ return null;
+ }
+
public static TreeSet<IntrinsicProcDescription> getAllIntrinsicProcedures()
{
if (intrinsicProcedures == null) loadData();