Skip to content

Commit

Permalink
Merge pull request #164 from monkey0506/struct_dyn_arrays
Browse files Browse the repository at this point in the history
Modified compiler to allow dynamic arrays within structs
  • Loading branch information
ivan-mogilko committed Jul 13, 2014
2 parents 8eaef12 + 17a51e9 commit d65cce0
Showing 1 changed file with 19 additions and 12 deletions.
31 changes: 19 additions & 12 deletions Compiler/script/cs_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3683,22 +3683,29 @@ int __cc_compile_file(const char*inpl,ccCompiledScript*scrip) {
int nextt = targ.getnext();
int array_size;

if (get_literal_value(nextt, &array_size, "Array size must be constant value"))
return -1;

if (array_size < 1) {
cc_error("array size cannot be less than 1");
return -1;
if (sym.get_type(nextt) == SYM_CLOSEBRACKET) {
sym.flags[vname] |= SFLG_DYNAMICARRAY;
array_size = 0;
size_so_far += 4;
}
else {
if (get_literal_value(nextt, &array_size, "Array size must be constant value"))
return -1;

sym.flags[vname] |= SFLG_ARRAY;
sym.arrsize[vname] = array_size;
size_so_far += array_size * sym.ssize[vname];
if (array_size < 1) {
cc_error("array size cannot be less than 1");
return -1;
}

if (sym.get_type(targ.getnext()) != SYM_CLOSEBRACKET) {
cc_error("expected ']'");
return -1;
size_so_far += array_size * sym.ssize[vname];

if (sym.get_type(targ.getnext()) != SYM_CLOSEBRACKET) {
cc_error("expected ']'");
return -1;
}
}
sym.flags[vname] |= SFLG_ARRAY;
sym.arrsize[vname] = array_size;
}
else
size_so_far += sym.ssize[vname];
Expand Down

0 comments on commit d65cce0

Please sign in to comment.