36 files changed, 332 insertions, 176 deletions
diff --git a/src/controller/actions/sel_save.sqc b/src/controller/actions/sel_save.sqc new file mode 100644 index 0000000..5fa614f --- a/dev/null +++ b/src/controller/actions/sel_save.sqc @@ -0,0 +1,41 @@ +#include "../../util/check_error.h" +#include "../../view/exp004state0.h" +#include "sel_save.h" +#include "sqlca.h" +#include <string.h> +extern struct sqlca sqlca; + +/* + * A simple alias to make the code more readable. + */ +#define S exp004state0 + +void +sel_save (void) +{ + EXEC SQL BEGIN DECLARE SECTION; + char gi[255]; + EXEC SQL END DECLARE SECTION; + + /* + * WHERE gi IS NOT NULL is added to prevent the PRECOMPILE command + * from throwing a warning about modifying an entire table. Since + * gi is defined as NOT NULL this will clear the entire table. + */ + EXEC SQL DELETE FROM vis_selection WHERE gi IS NOT NULL; + check_error (__FILE__, __LINE__); + + for (unsigned int i = 0; i < S.rows; i++) + { + if (S.selection.set[i] == true) + { + strncpy (gi, S.gi_data + i + 3, sizeof (gi)); + EXEC SQL INSERT INTO vis_selection VALUES (:gi); + } + } + + EXEC SQL COMMIT; + check_error (__FILE__, __LINE__); + + return; +} |