Skip to content
Snippets Groups Projects
Select Git revision
  • 722df66e55a6ce8cc4c3ef4d0c024b76eaec55a0
  • master default
2 results

test_beam_trace.py

Blame
  • Forked from finesse / pykat
    Source project has a limited visibility.
    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();