2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-07-01 16:51:56 +00:00

ZoneCodeGenerator: Set conditions on structs that make the build fail right now

This commit is contained in:
Jan
2019-11-21 21:47:56 +01:00
parent 27f92e6c33
commit 377dc5c99b
6 changed files with 82 additions and 27 deletions

View File

@ -17,7 +17,10 @@ $endif$
%>
PrintOperandDynamic(op) ::= <%
$TypeVarName(op.Structure)$->$first(op.ReferencedMemberChain):{member | $member.Member.Name$}$$rest(op.ReferencedMemberChain):{member | .$member.Member.Name$}$
$TypeVarName(op.Structure)$
->$first(op.ReferencedMemberChain):{member | $member.Member.Name$}$
$rest(op.ReferencedMemberChain):{member | .$member.Member.Name$}$
$op.ArrayIndices:{ arrayIndex | [$arrayIndex$]}$
%>
PrintOperation(operation) ::= <%

View File

@ -1,8 +1,21 @@
// Everything related to loading an embedded reference
LoadEmbedded(context, structure, member) ::= <<
$if(!member.Computations.ShouldIgnore)$
LoadEmbedded_Load(context, structure, member) ::= <<
$TypeVarName(member.StructureType)$ = &$TypeVarName(structure)$->$member.Member.Name$;
Load_$member.Member.VariableType.Type.Name$(false);
>>
LoadEmbedded_Array(context, structure, member) ::= <<
>>
LoadEmbedded(context, structure, member) ::= <%
$if(!member.Computations.ShouldIgnore)$
$if(member.Computations.IsArray)$
$LoadEmbedded_Array(context, structure, member)$
$else$
$LoadEmbedded_Load(context, structure, member)$
$endif$
>>
$endif$
%>

View File

@ -1,26 +1,30 @@
// String
LoadStringSingleDepth(context, structure, member) ::= <<
LoadStringSingleDepth(context, structure, member) ::= <%
$if(!member.Computations.IsArray)$
varXString = &$TypeVarName(structure)$->$member.Member.Name$;
LoadXString(false); $\\$
varXString = &$TypeVarName(structure)$->$member.Member.Name$;$\n$
LoadXString(false);$\n$
$else$
varXString = $TypeVarName(structure)$->$member.Member.Name$;
LoadXStringArray(false, $first(member.Computations.ArraySizes)$); $\\$
varXString = $TypeVarName(structure)$->$member.Member.Name$;$\n$
LoadXStringArray(false, $first(member.Computations.ArraySizes)$);$\n$
$endif$
>>
%>
LoadString(context, structure, member) ::= <<
$if(member.Computations.PointerDepthIsOne)$
$LoadStringSingleDepth(context, structure, member)$ $\\$
$elseif(member.Computations.PointerDepthIsTwo && member.Computations.ArrayPointerCountEvaluation)$
LoadString_PointerCheck(context, structure, member) ::= <<
if ($TypeVarName(structure)$->$member.Member.Name$)
{
$TypeVarName(structure)$->$member.Member.Name$ = m_stream->Alloc<$TypeDeclaration(member.Member.VariableType)$*>(alignof($TypeDeclaration(member.Member.VariableType)$*));
varXString = $TypeVarName(structure)$->$member.Member.Name$;
LoadXStringArray(true, $PrintEvaluation(member.Computations.ArrayPointerCountEvaluation)$);
} $\\$
}
>>
LoadString(context, structure, member) ::= <%
$if(member.Computations.PointerDepthIsOne)$
$LoadStringSingleDepth(context, structure, member)$
$elseif(member.Computations.PointerDepthIsTwo && member.Computations.ArrayPointerCountEvaluation)$
$LoadString_PointerCheck(context, structure, member)$
$else$
#error Cannot load string $member.Member.Name$ $\\$
#error Cannot load string $member.Member.Name$
$endif$
>>
%>

View File

@ -5,6 +5,7 @@ import "Common.stg"
import "Loading/Common.stg"
import "Loading/String.stg"
import "Loading/ArrayPointer.stg"
import "Loading/Embedded.stg"
import "Loading/SinglePointer.stg"
// Loading common
@ -39,7 +40,7 @@ $HeaderArrayPtrLoadMethodDeclaration(structure)$
$\n$
$endif$
$if(structure.NonEmbeddedReferenceExists && !structure.IsLeaf)$
$if(!structure.IsLeaf && structure.Computations.IsUsed)$
$HeaderLoadMethodDeclaration(structure)$
$\n$
$endif$
@ -98,7 +99,8 @@ $elseif(member.Computations.IsArrayPointerReference && member.Computations.Point
$LoadArrayPointer(context, structure, member)$
$elseif(member.Computations.IsSinglePointerReference)$
$LoadSinglePointer(context, structure, member)$
$elseif(member.Computations.IsEmbeddedReference && member.StructureType)$
$elseif(member.Computations.IsEmbeddedReference && member.StructureType && !member.StructureType.IsLeaf)$
$LoadEmbedded(context, structure, member)$
$endif$
%>
@ -200,7 +202,7 @@ $if(structure.ArrayPointerReferenceExists && !structure.IsLeaf)$
$LoadArrayPtrMethod(structure, context)$
$endif$
$if(structure.NonEmbeddedReferenceExists && !structure.IsLeaf)$
$if(!structure.IsLeaf && structure.Computations.IsUsed)$
$LoadMethod(structure, context)$
$endif$