There are example addins on the website, and given by users. If you add the following to one of those you'll be able to call these functions from your templates.
public String AttPrimaryKey(EA.Repository r, object args)
{
Array p = (Array)args;
String attGUID = (String)p.GetValue(0);
EA.Attribute a = r.GetAttributeByGuid(attGUID);
return a.IsOrdered.ToString();
}
public String AttForeignKey(EA.Repository r, object args)
{
Array p = (Array)args;
String attGUID = (String)p.GetValue(0);
EA.Attribute a = r.GetAttributeByGuid(attGUID);
return a.IsCollection.ToString();
}
public String AttNotNull(EA.Repository r, object args)
{
Array p = (Array)args;
String attGUID = (String)p.GetValue(0);
EA.Attribute a = r.GetAttributeByGuid(attGUID);
return a.AllowDuplicates.ToString();
}
public String AttUnique(EA.Repository r, object args)
{
Array p = (Array)args;
String attGUID = (String)p.GetValue(0);
EA.Attribute a = r.GetAttributeByGuid(attGUID);
return a.IsStatic.ToString();
}
public String AttLength(EA.Repository r, object args)
{
Array p = (Array)args;
String attGUID = (String)p.GetValue(0);
EA.Attribute a = r.GetAttributeByGuid(attGUID);
return a.Length.ToString();
}
public String AttPrecision(EA.Repository r, object args)
{
Array p = (Array)args;
String attGUID = (String)p.GetValue(0);
EA.Attribute a = r.GetAttributeByGuid(attGUID);
return a.Precision.ToString();
}
public String AttScale(EA.Repository r, object args)
{
Array p = (Array)args;
String attGUID = (String)p.GetValue(0);
EA.Attribute a = r.GetAttributeByGuid(attGUID);
return a.Scale.ToString();
}
Call these as follows.
%EXEC_ADD_IN("MyAddinName", "AttPrimaryKey", attGUID)%
%EXEC_ADD_IN("MyAddinName", "AttForeignKey", attGUID)%
%EXEC_ADD_IN("MyAddinName", "AttNotNull", attGUID)%
%EXEC_ADD_IN("MyAddinName", "AttUnique", attGUID)%
%EXEC_ADD_IN("MyAddinName", "AttLength", attGUID)%
%EXEC_ADD_IN("MyAddinName", "AttPrecision", attGUID)%
%EXEC_ADD_IN("MyAddinName", "AttScale", attGUID)%
where MyAddinName is the name of the registry key telling EA about your addin.
It's also worth noting that there are attAllowDuplicates and attStatic macros that you can use.