Skip to content

Commit

Permalink
Add class accessibility
Browse files Browse the repository at this point in the history
  • Loading branch information
Jandini committed Apr 17, 2023
1 parent 44b36c9 commit c872e9b
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/AutoByte.Demo/DemoStructure.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public enum DemoType : byte
}

[AutoByteStructure(Size = 45, IsBigEndian = true)]
public partial class DemoStructure
internal partial class DemoStructure
{
public DemoType Length { get; set; }
public int Length1 { get; set; }
Expand Down
23 changes: 16 additions & 7 deletions src/AutoByte.Generators/AutoByteSourceGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,18 @@ public void Execute(GeneratorExecutionContext context)
.Select(x => (IPropertySymbol)x);

var codeBuilder = new StringBuilder();
var endian = autoByteAttribute.IsBigEndian ? "BigEndian" : "LittleEndian";
var usings = new StringBuilder();
var usingsBuilder = new StringBuilder();

var hasStrings = false;
var endian = autoByteAttribute.IsBigEndian ? "BigEndian" : "LittleEndian";

var classAccessibility = classSymbol.DeclaredAccessibility switch
{
Accessibility.Public => "public",
Accessibility.Internal => "internal",
Accessibility.Private => "private",
_ => string.Empty
};


foreach (var property in properties)
Expand All @@ -77,18 +86,18 @@ public void Execute(GeneratorExecutionContext context)
codeBuilder.AppendLine($"{" ",12}{propertyName} = slide.{methodName};");
}

usings.AppendLine("using AutoByte;");
usingsBuilder.AppendLine("using AutoByte;");

if (hasStrings)
usings.AppendLine("using System.Text;");
usingsBuilder.AppendLine("using System.Text;");


string generatedCode = codeBuilder.ToString().TrimEnd('\r', '\n');
var structureSize = autoByteAttribute.Size;
var className = classDeclaration.Identifier.ToString();
var namespaceName = classDeclaration.GetNamespace();

var source = GenerateDeserializeImplementation(usings.ToString(), namespaceName, className, structureSize, generatedCode);
var source = GenerateDeserializeImplementation(usingsBuilder.ToString(), classAccessibility, namespaceName, className, structureSize, generatedCode);
context.AddSource($"{className}.g.cs", SourceText.From(source, Encoding.UTF8));
}
}
Expand Down Expand Up @@ -164,12 +173,12 @@ private string GetStringMethodName(IPropertySymbol property, AutoByteFieldAttrib
throw new Exception($"Propertry {property.Name} require AutoByteString attribute.");
}

private string GenerateDeserializeImplementation(string usings, string namespaceName, string className, int structureSize, string generatedCode)
private string GenerateDeserializeImplementation(string usings, string classAccessibility, string namespaceName, string className, int structureSize, string generatedCode)
{
return $@"{usings}
{(string.IsNullOrEmpty(namespaceName) ? null : $@"namespace {namespaceName}
{{")}
public partial class {className} : IByteStructure
{classAccessibility} partial class {className} : IByteStructure
{{
public int Deserialize(ref ByteSlide slide)
{{
Expand Down

0 comments on commit c872e9b

Please sign in to comment.