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:
@ -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) ::= <%
|
||||
|
@ -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$
|
||||
%>
|
@ -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$
|
||||
>>
|
||||
%>
|
@ -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$
|
||||
|
Reference in New Issue
Block a user