|
@@ -4,13 +4,13 @@ using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Reflection;
|
|
|
using System.Text;
|
|
|
+using System.Text.RegularExpressions;
|
|
|
|
|
|
namespace ShakerFpga
|
|
|
{
|
|
|
[Generator(LanguageNames.CSharp)]
|
|
|
internal class ShakerFpgaSourceGenerator : IIncrementalGenerator
|
|
|
{
|
|
|
-
|
|
|
public void Initialize(IncrementalGeneratorInitializationContext context)
|
|
|
{
|
|
|
context.RegisterPostInitializationOutput(c =>
|
|
@@ -84,8 +84,7 @@ namespace ShakerFpga
|
|
|
{
|
|
|
string protype = GetProType(register);
|
|
|
string proname = $"{register.Name.Split('_')[0]}";
|
|
|
- proname = proname.Replace("(", "_").Replace(")", "_").Trim('_');
|
|
|
- proname = char.ToUpper(proname[0]) + proname.Substring(1);
|
|
|
+ proname = RemovePropertySpecialcharacters(proname);
|
|
|
stringBuilder.AppendLine($" private {protype} _{proname};");
|
|
|
stringBuilder.AppendLine($" /// <summary>");
|
|
|
stringBuilder.AppendLine($" /// {register.Name}");
|
|
@@ -106,8 +105,7 @@ namespace ShakerFpga
|
|
|
{
|
|
|
string protype = GetFifoType(dma);
|
|
|
string proname = $"{dma.Name.Split('_')[0]}";
|
|
|
- proname = proname.Replace("(", "_").Replace(")", "_").Trim('_');
|
|
|
- proname = char.ToUpper(proname[0]) + proname.Substring(1);
|
|
|
+ proname = RemovePropertySpecialcharacters(proname);
|
|
|
stringBuilder.AppendLine($" private {protype} _{proname};");
|
|
|
stringBuilder.AppendLine($" /// <summary>");
|
|
|
stringBuilder.AppendLine($" /// {dma.Name}");
|
|
@@ -171,14 +169,18 @@ namespace ShakerFpga
|
|
|
}
|
|
|
return protype;
|
|
|
}
|
|
|
+ private string RemovePropertySpecialcharacters(string s)
|
|
|
+ {
|
|
|
+ string proname = Regex.Replace(s,@"\((.+?)\)","", RegexOptions.IgnoreCase).Replace("(", "_").Replace(")", "_").Replace("/", "_").Replace("__", "_").Trim('_');
|
|
|
+ return char.ToUpper(proname[0]) + proname.Substring(1);
|
|
|
+ }
|
|
|
private string GetProType(Register register)
|
|
|
{
|
|
|
-
|
|
|
string value = "";
|
|
|
switch (register.Datatype)
|
|
|
{
|
|
|
case NIFPGA.lvbitx.Datatype.Boolean:
|
|
|
- if(register.Indicator)
|
|
|
+ if(!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<bool>";
|
|
|
}
|
|
@@ -188,7 +190,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int8:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<sbyte>";
|
|
|
}
|
|
@@ -198,7 +200,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint8:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<byte>";
|
|
|
}
|
|
@@ -208,7 +210,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int16:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<short>";
|
|
|
}
|
|
@@ -218,7 +220,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint16:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<ushort>";
|
|
|
}
|
|
@@ -228,7 +230,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int32:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<int>";
|
|
|
}
|
|
@@ -238,7 +240,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint32:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<uint>";
|
|
|
}
|
|
@@ -248,7 +250,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int64:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<long>";
|
|
|
}
|
|
@@ -258,7 +260,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint64:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<ulong>";
|
|
|
}
|
|
@@ -268,7 +270,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Float:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<float>";
|
|
|
}
|
|
@@ -278,7 +280,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Double:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<double>";
|
|
|
}
|
|
@@ -288,7 +290,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.FXP:
|
|
|
- if(register.Indicator)
|
|
|
+ if(!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAFXPWriteProperty";
|
|
|
}
|
|
@@ -301,7 +303,7 @@ namespace ShakerFpga
|
|
|
switch (register.ArrayValueType)
|
|
|
{
|
|
|
case NIFPGA.lvbitx.Datatype.Boolean:
|
|
|
- if(register.Indicator)
|
|
|
+ if(!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<bool>";
|
|
|
}
|
|
@@ -311,7 +313,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int8:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<sbyte>";
|
|
|
}
|
|
@@ -321,7 +323,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint8:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<byte>";
|
|
|
}
|
|
@@ -331,7 +333,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int16:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<short>";
|
|
|
}
|
|
@@ -341,7 +343,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint16:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<ushort>";
|
|
|
}
|
|
@@ -351,7 +353,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int32:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<int>";
|
|
|
}
|
|
@@ -361,7 +363,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint32:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<uint>";
|
|
|
}
|
|
@@ -371,7 +373,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int64:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<long>";
|
|
|
}
|
|
@@ -381,7 +383,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint64:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<ulong>";
|
|
|
}
|
|
@@ -391,7 +393,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Float:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<float>";
|
|
|
}
|
|
@@ -401,7 +403,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Double:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<double>";
|
|
|
}
|
|
@@ -411,7 +413,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.FXP:
|
|
|
- if (register.Indicator)
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayFXPWriteProperty";
|
|
|
}
|