Skip to content

Commit fe5a25d

Browse files
authored
Merge pull request #578 from lkramer/optimize_functions
golang: Use pointer receiver where appropriate
2 parents 3d4290e + abc4913 commit fe5a25d

File tree

1 file changed

+36
-32
lines changed

1 file changed

+36
-32
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/golang/GolangGenerator.java

Lines changed: 36 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -553,9 +553,9 @@ private void generateEncodeDecodeOpen(
553553
final Boolean isMessage,
554554
final Boolean isExtensible)
555555
{
556-
generateEncodeHeader(encode, varName, typeName, isMessage);
556+
generateEncodeHeader(encode, varName, typeName, isMessage, false);
557557
generateDecodeHeader(decode, varName, typeName, isMessage, isExtensible);
558-
generateRangeCheckHeader(rangeCheck, varName, typeName);
558+
generateRangeCheckHeader(rangeCheck, varName, typeName, false);
559559
generateInitHeader(init, varName, typeName);
560560
}
561561

@@ -809,7 +809,7 @@ private void generateEnumEncodeDecode(
809809
}
810810

811811
// Encode
812-
generateEncodeHeader(sb, varName, enumName + "Enum", false);
812+
generateEncodeHeader(sb, varName, enumName + "Enum", false, true);
813813
sb.append(String.format(
814814
"\tif err := _m.Write%1$s(_w, %2$s(%3$s)); err != nil {\n" +
815815
"\t\treturn err\n" +
@@ -835,7 +835,7 @@ private void generateEnumEncodeDecode(
835835
// struct to check which are legitimate
836836
imports.add("fmt");
837837
imports.add("reflect");
838-
generateRangeCheckHeader(sb, varName, enumName + "Enum");
838+
generateRangeCheckHeader(sb, varName, enumName + "Enum", true);
839839

840840
// For enums we can add new fields so if we're decoding a
841841
// newer version then the content is definitionally ok.
@@ -867,7 +867,7 @@ private void generateChoiceEncodeDecode(
867867
final char varName = Character.toLowerCase(choiceName.charAt(0));
868868

869869
// Encode
870-
generateEncodeHeader(sb, varName, choiceName, false);
870+
generateEncodeHeader(sb, varName, choiceName, false, false);
871871

872872
sb.append(String.format(
873873
"\tvar wireval uint%1$d = 0\n" +
@@ -902,7 +902,8 @@ private void generateEncodeHeader(
902902
final StringBuilder sb,
903903
final char varName,
904904
final String typeName,
905-
final Boolean isMessage)
905+
final Boolean isMessage,
906+
final Boolean isEnum)
906907
{
907908
// Only messages get the rangeCheck flag
908909
String messageArgs = "";
@@ -912,11 +913,12 @@ private void generateEncodeHeader(
912913
}
913914

914915
sb.append(String.format(
915-
"\nfunc (%1$s %2$s) Encode(_m *SbeGoMarshaller, _w io.Writer" +
916+
"\nfunc (%1$s %3$s%2$s) Encode(_m *SbeGoMarshaller, _w io.Writer" +
916917
messageArgs +
917918
") error {\n",
918919
varName,
919-
typeName));
920+
typeName,
921+
(isEnum ? "" : "*")));
920922
}
921923

922924
private void generateDecodeHeader(
@@ -962,12 +964,14 @@ private void generateDecodeHeader(
962964
private void generateRangeCheckHeader(
963965
final StringBuilder sb,
964966
final char varName,
965-
final String typeName)
967+
final String typeName,
968+
final boolean isEnum)
966969
{
967970
sb.append(String.format(
968-
"\nfunc (%1$s %2$s) RangeCheck(actingVersion uint16, schemaVersion uint16) error {\n",
971+
"\nfunc (%1$s %3$s%2$s) RangeCheck(actingVersion uint16, schemaVersion uint16) error {\n",
969972
varName,
970-
typeName));
973+
typeName,
974+
(isEnum ? "" : "*")));
971975
}
972976

973977
private void generateInitHeader(
@@ -1363,10 +1367,10 @@ private void generateVarDataDescriptors(
13631367

13641368
generateSinceActingDeprecated(sb, typeName, propertyName, token);
13651369
sb.append(String.format(
1366-
"\nfunc (%1$s %2$s) %3$sCharacterEncoding() string {\n" +
1370+
"\nfunc (%2$s) %3$sCharacterEncoding() string {\n" +
13671371
"\treturn \"%4$s\"\n" +
13681372
"}\n" +
1369-
"\nfunc (%1$s %2$s) %3$sHeaderLength() uint64 {\n" +
1373+
"\nfunc (%2$s) %3$sHeaderLength() uint64 {\n" +
13701374
"\treturn %5$s\n" +
13711375
"}\n",
13721376
varName,
@@ -1399,7 +1403,7 @@ private void generateChoiceSet(final List<Token> tokens) throws IOException
13991403

14001404
// EncodedLength
14011405
sb.append(String.format(
1402-
"\nfunc (%1$s %2$s) EncodedLength() int64 {\n" +
1406+
"\nfunc (%2$s) EncodedLength() int64 {\n" +
14031407
"\treturn %3$s\n" +
14041408
"}\n",
14051409
varName,
@@ -1440,7 +1444,7 @@ private void generateEnum(final List<Token> tokens) throws IOException
14401444

14411445
// EncodedLength
14421446
sb.append(String.format(
1443-
"\nfunc (%1$s %2$sEnum) EncodedLength() int64 {\n" +
1447+
"\nfunc (*%2$sEnum) EncodedLength() int64 {\n" +
14441448
"\treturn %3$s\n" +
14451449
"}\n",
14461450
varName,
@@ -1827,7 +1831,7 @@ private void generateMinMaxNull(
18271831

18281832
// MinValue
18291833
sb.append(String.format(
1830-
"\nfunc (%1$s %2$s) %3$sMinValue() %4$s {\n" +
1834+
"\nfunc (*%2$s) %3$sMinValue() %4$s {\n" +
18311835
"\treturn %5$s\n" +
18321836
"}\n",
18331837
Character.toLowerCase(typeName.charAt(0)),
@@ -1838,7 +1842,7 @@ private void generateMinMaxNull(
18381842

18391843
// MaxValue
18401844
sb.append(String.format(
1841-
"\nfunc (%1$s %2$s) %3$sMaxValue() %4$s {\n" +
1845+
"\nfunc (*%2$s) %3$sMaxValue() %4$s {\n" +
18421846
"\treturn %5$s\n" +
18431847
"}\n",
18441848
Character.toLowerCase(typeName.charAt(0)),
@@ -1849,7 +1853,7 @@ private void generateMinMaxNull(
18491853

18501854
// NullValue
18511855
sb.append(String.format(
1852-
"\nfunc (%1$s %2$s) %3$sNullValue() %4$s {\n" +
1856+
"\nfunc (*%2$s) %3$sNullValue() %4$s {\n" +
18531857
"\treturn %5$s\n" +
18541858
"}\n",
18551859
Character.toLowerCase(typeName.charAt(0)),
@@ -1868,7 +1872,7 @@ private void generateCharacterEncoding(
18681872
if (token.encoding().primitiveType() == CHAR && token.arrayLength() > 1)
18691873
{
18701874
sb.append(String.format(
1871-
"\nfunc (%1$s %2$s) %3$sCharacterEncoding() string {\n" +
1875+
"\nfunc (%1$s *%2$s) %3$sCharacterEncoding() string {\n" +
18721876
"\treturn \"%4$s\"\n" +
18731877
"}\n",
18741878
Character.toLowerCase(typeName.charAt(0)),
@@ -1885,7 +1889,7 @@ private void generateId(
18851889
final Token token)
18861890
{
18871891
sb.append(String.format(
1888-
"\nfunc (%1$s %2$s) %3$sId() uint16 {\n" +
1892+
"\nfunc (*%2$s) %3$sId() uint16 {\n" +
18891893
"\treturn %4$s\n" +
18901894
"}\n",
18911895
Character.toLowerCase(typeName.charAt(0)),
@@ -1901,13 +1905,13 @@ private void generateSinceActingDeprecated(
19011905
final Token token)
19021906
{
19031907
sb.append(String.format(
1904-
"\nfunc (%1$s %2$s) %3$sSinceVersion() uint16 {\n" +
1908+
"\nfunc (*%2$s) %3$sSinceVersion() uint16 {\n" +
19051909
"\treturn %4$s\n" +
19061910
"}\n" +
1907-
"\nfunc (%1$s %2$s) %3$sInActingVersion(actingVersion uint16) bool {\n" +
1911+
"\nfunc (%1$s *%2$s) %3$sInActingVersion(actingVersion uint16) bool {\n" +
19081912
"\treturn actingVersion >= %1$s.%3$sSinceVersion()\n" +
19091913
"}\n" +
1910-
"\nfunc (%1$s %2$s) %3$sDeprecated() uint16 {\n" +
1914+
"\nfunc (*%2$s) %3$sDeprecated() uint16 {\n" +
19111915
"\treturn %5$s\n" +
19121916
"}\n",
19131917
Character.toLowerCase(typeName.charAt(0)),
@@ -2014,7 +2018,7 @@ private void generateEncodedLength(
20142018
final int size)
20152019
{
20162020
sb.append(String.format(
2017-
"\nfunc (%1$s %2$s) EncodedLength() int64 {\n" +
2021+
"\nfunc (*%2$s) EncodedLength() int64 {\n" +
20182022
"\treturn %3$s\n" +
20192023
"}\n",
20202024
Character.toLowerCase(typeName.charAt(0)),
@@ -2037,19 +2041,19 @@ private void generateMessageCode(
20372041
generateEncodeDecode(sb, typeName, tokens, true, true);
20382042

20392043
sb.append(String.format(
2040-
"\nfunc (%1$s %2$s) SbeBlockLength() (blockLength %3$s) {\n" +
2044+
"\nfunc (*%2$s) SbeBlockLength() (blockLength %3$s) {\n" +
20412045
"\treturn %4$s\n" +
20422046
"}\n" +
2043-
"\nfunc (%1$s %2$s) SbeTemplateId() (templateId %5$s) {\n" +
2047+
"\nfunc (*%2$s) SbeTemplateId() (templateId %5$s) {\n" +
20442048
"\treturn %6$s\n" +
20452049
"}\n" +
2046-
"\nfunc (%1$s %2$s) SbeSchemaId() (schemaId %7$s) {\n" +
2050+
"\nfunc (*%2$s) SbeSchemaId() (schemaId %7$s) {\n" +
20472051
"\treturn %8$s\n" +
20482052
"}\n" +
2049-
"\nfunc (%1$s %2$s) SbeSchemaVersion() (schemaVersion %9$s) {\n" +
2053+
"\nfunc (*%2$s) SbeSchemaVersion() (schemaVersion %9$s) {\n" +
20502054
"\treturn %10$s\n" +
20512055
"}\n" +
2052-
"\nfunc (%1$s %2$s) SbeSemanticType() (semanticType []byte) {\n" +
2056+
"\nfunc (*%2$s) SbeSemanticType() (semanticType []byte) {\n" +
20532057
"\treturn []byte(\"%11$s\")\n" +
20542058
"}\n",
20552059
Character.toLowerCase(typeName.charAt(0)),
@@ -2073,10 +2077,10 @@ private void generateExtensibilityMethods(
20732077
final Token token)
20742078
{
20752079
sb.append(String.format(
2076-
"\nfunc (%1$s %2$s) SbeBlockLength() (blockLength uint) {\n" +
2080+
"\nfunc (*%2$s) SbeBlockLength() (blockLength uint) {\n" +
20772081
"\treturn %3$s\n" +
20782082
"}\n" +
2079-
"\nfunc (%1$s %2$s) SbeSchemaVersion() (schemaVersion %4$s) {\n" +
2083+
"\nfunc (*%2$s) SbeSchemaVersion() (schemaVersion %4$s) {\n" +
20802084
"\treturn %5$s\n" +
20812085
"}\n",
20822086
Character.toLowerCase(typeName.charAt(0)),
@@ -2138,7 +2142,7 @@ private static void generateFieldMetaAttributeMethod(
21382142
final String presence = encoding.presence() == null ? "" : encoding.presence().toString().toLowerCase();
21392143

21402144
sb.append(String.format(
2141-
"\nfunc (%1$s %2$s) %3$sMetaAttribute(meta int) string {\n" +
2145+
"\nfunc (*%2$s) %3$sMetaAttribute(meta int) string {\n" +
21422146
"\tswitch meta {\n" +
21432147
"\tcase 1:\n" +
21442148
"\t\treturn \"%4$s\"\n" +

0 commit comments

Comments
 (0)