Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
BlobEncoder.cs
Go to the documentation of this file.
2
3public readonly struct BlobEncoder
4{
5 public BlobBuilder Builder { get; }
6
7 public BlobEncoder(BlobBuilder builder)
8 {
9 if (builder == null)
10 {
12 }
13 Builder = builder;
14 }
15
21
23 {
24 if ((uint)genericArgumentCount > 65535u)
25 {
26 Throw.ArgumentOutOfRange("genericArgumentCount");
27 }
29 Builder.WriteCompressedInteger(genericArgumentCount);
31 }
32
33 public MethodSignatureEncoder MethodSignature(SignatureCallingConvention convention = SignatureCallingConvention.Default, int genericParameterCount = 0, bool isInstanceMethod = false)
34 {
35 if ((uint)genericParameterCount > 65535u)
36 {
37 Throw.ArgumentOutOfRange("genericParameterCount");
38 }
39 SignatureAttributes attributes = ((genericParameterCount != 0) ? SignatureAttributes.Generic : SignatureAttributes.None) | (isInstanceMethod ? SignatureAttributes.Instance : SignatureAttributes.None);
40 Builder.WriteByte(new SignatureHeader(SignatureKind.Method, convention, attributes).RawValue);
41 if (genericParameterCount != 0)
42 {
43 Builder.WriteCompressedInteger(genericParameterCount);
44 }
45 return new MethodSignatureEncoder(Builder, convention == SignatureCallingConvention.VarArgs);
46 }
47
48 public MethodSignatureEncoder PropertySignature(bool isInstanceProperty = false)
49 {
50 Builder.WriteByte(new SignatureHeader(SignatureKind.Property, SignatureCallingConvention.Default, isInstanceProperty ? SignatureAttributes.Instance : SignatureAttributes.None).RawValue);
51 return new MethodSignatureEncoder(Builder, hasVarArgs: false);
52 }
53
55 {
57 fixedArguments = new FixedArgumentsEncoder(Builder);
59 }
60
61 public void CustomAttributeSignature(Action<FixedArgumentsEncoder> fixedArguments, Action<CustomAttributeNamedArgumentsEncoder> namedArguments)
62 {
63 if (fixedArguments == null)
64 {
65 Throw.ArgumentNull("fixedArguments");
66 }
67 if (namedArguments == null)
68 {
69 Throw.ArgumentNull("namedArguments");
70 }
71 CustomAttributeSignature(out var fixedArguments2, out var namedArguments2);
72 fixedArguments(fixedArguments2);
73 namedArguments(namedArguments2);
74 }
75
77 {
78 if ((uint)variableCount > 536870911u)
79 {
80 Throw.ArgumentOutOfRange("variableCount");
81 }
83 Builder.WriteCompressedInteger(variableCount);
85 }
86
91
92 public PermissionSetEncoder PermissionSetBlob(int attributeCount)
93 {
94 if ((uint)attributeCount > 536870911u)
95 {
96 Throw.ArgumentOutOfRange("attributeCount");
97 }
99 Builder.WriteCompressedInteger(attributeCount);
100 return new PermissionSetEncoder(Builder);
101 }
102
104 {
105 if ((uint)argumentCount > 536870911u)
106 {
107 Throw.ArgumentOutOfRange("argumentCount");
108 }
109 Builder.WriteCompressedInteger(argumentCount);
110 return new NamedArgumentsEncoder(Builder);
111 }
112}
static void ArgumentNull(string parameterName)
Definition Throw.cs:110
static void ArgumentOutOfRange(string parameterName)
Definition Throw.cs:145
static void BuilderArgumentNull()
Definition Throw.cs:138
void CustomAttributeSignature(out FixedArgumentsEncoder fixedArguments, out CustomAttributeNamedArgumentsEncoder namedArguments)
MethodSignatureEncoder MethodSignature(SignatureCallingConvention convention=SignatureCallingConvention.Default, int genericParameterCount=0, bool isInstanceMethod=false)
LocalVariablesEncoder LocalVariableSignature(int variableCount)
NamedArgumentsEncoder PermissionSetArguments(int argumentCount)
GenericTypeArgumentsEncoder MethodSpecificationSignature(int genericArgumentCount)
PermissionSetEncoder PermissionSetBlob(int attributeCount)
void CustomAttributeSignature(Action< FixedArgumentsEncoder > fixedArguments, Action< CustomAttributeNamedArgumentsEncoder > namedArguments)
SignatureTypeEncoder TypeSpecificationSignature()
MethodSignatureEncoder PropertySignature(bool isInstanceProperty=false)