changeset 338:ee2b6e54b074

- minor refactoring for clarity
author Tassilo Philipp
date Fri, 03 Jan 2020 22:48:20 +0100
parents 168092290cae
children 4f9f49fb82ce
files dyncall/dyncall_struct.c dyncall/dyncall_struct.h
diffstat 2 files changed, 13 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/dyncall/dyncall_struct.c	Tue Dec 03 23:49:59 2019 +0100
+++ b/dyncall/dyncall_struct.c	Fri Jan 03 22:48:20 2020 +0100
@@ -54,7 +54,7 @@
 		return;
 	}
 	assert(s && s->pCurrentStruct);
-	assert(s->pCurrentStruct->nextField <= (DCint)s->pCurrentStruct->fieldCount - 1);
+	assert(s->pCurrentStruct->nextField < (DCint)s->pCurrentStruct->fieldCount);
 	f = s->pCurrentStruct->pFields + (s->pCurrentStruct->nextField++);
 	f->type = type;
 	f->alignment = alignment;
@@ -107,6 +107,8 @@
 {
 	DCsize i;
 	assert(s);
+
+	/* compute field sizes and alignments, recurse if needed */
 	for (i = 0; i < s->fieldCount; i++) {
 		DCfield *f = s->pFields + i;
 		DCsize fieldAlignment;
@@ -114,19 +116,23 @@
 			dcComputeStructSize(f->pSubStruct);
 			f->size = f->pSubStruct->size;
 			fieldAlignment = f->pSubStruct->alignment;
-		} else {
+		} else
 			fieldAlignment = f->size;
-		}
+
 		if (!f->alignment)
 			f->alignment = fieldAlignment;
-		
+
+		/* if field alignment > struct alignment, choose former */
 		if (f->alignment > s->alignment)
 			s->alignment = f->alignment;
-		
+
+		/* if array, it's x times the size */
 		f->size *= f->arrayLength;
-		
+
 		/*printf("FIELD %d, size = %d, alignment = %d\n", (int)i, (int)f->size, (int)f->alignment);@@@*/
 	}
+
+	/* compute overall struct size */
 	for (i = 0; i < s->fieldCount; i++) {
 		DCfield *f = s->pFields + i;
 		dcAlign(&s->size, f->alignment);
--- a/dyncall/dyncall_struct.h	Tue Dec 03 23:49:59 2019 +0100
+++ b/dyncall/dyncall_struct.h	Fri Jan 03 22:48:20 2020 +0100
@@ -53,7 +53,7 @@
 	DCsize size, alignment, fieldCount;
 	
 	/* struct building uses a state machine. */
-	DCint nextField;       /* == -1 if struct is closed */
+	DCint nextField;                        /* == -1 if struct is closed */
 	DCstruct *pCurrentStruct, *pLastStruct; /* == this, unless we're in a sub struct */
 };