/* * Sample main function for (de)serializing C parameters for a FORCESPRO solver. * * (C) embotech AG, Zurich, Switzerland, 2013-2023. All rights reserved. * * This file is part of the FORCESPRO client, and carries the same license. */ #include #include "FORCESNLPsolver/include/FORCESNLPsolver.h" /* Helper function to print parameter struct */ void printParams(FORCESNLPsolver_params *params) { for (int i = 0; i < 33; i++) { printf("params.x0[%i] = %e\n", i, params->x0[i]); } for (int i = 0; i < 2; i++) { printf("params.xinit[%i] = %e\n", i, params->xinit[i]); } } int main() { FORCESNLPsolver_params params; /* Fill params struct with data */ for (int i = 0; i < 33; i++) { params.x0[i] = 0.0; } params.xinit[0] = -4.; params.xinit[1] = 2.; printf("Original parameter struct:\n"); printParams(¶ms); /* Serialize params struct and save it in file */ const char filename[] = "dump.msgpack"; int returnvalueSerialize = FORCESNLPsolver_serialize(¶ms, filename); /* Deserialize params struct from file */ int returnvalueDeserialize = -1; FORCESNLPsolver_params dumped_params; if (returnvalueSerialize == 0) { returnvalueDeserialize = FORCESNLPsolver_deserialize(&dumped_params, filename); } if (returnvalueDeserialize == 0) { printf("Parameter struct after serialization and deserialization:\n"); printParams(&dumped_params); } return 0; }