Skip to content
Snippets Groups Projects
Select Git revision
  • 02c98caabe66e6f70ecb0e4b9537090e8fb7bbc1
  • master default protected
  • fix_Makefile.mingw#2
  • update_Makefile.mingw
  • fix_Makefile.mingw
  • fix_API_for_C_apps
  • fix_procinfo_mac
  • boinccmd_gpu_mode_always_until_sigterm
  • fgrp_osx_hotfix
  • fix_boinc_master@f8250782
  • eah_wrapper_improvements
  • diagnostics_win-hotfix
  • diagnostics_win-hotfix-old
  • current_fgrp_apps
  • testing_gw_apps
  • gw_app_darwin_15
  • current_brp_apps
  • current_brp_apps_android10
  • current_gfx_apps
  • current_server
  • current_gw_apps
  • previous_fgrp_apps
  • previous_gw_apps
  • testing_brp_apps
  • apps_FGRP3_1.07
  • apps_FGRP3_1.08
26 results

boinc_api_fortran.cpp

Blame
  • boinc_api_fortran.cpp 3.32 KiB
    // This file is part of BOINC.
    // http://boinc.berkeley.edu
    // Copyright (C) 2008 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 <http://www.gnu.org/licenses/>.
    
    // This file defines a Fortran wrapper to the BOINC API.
    
    // Define this symbol (here or in Makefile) if you want graphics functions
    //#define GRAPHICS
    
    #include "config.h"
    #include "util.h"
    #include "boinc_api.h"
    #ifdef GRAPHICS
    #include "graphics_api.h"
    #endif
    #include "boinc_zip.h"
    
    // 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<len; i++) {
            p[i] = ' ';
        }
    }
    
    extern "C" {
    
    void boinc_init_() {
        boinc_init();
    }
    
    void boinc_finish_(int* status) {
        boinc_finish(*status);
    }
    
    #ifdef GRAPHICS
    void boinc_init_graphics_(){
        boinc_init_graphics();