Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/makesdna/intern/dna_genfile.c')
-rw-r--r--source/blender/makesdna/intern/dna_genfile.c790
1 files changed, 395 insertions, 395 deletions
diff --git a/source/blender/makesdna/intern/dna_genfile.c b/source/blender/makesdna/intern/dna_genfile.c
index d0429041d9b..80c80d02e06 100644
--- a/source/blender/makesdna/intern/dna_genfile.c
+++ b/source/blender/makesdna/intern/dna_genfile.c
@@ -143,10 +143,10 @@ static short le_short(short temp);
static short le_short(short temp)
{
short new;
- char *rt=(char *)&temp, *rtn=(char *)&new;
+ char *rt = (char *)&temp, *rtn = (char *)&new;
- rtn[0]= rt[1];
- rtn[1]= rt[0];
+ rtn[0] = rt[1];
+ rtn[1] = rt[0];
return new;
}
@@ -155,12 +155,12 @@ static short le_short(short temp)
static int le_int(int temp)
{
int new;
- char *rt=(char *)&temp, *rtn=(char *)&new;
+ char *rt = (char *)&temp, *rtn = (char *)&new;
- rtn[0]= rt[3];
- rtn[1]= rt[2];
- rtn[2]= rt[1];
- rtn[3]= rt[0];
+ rtn[0] = rt[3];
+ rtn[1] = rt[2];
+ rtn[2] = rt[1];
+ rtn[3] = rt[0];
return new;
}
@@ -171,18 +171,18 @@ static int le_int(int temp)
/* allowed duplicate code from makesdna.c */
int DNA_elem_array_size(const char *astr, int len)
{
- int a, mul=1;
- char str[100], *cp= NULL;
+ int a, mul = 1;
+ char str[100], *cp = NULL;
- memcpy(str, astr, len+1);
+ memcpy(str, astr, len + 1);
- for (a=0; a<len; a++) {
- if ( str[a]== '[' ) {
- cp= &(str[a+1]);
+ for (a = 0; a < len; a++) {
+ if (str[a] == '[') {
+ cp = &(str[a + 1]);
}
- else if ( str[a]==']' && cp) {
- str[a]= 0;
- mul*= atoi(cp);
+ else if (str[a] == ']' && cp) {
+ str[a] = 0;
+ mul *= atoi(cp);
}
}
@@ -210,7 +210,7 @@ void DNA_sdna_free(SDNA *sdna)
static int ispointer(const char *name)
{
/* check if pointer or function pointer */
- return (name[0]=='*' || (name[0]=='(' && name[1]=='*'));
+ return (name[0] == '*' || (name[0] == '(' && name[1] == '*'));
}
static int elementsize(SDNA *sdna, short type, short name)
@@ -219,24 +219,24 @@ static int elementsize(SDNA *sdna, short type, short name)
int mul, namelen, len;
const char *cp;
- cp= sdna->names[name];
- len= 0;
+ cp = sdna->names[name];
+ len = 0;
- namelen= strlen(cp);
+ namelen = strlen(cp);
/* is it a pointer or function pointer? */
if (ispointer(cp)) {
/* has the naam an extra length? (array) */
- mul= 1;
- if ( cp[namelen-1]==']') mul= DNA_elem_array_size(cp, namelen);
+ mul = 1;
+ if (cp[namelen - 1] == ']') mul = DNA_elem_array_size(cp, namelen);
- len= sdna->pointerlen*mul;
+ len = sdna->pointerlen * mul;
}
- else if ( sdna->typelens[type] ) {
+ else if (sdna->typelens[type]) {
/* has the naam an extra length? (array) */
- mul= 1;
- if ( cp[namelen-1]==']') mul= DNA_elem_array_size(cp, namelen);
+ mul = 1;
+ if (cp[namelen - 1] == ']') mul = DNA_elem_array_size(cp, namelen);
- len= mul*sdna->typelens[type];
+ len = mul * sdna->typelens[type];
}
@@ -250,13 +250,13 @@ static void printstruct(SDNA *sdna, short strnr)
int b, nr;
short *sp;
- sp= sdna->structs[strnr];
+ sp = sdna->structs[strnr];
- printf("struct %s\n", sdna->types[ sp[0] ]);
- nr= sp[1];
- sp+= 2;
+ printf("struct %s\n", sdna->types[sp[0]]);
+ nr = sp[1];
+ sp += 2;
- for (b=0; b< nr; b++, sp+= 2) {
+ for (b = 0; b < nr; b++, sp += 2) {
printf(" %s %s\n", sdna->types[sp[0]], sdna->names[sp[1]]);
}
}
@@ -265,14 +265,14 @@ static void printstruct(SDNA *sdna, short strnr)
static short *findstruct_name(SDNA *sdna, const char *str)
{
int a;
- short *sp= NULL;
+ short *sp = NULL;
- for (a=0; a<sdna->nr_structs; a++) {
+ for (a = 0; a < sdna->nr_structs; a++) {
- sp= sdna->structs[a];
+ sp = sdna->structs[a];
- if (strcmp( sdna->types[ sp[0] ], str )==0) return sp;
+ if (strcmp(sdna->types[sp[0]], str) == 0) return sp;
}
return NULL;
@@ -280,11 +280,11 @@ static short *findstruct_name(SDNA *sdna, const char *str)
int DNA_struct_find_nr(SDNA *sdna, const char *str)
{
- short *sp= NULL;
+ short *sp = NULL;
- if (sdna->lastfind<sdna->nr_structs) {
- sp= sdna->structs[sdna->lastfind];
- if (strcmp( sdna->types[ sp[0] ], str )==0) return sdna->lastfind;
+ if (sdna->lastfind < sdna->nr_structs) {
+ sp = sdna->structs[sdna->lastfind];
+ if (strcmp(sdna->types[sp[0]], str) == 0) return sdna->lastfind;
}
#ifdef WITH_DNA_GHASH
@@ -293,12 +293,12 @@ int DNA_struct_find_nr(SDNA *sdna, const char *str)
{
int a;
- for (a=0; a<sdna->nr_structs; a++) {
+ for (a = 0; a < sdna->nr_structs; a++) {
- sp= sdna->structs[a];
+ sp = sdna->structs[a];
- if (strcmp( sdna->types[ sp[0] ], str )==0) {
- sdna->lastfind= a;
+ if (strcmp(sdna->types[sp[0]], str) == 0) {
+ sdna->lastfind = a;
return a;
}
}
@@ -314,172 +314,172 @@ int DNA_struct_find_nr(SDNA *sdna, const char *str)
static void init_structDNA(SDNA *sdna, int do_endian_swap)
/* in sdna->data the data, now we convert that to something understandable */
{
- int *data, *verg, gravity_fix= -1;
+ int *data, *verg, gravity_fix = -1;
intptr_t nr;
short *sp;
char str[8], *cp;
- verg= (int *)str;
- data= (int *)sdna->data;
+ verg = (int *)str;
+ data = (int *)sdna->data;
strcpy(str, "SDNA");
- if ( *data == *verg ) {
+ if (*data == *verg) {
data++;
/* load names array */
strcpy(str, "NAME");
- if ( *data == *verg ) {
+ if (*data == *verg) {
data++;
- if (do_endian_swap) sdna->nr_names= le_int(*data);
- else sdna->nr_names= *data;
+ if (do_endian_swap) sdna->nr_names = le_int(*data);
+ else sdna->nr_names = *data;
data++;
- sdna->names= MEM_callocN(sizeof(void *)*sdna->nr_names, "sdnanames");
+ sdna->names = MEM_callocN(sizeof(void *) * sdna->nr_names, "sdnanames");
}
else {
printf("NAME error in SDNA file\n");
return;
}
- nr= 0;
- cp= (char *)data;
- while (nr<sdna->nr_names) {
- sdna->names[nr]= cp;
+ nr = 0;
+ cp = (char *)data;
+ while (nr < sdna->nr_names) {
+ sdna->names[nr] = cp;
/* "float gravity [3]" was parsed wrong giving both "gravity" and
* "[3]" members. we rename "[3]", and later set the type of
* "gravity" to "void" so the offsets work out correct */
- if (*cp == '[' && strcmp(cp, "[3]")==0) {
- if (nr && strcmp(sdna->names[nr-1], "Cvi") == 0) {
- sdna->names[nr]= "gravity[3]";
- gravity_fix= nr;
+ if (*cp == '[' && strcmp(cp, "[3]") == 0) {
+ if (nr && strcmp(sdna->names[nr - 1], "Cvi") == 0) {
+ sdna->names[nr] = "gravity[3]";
+ gravity_fix = nr;
}
}
- while ( *cp) cp++;
+ while (*cp) cp++;
cp++;
nr++;
}
- nr= (intptr_t)cp; /* prevent BUS error */
- nr= (nr+3) & ~3;
- cp= (char *)nr;
+ nr = (intptr_t)cp; /* prevent BUS error */
+ nr = (nr + 3) & ~3;
+ cp = (char *)nr;
/* load type names array */
- data= (int *)cp;
+ data = (int *)cp;
strcpy(str, "TYPE");
- if ( *data == *verg ) {
+ if (*data == *verg) {
data++;
- if (do_endian_swap) sdna->nr_types= le_int(*data);
- else sdna->nr_types= *data;
+ if (do_endian_swap) sdna->nr_types = le_int(*data);
+ else sdna->nr_types = *data;
data++;
- sdna->types= MEM_callocN(sizeof(void *)*sdna->nr_types, "sdnatypes");
+ sdna->types = MEM_callocN(sizeof(void *) * sdna->nr_types, "sdnatypes");
}
else {
printf("TYPE error in SDNA file\n");
return;
}
- nr= 0;
- cp= (char *)data;
- while (nr<sdna->nr_types) {
- sdna->types[nr]= cp;
+ nr = 0;
+ cp = (char *)data;
+ while (nr < sdna->nr_types) {
+ sdna->types[nr] = cp;
/* this is a patch, to change struct names without a conflict with SDNA */
/* be careful to use it, in this case for a system-struct (opengl/X) */
- if ( *cp == 'b') {
+ if (*cp == 'b') {
/* struct Screen was already used by X, 'bScreen' replaces the old IrisGL 'Screen' struct */
- if ( strcmp("bScreen", cp)==0 ) sdna->types[nr]= cp+1;
+ if (strcmp("bScreen", cp) == 0) sdna->types[nr] = cp + 1;
}
- while ( *cp) cp++;
+ while (*cp) cp++;
cp++;
nr++;
}
- nr= (intptr_t)cp; /* prevent BUS error */
- nr= (nr+3) & ~3;
- cp= (char *)nr;
+ nr = (intptr_t)cp; /* prevent BUS error */
+ nr = (nr + 3) & ~3;
+ cp = (char *)nr;
/* load typelen array */
- data= (int *)cp;
+ data = (int *)cp;
strcpy(str, "TLEN");
- if ( *data == *verg ) {
+ if (*data == *verg) {
data++;
- sp= (short *)data;
- sdna->typelens= sp;
+ sp = (short *)data;
+ sdna->typelens = sp;
if (do_endian_swap) {
- short a, *spo= sp;
+ short a, *spo = sp;
- a= sdna->nr_types;
+ a = sdna->nr_types;
while (a--) {
- spo[0]= le_short(spo[0]);
+ spo[0] = le_short(spo[0]);
spo++;
}
}
- sp+= sdna->nr_types;
+ sp += sdna->nr_types;
}
else {
printf("TLEN error in SDNA file\n");
return;
}
- if (sdna->nr_types & 1) sp++; /* prevent BUS error */
+ if (sdna->nr_types & 1) sp++; /* prevent BUS error */
/* load struct array */
- data= (int *)sp;
+ data = (int *)sp;
strcpy(str, "STRC");
- if ( *data == *verg ) {
+ if (*data == *verg) {
data++;
- if (do_endian_swap) sdna->nr_structs= le_int(*data);
- else sdna->nr_structs= *data;
+ if (do_endian_swap) sdna->nr_structs = le_int(*data);
+ else sdna->nr_structs = *data;
data++;
- sdna->structs= MEM_callocN(sizeof(void *)*sdna->nr_structs, "sdnastrcs");
+ sdna->structs = MEM_callocN(sizeof(void *) * sdna->nr_structs, "sdnastrcs");
}
else {
printf("STRC error in SDNA file\n");
return;
}
- nr= 0;
- sp= (short *)data;
- while (nr<sdna->nr_structs) {
- sdna->structs[nr]= sp;
+ nr = 0;
+ sp = (short *)data;
+ while (nr < sdna->nr_structs) {
+ sdna->structs[nr] = sp;
if (do_endian_swap) {
short a;
- sp[0]= le_short(sp[0]);
- sp[1]= le_short(sp[1]);
+ sp[0] = le_short(sp[0]);
+ sp[1] = le_short(sp[1]);
- a= sp[1];
- sp+= 2;
+ a = sp[1];
+ sp += 2;
while (a--) {
- sp[0]= le_short(sp[0]);
- sp[1]= le_short(sp[1]);
- sp+= 2;
+ sp[0] = le_short(sp[0]);
+ sp[1] = le_short(sp[1]);
+ sp += 2;
}
}
else {
- sp+= 2*sp[1]+2;
+ sp += 2 * sp[1] + 2;
}
nr++;
}
/* finally pointerlen: use struct ListBase to test it, never change the size of it! */
- sp= findstruct_name(sdna, "ListBase");
+ sp = findstruct_name(sdna, "ListBase");
/* weird; i have no memory of that... I think I used sizeof(void *) before... (ton) */
- sdna->pointerlen= sdna->typelens[ sp[0] ]/2;
+ sdna->pointerlen = sdna->typelens[sp[0]] / 2;
- if (sp[1]!=2 || (sdna->pointerlen!=4 && sdna->pointerlen!=8)) {
+ if (sp[1] != 2 || (sdna->pointerlen != 4 && sdna->pointerlen != 8)) {
printf("ListBase struct error! Needs it to calculate pointerize.\n");
exit(0);
/* well, at least sizeof(ListBase) is error proof! (ton) */
@@ -487,19 +487,19 @@ static void init_structDNA(SDNA *sdna, int do_endian_swap)
/* second part of gravity problem, setting "gravity" type to void */
if (gravity_fix > -1) {
- for (nr=0; nr<sdna->nr_structs; nr++) {
- sp= sdna->structs[nr];
+ for (nr = 0; nr < sdna->nr_structs; nr++) {
+ sp = sdna->structs[nr];
if (strcmp(sdna->types[sp[0]], "ClothSimSettings") == 0)
- sp[10]= SDNA_TYPE_VOID;
+ sp[10] = SDNA_TYPE_VOID;
}
}
#ifdef WITH_DNA_GHASH
/* create a ghash lookup to speed up */
- sdna->structs_map= BLI_ghash_new(BLI_ghashutil_strhash, BLI_ghashutil_strcmp, "init_structDNA gh");
+ sdna->structs_map = BLI_ghash_str_new("init_structDNA gh");
for (nr = 0; nr < sdna->nr_structs; nr++) {
- sp= sdna->structs[nr];
+ sp = sdna->structs[nr];
BLI_ghash_insert(sdna->structs_map, (void *)sdna->types[sp[0]], (void *)(nr + 1));
}
#endif
@@ -508,12 +508,12 @@ static void init_structDNA(SDNA *sdna, int do_endian_swap)
SDNA *DNA_sdna_from_data(void *data, int datalen, int do_endian_swap)
{
- SDNA *sdna= MEM_mallocN(sizeof(*sdna), "sdna");
+ SDNA *sdna = MEM_mallocN(sizeof(*sdna), "sdna");
- sdna->lastfind= 0;
+ sdna->lastfind = 0;
- sdna->datalen= datalen;
- sdna->data= MEM_mallocN(datalen, "sdna_data");
+ sdna->datalen = datalen;
+ sdna->data = MEM_mallocN(datalen, "sdna_data");
memcpy(sdna->data, data, datalen);
init_structDNA(sdna, do_endian_swap);
@@ -532,19 +532,19 @@ static void recurs_test_compflags(SDNA *sdna, char *compflags, int structnr)
const char *cp;
/* check all structs, test if it's inside another struct */
- sp= sdna->structs[structnr];
- typenr= sp[0];
+ sp = sdna->structs[structnr];
+ typenr = sp[0];
- for (a=0; a<sdna->nr_structs; a++) {
- if (a!=structnr && compflags[a]==1) {
- sp= sdna->structs[a];
- elems= sp[1];
- sp+= 2;
- for (b=0; b<elems; b++, sp+=2) {
- if (sp[0]==typenr) {
- cp= sdna->names[ sp[1] ];
+ for (a = 0; a < sdna->nr_structs; a++) {
+ if (a != structnr && compflags[a] == 1) {
+ sp = sdna->structs[a];
+ elems = sp[1];
+ sp += 2;
+ for (b = 0; b < elems; b++, sp += 2) {
+ if (sp[0] == typenr) {
+ cp = sdna->names[sp[1]];
if (!ispointer(cp)) {
- compflags[a]= 2;
+ compflags[a] = 2;
recurs_test_compflags(sdna, compflags, a);
}
}
@@ -554,11 +554,11 @@ static void recurs_test_compflags(SDNA *sdna, char *compflags, int structnr)
}
- /* Unsure of exact function - compares the sdna argument to
- * newsdna and sets up the information necessary to convert
- * data written with a dna of oldsdna to inmemory data with a
- * structure defined by the newsdna sdna (I think). -zr
- */
+/* Unsure of exact function - compares the sdna argument to
+ * newsdna and sets up the information necessary to convert
+ * data written with a dna of oldsdna to inmemory data with a
+ * structure defined by the newsdna sdna (I think). -zr
+ */
/* well, the function below is just a lookup table to speed
* up reading files. doh! -ton
@@ -576,53 +576,53 @@ char *DNA_struct_get_compareflags(SDNA *sdna, SDNA *newsdna)
const char *str1, *str2;
char *compflags;
- if (sdna->nr_structs==0) {
+ if (sdna->nr_structs == 0) {
printf("error: file without SDNA\n");
return NULL;
}
- compflags= MEM_callocN(sdna->nr_structs, "compflags");
+ compflags = MEM_callocN(sdna->nr_structs, "compflags");
/* we check all structs in 'sdna' and compare them with
* the structs in 'newsdna'
*/
- for (a=0; a<sdna->nr_structs; a++) {
- spold= sdna->structs[a];
+ for (a = 0; a < sdna->nr_structs; a++) {
+ spold = sdna->structs[a];
/* search for type in cur */
- spcur= findstruct_name(newsdna, sdna->types[spold[0]]);
+ spcur = findstruct_name(newsdna, sdna->types[spold[0]]);
if (spcur) {
- compflags[a]= 2;
+ compflags[a] = 2;
/* compare length and amount of elems */
- if ( spcur[1] == spold[1]) {
- if ( newsdna->typelens[spcur[0]] == sdna->typelens[spold[0]] ) {
+ if (spcur[1] == spold[1]) {
+ if (newsdna->typelens[spcur[0]] == sdna->typelens[spold[0]]) {
/* same length, same amount of elems, now per type and name */
- b= spold[1];
- spold+= 2;
- spcur+= 2;
+ b = spold[1];
+ spold += 2;
+ spcur += 2;
while (b > 0) {
- str1= newsdna->types[spcur[0]];
- str2= sdna->types[spold[0]];
- if (strcmp(str1, str2)!=0) break;
+ str1 = newsdna->types[spcur[0]];
+ str2 = sdna->types[spold[0]];
+ if (strcmp(str1, str2) != 0) break;
- str1= newsdna->names[spcur[1]];
- str2= sdna->names[spold[1]];
- if (strcmp(str1, str2)!=0) break;
+ str1 = newsdna->names[spcur[1]];
+ str2 = sdna->names[spold[1]];
+ if (strcmp(str1, str2) != 0) break;
/* same type and same name, now pointersize */
if (ispointer(str1)) {
- if (sdna->pointerlen!=newsdna->pointerlen) break;
+ if (sdna->pointerlen != newsdna->pointerlen) break;
}
b--;
- spold+= 2;
- spcur+= 2;
+ spold += 2;
+ spcur += 2;
}
- if (b==0) compflags[a]= 1;
+ if (b == 0) compflags[a] = 1;
}
}
@@ -633,20 +633,20 @@ char *DNA_struct_get_compareflags(SDNA *sdna, SDNA *newsdna)
/* first struct in util.h is struct Link, this is skipped in compflags (als # 0).
* was a bug, and this way dirty patched! Solve this later....
*/
- compflags[0]= 1;
+ compflags[0] = 1;
/* Because structs can be inside structs, we recursively
* set flags when a struct is altered
*/
- for (a=0; a<sdna->nr_structs; a++) {
- if (compflags[a]==2) recurs_test_compflags(sdna, compflags, a);
+ for (a = 0; a < sdna->nr_structs; a++) {
+ if (compflags[a] == 2) recurs_test_compflags(sdna, compflags, a);
}
#if 0
- for (a=0; a<sdna->nr_structs; a++) {
- if (compflags[a]==2) {
- spold= sdna->structs[a];
- printf("changed: %s\n", sdna->types[ spold[0] ]);
+ for (a = 0; a < sdna->nr_structs; a++) {
+ if (compflags[a] == 2) {
+ spold = sdna->structs[a];
+ printf("changed: %s\n", sdna->types[spold[0]]);
}
}
#endif
@@ -656,94 +656,94 @@ char *DNA_struct_get_compareflags(SDNA *sdna, SDNA *newsdna)
static eSDNA_Type sdna_type_nr(const char *dna_type)
{
- if ((strcmp(dna_type, "char")==0) || (strcmp(dna_type, "const char")==0)) return SDNA_TYPE_CHAR;
- else if ((strcmp(dna_type, "uchar")==0) || (strcmp(dna_type, "unsigned char")==0)) return SDNA_TYPE_UCHAR;
- else if ( strcmp(dna_type, "short")==0) return SDNA_TYPE_SHORT;
- else if ((strcmp(dna_type, "ushort")==0)||(strcmp(dna_type, "unsigned short")==0)) return SDNA_TYPE_USHORT;
- else if ( strcmp(dna_type, "int")==0) return SDNA_TYPE_INT;
- else if ( strcmp(dna_type, "long")==0) return SDNA_TYPE_LONG;
- else if ((strcmp(dna_type, "ulong")==0)||(strcmp(dna_type, "unsigned long")==0)) return SDNA_TYPE_ULONG;
- else if ( strcmp(dna_type, "float")==0) return SDNA_TYPE_FLOAT;
- else if ( strcmp(dna_type, "double")==0) return SDNA_TYPE_DOUBLE;
- else if ( strcmp(dna_type, "int64_t")==0) return SDNA_TYPE_INT64;
- else if ( strcmp(dna_type, "uint64_t")==0) return SDNA_TYPE_UINT64;
- else return -1; /* invalid! */
+ if ((strcmp(dna_type, "char") == 0) || (strcmp(dna_type, "const char") == 0)) return SDNA_TYPE_CHAR;
+ else if ((strcmp(dna_type, "uchar") == 0) || (strcmp(dna_type, "unsigned char") == 0)) return SDNA_TYPE_UCHAR;
+ else if ( strcmp(dna_type, "short") == 0) return SDNA_TYPE_SHORT;
+ else if ((strcmp(dna_type, "ushort") == 0)||(strcmp(dna_type, "unsigned short") == 0)) return SDNA_TYPE_USHORT;
+ else if ( strcmp(dna_type, "int") == 0) return SDNA_TYPE_INT;
+ else if ( strcmp(dna_type, "long") == 0) return SDNA_TYPE_LONG;
+ else if ((strcmp(dna_type, "ulong") == 0)||(strcmp(dna_type, "unsigned long") == 0)) return SDNA_TYPE_ULONG;
+ else if ( strcmp(dna_type, "float") == 0) return SDNA_TYPE_FLOAT;
+ else if ( strcmp(dna_type, "double") == 0) return SDNA_TYPE_DOUBLE;
+ else if ( strcmp(dna_type, "int64_t") == 0) return SDNA_TYPE_INT64;
+ else if ( strcmp(dna_type, "uint64_t") == 0) return SDNA_TYPE_UINT64;
+ else return -1; /* invalid! */
}
static void cast_elem(const char *ctype, const char *otype, const char *name, char *curdata, char *olddata)
{
double val = 0.0;
- int arrlen, curlen=1, oldlen=1;
+ int arrlen, curlen = 1, oldlen = 1;
eSDNA_Type ctypenr, otypenr;
- arrlen= DNA_elem_array_size(name, strlen(name));
+ arrlen = DNA_elem_array_size(name, strlen(name));
- if ( (otypenr= sdna_type_nr(otype)) == -1 ||
- (ctypenr= sdna_type_nr(ctype)) == -1 )
+ if ( (otypenr = sdna_type_nr(otype)) == -1 ||
+ (ctypenr = sdna_type_nr(ctype)) == -1)
{
return;
}
/* define lengths */
- oldlen= DNA_elem_type_size(otypenr);
- curlen= DNA_elem_type_size(ctypenr);
+ oldlen = DNA_elem_type_size(otypenr);
+ curlen = DNA_elem_type_size(ctypenr);
- while (arrlen>0) {
+ while (arrlen > 0) {
switch (otypenr) {
- case SDNA_TYPE_CHAR:
- val= *olddata; break;
- case SDNA_TYPE_UCHAR:
- val= *( (unsigned char *)olddata); break;
- case SDNA_TYPE_SHORT:
- val= *( (short *)olddata); break;
- case SDNA_TYPE_USHORT:
- val= *( (unsigned short *)olddata); break;
- case SDNA_TYPE_INT:
- val= *( (int *)olddata); break;
- case SDNA_TYPE_LONG:
- val= *( (int *)olddata); break;
- case SDNA_TYPE_ULONG:
- val= *( (unsigned int *)olddata); break;
- case SDNA_TYPE_FLOAT:
- val= *( (float *)olddata); break;
- case SDNA_TYPE_DOUBLE:
- val= *( (double *)olddata); break;
- case SDNA_TYPE_INT64:
- val= *( (int64_t *)olddata); break;
- case SDNA_TYPE_UINT64:
- val= *( (uint64_t *)olddata); break;
+ case SDNA_TYPE_CHAR:
+ val = *olddata; break;
+ case SDNA_TYPE_UCHAR:
+ val = *( (unsigned char *)olddata); break;
+ case SDNA_TYPE_SHORT:
+ val = *( (short *)olddata); break;
+ case SDNA_TYPE_USHORT:
+ val = *( (unsigned short *)olddata); break;
+ case SDNA_TYPE_INT:
+ val = *( (int *)olddata); break;
+ case SDNA_TYPE_LONG:
+ val = *( (int *)olddata); break;
+ case SDNA_TYPE_ULONG:
+ val = *( (unsigned int *)olddata); break;
+ case SDNA_TYPE_FLOAT:
+ val = *( (float *)olddata); break;
+ case SDNA_TYPE_DOUBLE:
+ val = *( (double *)olddata); break;
+ case SDNA_TYPE_INT64:
+ val = *( (int64_t *)olddata); break;
+ case SDNA_TYPE_UINT64:
+ val = *( (uint64_t *)olddata); break;
}
switch (ctypenr) {
- case SDNA_TYPE_CHAR:
- *curdata= val; break;
- case SDNA_TYPE_UCHAR:
- *( (unsigned char *)curdata)= val; break;
- case SDNA_TYPE_SHORT:
- *( (short *)curdata)= val; break;
- case SDNA_TYPE_USHORT:
- *( (unsigned short *)curdata)= val; break;
- case SDNA_TYPE_INT:
- *( (int *)curdata)= val; break;
- case SDNA_TYPE_LONG:
- *( (int *)curdata)= val; break;
- case SDNA_TYPE_ULONG:
- *( (unsigned int *)curdata)= val; break;
- case SDNA_TYPE_FLOAT:
- if (otypenr<2) val/= 255;
- *( (float *)curdata)= val; break;
- case SDNA_TYPE_DOUBLE:
- if (otypenr<2) val/= 255;
- *( (double *)curdata)= val; break;
- case SDNA_TYPE_INT64:
- *( (int64_t *)curdata)= val; break;
- case SDNA_TYPE_UINT64:
- *( (uint64_t *)curdata)= val; break;
+ case SDNA_TYPE_CHAR:
+ *curdata = val; break;
+ case SDNA_TYPE_UCHAR:
+ *( (unsigned char *)curdata) = val; break;
+ case SDNA_TYPE_SHORT:
+ *( (short *)curdata) = val; break;
+ case SDNA_TYPE_USHORT:
+ *( (unsigned short *)curdata) = val; break;
+ case SDNA_TYPE_INT:
+ *( (int *)curdata) = val; break;
+ case SDNA_TYPE_LONG:
+ *( (int *)curdata) = val; break;
+ case SDNA_TYPE_ULONG:
+ *( (unsigned int *)curdata) = val; break;
+ case SDNA_TYPE_FLOAT:
+ if (otypenr < 2) val /= 255;
+ *( (float *)curdata) = val; break;
+ case SDNA_TYPE_DOUBLE:
+ if (otypenr < 2) val /= 255;
+ *( (double *)curdata) = val; break;
+ case SDNA_TYPE_INT64:
+ *( (int64_t *)curdata) = val; break;
+ case SDNA_TYPE_UINT64:
+ *( (uint64_t *)curdata) = val; break;
}
- olddata+= oldlen;
- curdata+= curlen;
+ olddata += oldlen;
+ curdata += curlen;
arrlen--;
}
}
@@ -757,26 +757,26 @@ static void cast_pointer(int curlen, int oldlen, const char *name, char *curdata
#endif
int arrlen;
- arrlen= DNA_elem_array_size(name, strlen(name));
+ arrlen = DNA_elem_array_size(name, strlen(name));
- while (arrlen>0) {
+ while (arrlen > 0) {
- if (curlen==oldlen) {
+ if (curlen == oldlen) {
memcpy(curdata, olddata, curlen);
}
- else if (curlen==4 && oldlen==8) {
+ else if (curlen == 4 && oldlen == 8) {
#ifdef WIN32
- lval= *( (__int64 *)olddata );
+ lval = *( (__int64 *)olddata);
#else
- lval= *( (long long *)olddata );
+ lval = *( (long long *)olddata);
#endif
- *((int *)curdata) = lval>>3; /* is of course gambling! */
+ *((int *)curdata) = lval >> 3; /* is of course gambling! */
}
- else if (curlen==8 && oldlen==4) {
+ else if (curlen == 8 && oldlen == 4) {
#ifdef WIN32
- *( (__int64 *)curdata ) = *((int *)olddata);
+ *( (__int64 *)curdata) = *((int *)olddata);
#else
- *( (long long *)curdata ) = *((int *)olddata);
+ *( (long long *)curdata) = *((int *)olddata);
#endif
}
else {
@@ -784,8 +784,8 @@ static void cast_pointer(int curlen, int oldlen, const char *name, char *curdata
printf("errpr: illegal pointersize!\n");
}
- olddata+= oldlen;
- curdata+= curlen;
+ olddata += oldlen;
+ curdata += curlen;
arrlen--;
}
@@ -793,14 +793,14 @@ static void cast_pointer(int curlen, int oldlen, const char *name, char *curdata
static int elem_strcmp(const char *name, const char *oname)
{
- int a=0;
+ int a = 0;
/* strcmp without array part */
while (1) {
if (name[a] != oname[a]) return 1;
- if (name[a]=='[') break;
- if (name[a]==0) break;
+ if (name[a] == '[') break;
+ if (name[a] == 0) break;
a++;
}
return 0;
@@ -814,25 +814,25 @@ static char *find_elem(SDNA *sdna, const char *type, const char *name, short *ol
/* without arraypart, so names can differ: return old namenr and type */
/* in old is the old struct */
- elemcount= old[1];
- old+= 2;
- for (a=0; a<elemcount; a++, old+=2) {
-
- otype= sdna->types[old[0]];
- oname= sdna->names[old[1]];
-
- len= elementsize(sdna, old[0], old[1]);
-
- if ( elem_strcmp(name, oname)==0 ) { /* naam equal */
- if ( strcmp(type, otype)==0 ) { /* type equal */
- if (sppo) *sppo= old;
+ elemcount = old[1];
+ old += 2;
+ for (a = 0; a < elemcount; a++, old += 2) {
+
+ otype = sdna->types[old[0]];
+ oname = sdna->names[old[1]];
+
+ len = elementsize(sdna, old[0], old[1]);
+
+ if (elem_strcmp(name, oname) == 0) { /* naam equal */
+ if (strcmp(type, otype) == 0) { /* type equal */
+ if (sppo) *sppo = old;
return olddata;
}
return NULL;
}
- olddata+= len;
+ olddata += len;
}
return NULL;
}
@@ -841,11 +841,11 @@ static void reconstruct_elem(SDNA *newsdna, SDNA *oldsdna,
char *type, const char *name, char *curdata, short *old, char *olddata)
{
/* rules: test for NAME:
- * - name equal:
- * - cast type
- * - name partially equal (array differs)
- * - type equal: memcpy
- * - types casten
+ * - name equal:
+ * - cast type
+ * - name partially equal (array differs)
+ * - type equal: memcpy
+ * - types casten
* (nzc 2-4-2001 I want the 'unsigned' bit to be parsed as well. Where
* can I force this?)
*/
@@ -854,61 +854,61 @@ static void reconstruct_elem(SDNA *newsdna, SDNA *oldsdna,
const char *oname, *cp;
/* is 'name' an array? */
- cp= name;
- array= 0;
- while ( *cp && *cp!='[') {
+ cp = name;
+ array = 0;
+ while (*cp && *cp != '[') {
cp++; array++;
}
- if ( *cp!= '[' ) array= 0;
+ if (*cp != '[') array = 0;
/* in old is the old struct */
- elemcount= old[1];
- old+= 2;
- for (a=0; a<elemcount; a++, old+=2) {
- otype= oldsdna->types[old[0]];
- oname= oldsdna->names[old[1]];
- len= elementsize(oldsdna, old[0], old[1]);
+ elemcount = old[1];
+ old += 2;
+ for (a = 0; a < elemcount; a++, old += 2) {
+ otype = oldsdna->types[old[0]];
+ oname = oldsdna->names[old[1]];
+ len = elementsize(oldsdna, old[0], old[1]);
- if ( strcmp(name, oname)==0 ) { /* name equal */
+ if (strcmp(name, oname) == 0) { /* name equal */
- if (ispointer(name)) { /* pointer of functionpointer afhandelen */
+ if (ispointer(name)) { /* pointer of functionpointer afhandelen */
cast_pointer(newsdna->pointerlen, oldsdna->pointerlen, name, curdata, olddata);
}
- else if ( strcmp(type, otype)==0 ) { /* type equal */
+ else if (strcmp(type, otype) == 0) { /* type equal */
memcpy(curdata, olddata, len);
}
else cast_elem(type, otype, name, curdata, olddata);
return;
}
- else if (array) { /* name is an array */
+ else if (array) { /* name is an array */
- if (oname[array]=='[' && strncmp(name, oname, array)==0 ) { /* basis equal */
+ if (oname[array] == '[' && strncmp(name, oname, array) == 0) { /* basis equal */
- cursize= DNA_elem_array_size(name, strlen(name));
- oldsize= DNA_elem_array_size(oname, strlen(oname));
+ cursize = DNA_elem_array_size(name, strlen(name));
+ oldsize = DNA_elem_array_size(oname, strlen(oname));
- if (ispointer(name)) { /* handle pointer or functionpointer */
- if (cursize>oldsize) cast_pointer(newsdna->pointerlen, oldsdna->pointerlen, oname, curdata, olddata);
+ if (ispointer(name)) { /* handle pointer or functionpointer */
+ if (cursize > oldsize) cast_pointer(newsdna->pointerlen, oldsdna->pointerlen, oname, curdata, olddata);
else cast_pointer(newsdna->pointerlen, oldsdna->pointerlen, name, curdata, olddata);
}
- else if (name[0]=='*' || strcmp(type, otype)==0 ) { /* type equal */
- mul= len/oldsize;
- mul*= (cursize < oldsize)? cursize: oldsize;
+ else if (name[0] == '*' || strcmp(type, otype) == 0) { /* type equal */
+ mul = len / oldsize;
+ mul *= (cursize < oldsize) ? cursize : oldsize;
memcpy(curdata, olddata, mul);
/* terminate strings */
- if (oldsize > cursize && strcmp(type, "char")==0)
- curdata[mul-1]= 0;
+ if (oldsize > cursize && strcmp(type, "char") == 0)
+ curdata[mul - 1] = 0;
}
else {
- if (cursize>oldsize) cast_elem(type, otype, oname, curdata, olddata);
+ if (cursize > oldsize) cast_elem(type, otype, oname, curdata, olddata);
else cast_elem(type, otype, name, curdata, olddata);
}
return;
}
}
- olddata+= len;
+ olddata += len;
}
}
@@ -924,69 +924,69 @@ static void reconstruct_struct(SDNA *newsdna, SDNA *oldsdna,
char *type, *cpo, *cpc;
const char *name, *nameo;
- if (oldSDNAnr== -1) return;
- if (curSDNAnr== -1) return;
+ if (oldSDNAnr == -1) return;
+ if (curSDNAnr == -1) return;
- if ( compflags[oldSDNAnr]==1 ) { /* if recursive: test for equal */
+ if (compflags[oldSDNAnr] == 1) { /* if recursive: test for equal */
- spo= oldsdna->structs[oldSDNAnr];
- elen= oldsdna->typelens[ spo[0] ];
+ spo = oldsdna->structs[oldSDNAnr];
+ elen = oldsdna->typelens[spo[0]];
memcpy(cur, data, elen);
return;
}
- firststructtypenr= *(newsdna->structs[0]);
+ firststructtypenr = *(newsdna->structs[0]);
- spo= oldsdna->structs[oldSDNAnr];
- spc= newsdna->structs[curSDNAnr];
+ spo = oldsdna->structs[oldSDNAnr];
+ spc = newsdna->structs[curSDNAnr];
- elemcount= spc[1];
+ elemcount = spc[1];
- spc+= 2;
- cpc= cur;
- for (a=0; a<elemcount; a++, spc+=2) {
- type= newsdna->types[spc[0]];
- name= newsdna->names[spc[1]];
+ spc += 2;
+ cpc = cur;
+ for (a = 0; a < elemcount; a++, spc += 2) {
+ type = newsdna->types[spc[0]];
+ name = newsdna->names[spc[1]];
- elen= elementsize(newsdna, spc[0], spc[1]);
+ elen = elementsize(newsdna, spc[0], spc[1]);
/* test: is type a struct? */
- if (spc[0]>=firststructtypenr && !ispointer(name)) {
+ if (spc[0] >= firststructtypenr && !ispointer(name)) {
/* where does the old struct data start (and is there an old one?) */
- cpo= find_elem(oldsdna, type, name, spo, data, &sppo);
+ cpo = find_elem(oldsdna, type, name, spo, data, &sppo);
if (cpo) {
- oldSDNAnr= DNA_struct_find_nr(oldsdna, type);
- curSDNAnr= DNA_struct_find_nr(newsdna, type);
+ oldSDNAnr = DNA_struct_find_nr(oldsdna, type);
+ curSDNAnr = DNA_struct_find_nr(newsdna, type);
/* array! */
- mul= DNA_elem_array_size(name, strlen(name));
- nameo= oldsdna->names[sppo[1]];
- mulo= DNA_elem_array_size(nameo, strlen(nameo));
+ mul = DNA_elem_array_size(name, strlen(name));
+ nameo = oldsdna->names[sppo[1]];
+ mulo = DNA_elem_array_size(nameo, strlen(nameo));
- eleno= elementsize(oldsdna, sppo[0], sppo[1]);
+ eleno = elementsize(oldsdna, sppo[0], sppo[1]);
- elen/= mul;
- eleno/= mulo;
+ elen /= mul;
+ eleno /= mulo;
while (mul--) {
reconstruct_struct(newsdna, oldsdna, compflags, oldSDNAnr, cpo, curSDNAnr, cpc);
- cpo+= eleno;
- cpc+= elen;
+ cpo += eleno;
+ cpc += elen;
/* new struct array larger than old */
mulo--;
- if (mulo<=0) break;
+ if (mulo <= 0) break;
}
}
- else cpc+= elen;
+ else cpc += elen;
}
else {
reconstruct_elem(newsdna, oldsdna, type, name, cpc, spo, data);
- cpc+= elen;
+ cpc += elen;
}
}
@@ -1002,32 +1002,32 @@ void DNA_struct_switch_endian(SDNA *oldsdna, int oldSDNAnr, char *data)
char *type, *cpo, *cur, cval;
const char *name;
- if (oldSDNAnr== -1) return;
- firststructtypenr= *(oldsdna->structs[0]);
+ if (oldSDNAnr == -1) return;
+ firststructtypenr = *(oldsdna->structs[0]);
- spo= spc= oldsdna->structs[oldSDNAnr];
+ spo = spc = oldsdna->structs[oldSDNAnr];
- elemcount= spo[1];
+ elemcount = spo[1];
- spc+= 2;
- cur= data;
+ spc += 2;
+ cur = data;
- for (a=0; a<elemcount; a++, spc+=2) {
- type= oldsdna->types[spc[0]];
- name= oldsdna->names[spc[1]];
+ for (a = 0; a < elemcount; a++, spc += 2) {
+ type = oldsdna->types[spc[0]];
+ name = oldsdna->names[spc[1]];
/* elementsize = including arraysize */
- elen= elementsize(oldsdna, spc[0], spc[1]);
+ elen = elementsize(oldsdna, spc[0], spc[1]);
/* test: is type a struct? */
- if (spc[0]>=firststructtypenr && !ispointer(name)) {
+ if (spc[0] >= firststructtypenr && !ispointer(name)) {
/* where does the old data start (is there one?) */
- cpo= find_elem(oldsdna, type, name, spo, data, NULL);
+ cpo = find_elem(oldsdna, type, name, spo, data, NULL);
if (cpo) {
- oldSDNAnr= DNA_struct_find_nr(oldsdna, type);
+ oldSDNAnr = DNA_struct_find_nr(oldsdna, type);
- mul= DNA_elem_array_size(name, strlen(name));
- elena= elen/mul;
+ mul = DNA_elem_array_size(name, strlen(name));
+ elena = elen / mul;
while (mul--) {
DNA_struct_switch_endian(oldsdna, oldSDNAnr, cpo);
@@ -1038,113 +1038,113 @@ void DNA_struct_switch_endian(SDNA *oldsdna, int oldSDNAnr, char *data)
else {
if (ispointer(name)) {
- if (oldsdna->pointerlen==8) {
+ if (oldsdna->pointerlen == 8) {
- mul= DNA_elem_array_size(name, strlen(name));
- cpo= cur;
+ mul = DNA_elem_array_size(name, strlen(name));
+ cpo = cur;
while (mul--) {
- cval= cpo[0]; cpo[0]= cpo[7]; cpo[7]= cval;
- cval= cpo[1]; cpo[1]= cpo[6]; cpo[6]= cval;
- cval= cpo[2]; cpo[2]= cpo[5]; cpo[5]= cval;
- cval= cpo[3]; cpo[3]= cpo[4]; cpo[4]= cval;
+ cval = cpo[0]; cpo[0] = cpo[7]; cpo[7] = cval;
+ cval = cpo[1]; cpo[1] = cpo[6]; cpo[6] = cval;
+ cval = cpo[2]; cpo[2] = cpo[5]; cpo[5] = cval;
+ cval = cpo[3]; cpo[3] = cpo[4]; cpo[4] = cval;
- cpo+= 8;
+ cpo += 8;
}
}
}
else {
- if ( spc[0]==SDNA_TYPE_SHORT ||
- spc[0]==SDNA_TYPE_USHORT )
+ if (spc[0] == SDNA_TYPE_SHORT ||
+ spc[0] == SDNA_TYPE_USHORT)
{
/* exception: variable called blocktype/ipowin: derived from ID_ */
- skip= 0;
- if (name[0]=='b' && name[1]=='l') {
- if (strcmp(name, "blocktype")==0) skip= 1;
+ skip = 0;
+ if (name[0] == 'b' && name[1] == 'l') {
+ if (strcmp(name, "blocktype") == 0) skip = 1;
}
- else if (name[0]=='i' && name[1]=='p') {
- if (strcmp(name, "ipowin")==0) skip= 1;
+ else if (name[0] == 'i' && name[1] == 'p') {
+ if (strcmp(name, "ipowin") == 0) skip = 1;
}
- if (skip==0) {
- mul= DNA_elem_array_size(name, strlen(name));
- cpo= cur;
+ if (skip == 0) {
+ mul = DNA_elem_array_size(name, strlen(name));
+ cpo = cur;
while (mul--) {
- cval= cpo[0];
- cpo[0]= cpo[1];
- cpo[1]= cval;
- cpo+= 2;
+ cval = cpo[0];
+ cpo[0] = cpo[1];
+ cpo[1] = cval;
+ cpo += 2;
}
}
}
- else if ( (spc[0]==SDNA_TYPE_INT ||
- spc[0]==SDNA_TYPE_LONG ||
- spc[0]==SDNA_TYPE_ULONG ||
- spc[0]==SDNA_TYPE_FLOAT))
+ else if ( (spc[0] == SDNA_TYPE_INT ||
+ spc[0] == SDNA_TYPE_LONG ||
+ spc[0] == SDNA_TYPE_ULONG ||
+ spc[0] == SDNA_TYPE_FLOAT))
{
- mul= DNA_elem_array_size(name, strlen(name));
- cpo= cur;
+ mul = DNA_elem_array_size(name, strlen(name));
+ cpo = cur;
while (mul--) {
- cval= cpo[0];
- cpo[0]= cpo[3];
- cpo[3]= cval;
- cval= cpo[1];
- cpo[1]= cpo[2];
- cpo[2]= cval;
- cpo+= 4;
+ cval = cpo[0];
+ cpo[0] = cpo[3];
+ cpo[3] = cval;
+ cval = cpo[1];
+ cpo[1] = cpo[2];
+ cpo[2] = cval;
+ cpo += 4;
}
}
- else if ( (spc[0]==SDNA_TYPE_INT64) ||
- (spc[0]==SDNA_TYPE_UINT64))
+ else if ( (spc[0] == SDNA_TYPE_INT64) ||
+ (spc[0] == SDNA_TYPE_UINT64))
{
- mul= DNA_elem_array_size(name, strlen(name));
- cpo= cur;
+ mul = DNA_elem_array_size(name, strlen(name));
+ cpo = cur;
while (mul--) {
- cval= cpo[0]; cpo[0]= cpo[7]; cpo[7]= cval;
- cval= cpo[1]; cpo[1]= cpo[6]; cpo[6]= cval;
- cval= cpo[2]; cpo[2]= cpo[5]; cpo[5]= cval;
- cval= cpo[3]; cpo[3]= cpo[4]; cpo[4]= cval;
+ cval = cpo[0]; cpo[0] = cpo[7]; cpo[7] = cval;
+ cval = cpo[1]; cpo[1] = cpo[6]; cpo[6] = cval;
+ cval = cpo[2]; cpo[2] = cpo[5]; cpo[5] = cval;
+ cval = cpo[3]; cpo[3] = cpo[4]; cpo[4] = cval;
- cpo+= 8;
+ cpo += 8;
}
}
}
}
- cur+= elen;
+ cur += elen;
}
}
void *DNA_struct_reconstruct(SDNA *newsdna, SDNA *oldsdna, char *compflags, int oldSDNAnr, int blocks, void *data)
{
- int a, curSDNAnr, curlen=0, oldlen;
+ int a, curSDNAnr, curlen = 0, oldlen;
short *spo, *spc;
char *cur, *type, *cpc, *cpo;
/* oldSDNAnr == structnr, we're looking for the corresponding 'cur' number */
- spo= oldsdna->structs[oldSDNAnr];
- type= oldsdna->types[ spo[0] ];
- oldlen= oldsdna->typelens[ spo[0] ];
- curSDNAnr= DNA_struct_find_nr(newsdna, type);
+ spo = oldsdna->structs[oldSDNAnr];
+ type = oldsdna->types[spo[0]];
+ oldlen = oldsdna->typelens[spo[0]];
+ curSDNAnr = DNA_struct_find_nr(newsdna, type);
/* init data and alloc */
if (curSDNAnr >= 0) {
- spc= newsdna->structs[curSDNAnr];
- curlen= newsdna->typelens[ spc[0] ];
+ spc = newsdna->structs[curSDNAnr];
+ curlen = newsdna->typelens[spc[0]];
}
- if (curlen==0) {
+ if (curlen == 0) {
return NULL;
}
- cur= MEM_callocN(blocks*curlen, "reconstruct");
- cpc= cur;
- cpo= data;
- for (a=0; a<blocks; a++) {
+ cur = MEM_callocN(blocks * curlen, "reconstruct");
+ cpc = cur;
+ cpo = data;
+ for (a = 0; a < blocks; a++) {
reconstruct_struct(newsdna, oldsdna, compflags, oldSDNAnr, cpo, curSDNAnr, cpc);
- cpc+= curlen;
- cpo+= oldlen;
+ cpc += curlen;
+ cpo += oldlen;
}
return cur;
@@ -1153,9 +1153,9 @@ void *DNA_struct_reconstruct(SDNA *newsdna, SDNA *oldsdna, char *compflags, int
int DNA_elem_offset(SDNA *sdna, const char *stype, const char *vartype, const char *name)
{
- int SDNAnr= DNA_struct_find_nr(sdna, stype);
- short *spo= sdna->structs[SDNAnr];
- char *cp= find_elem(sdna, vartype, name, spo, NULL, NULL);
+ int SDNAnr = DNA_struct_find_nr(sdna, stype);
+ short *spo = sdna->structs[SDNAnr];
+ char *cp = find_elem(sdna, vartype, name, spo, NULL, NULL);
return (int)((intptr_t)cp);
}