// This file is part of BOINC. // http://boinc.berkeley.edu // Copyright (C) 2019 University of California // // BOINC is free software; you can redistribute it and/or modify it // under the terms of the GNU Lesser General Public License // as published by the Free Software Foundation, // either version 3 of the License, or (at your option) any later version. // // BOINC is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with BOINC. If not, see . // This file defines a Fortran wrapper to the BOINC API. // Define this symbol (here or in Makefile) if you want graphics functions //#define GRAPHICS // Define this symbol (here or in Makefile) if you want zip/unzip functions //#define INCLUDE_ZIP #include "config.h" #include "util.h" #include "boinc_api.h" #ifdef GRAPHICS #include "graphics_api.h" #endif #ifdef INCLUDE_ZIP #include "boinc_zip.h" #endif // helper class that makes a C-string from a character array and length, // automatically deleted on destruction. // Fortran strings are passed as character array plus length // class STRING_FROM_FORTRAN { char* p; public: STRING_FROM_FORTRAN(const char* s, int s_len) { p = new char[s_len + 1]; memcpy(p, s, s_len); p[s_len] = 0; } ~STRING_FROM_FORTRAN() { delete [] p; } void strip_whitespace() { ::strip_whitespace(p); } const char* c_str() { return p; } }; // remove terminating null and pad with blanks a la FORTRAN // static void string_to_fortran(char* p, int len) { for (int i=strlen(p); i