From 76d49fc094b6d65b1510e77f32fe4f61f43fb745 Mon Sep 17 00:00:00 2001
From: Mayo Roettger <mayo.roettger@uni-duesseldorf.de>
Date: Tue, 10 Mar 2020 10:15:07 +0100
Subject: [PATCH] Corrections for CRAN issues

---
 DESCRIPTION     |   6 ++--
 R/readSBMLmod.R |   9 +++---
 R/sybilSBML.R   |  38 ++++++++++++----------
 configure       |  20 ++++++------
 configure.ac    |   4 +--
 inst/NEWS.Rd    |   7 ++++-
 src/Makevars    |   3 --
 src/config.h    |  82 ------------------------------------------------
 src/init.c      |   2 +-
 src/sybilSBML.c |  34 ++++++++++----------
 src/sybilSBML.h |   2 +-
 src/symbols.rds | Bin 2023 -> 2899 bytes
 12 files changed, 66 insertions(+), 141 deletions(-)
 delete mode 100644 src/Makevars
 delete mode 100644 src/config.h

diff --git a/DESCRIPTION b/DESCRIPTION
index 6798ad6..d0982c3 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,8 +1,8 @@
 Package: sybilSBML
 Type: Package
 Title: SBML Integration in Package 'Sybil'
-Version: 3.0.7
-Date: 2019-08-02
+Version: 3.0.8
+Date: 2020-03-10
 Authors@R: c(person("Mayo", "Roettger", role = "cre", email = "mayo.roettger@hhu.de"),
              person("Gabriel", "Gelius-Dietrich", role = c("aut", "ctb")),
              person(c("C.", "Jonathan"), "Fritzemeier", role = "ctb", email = "clausjonathan.fritzemeier@uni-duesseldorf.de"),
@@ -17,7 +17,7 @@ License: GPL-3 | file LICENSE
 LazyLoad: yes
 Collate: generics.R sbmlPtrClass.R sbmlErrorClass.R sybilSBML.R
         uglyHack.R readSBMLmod.R zzz.R
-Packaged: 2019-08-02 15:05:20 UTC; mayo
+Packaged: 2020-03-10 09:00:00 UTC; mayo
 Author: Mayo Roettger [cre],
   Gabriel Gelius-Dietrich [aut, ctb],
   C. Jonathan Fritzemeier [ctb],
diff --git a/R/readSBMLmod.R b/R/readSBMLmod.R
index 5575ee0..66f13ef 100644
--- a/R/readSBMLmod.R
+++ b/R/readSBMLmod.R
@@ -973,16 +973,15 @@ else {
     
     # if there were fbcgprRules or notes with gpr rules,
     # create reaction x nGene matrix, with TRUE for respective genes for each reaction
-    if (isTRUE(hasNotes) ||  !is.null(fbcgprRules) ) {
+    if (isTRUE(hasNotes) || !is.null(fbcgprRules) ) {
         message("GPR mapping ... ", appendLF = FALSE)
 
         # Vector with all gene names != "":
-        #allGenes <- unique(allGenes)
-        #allGenesTMP <- unique(allGenes)
         allGenesTMP <- unique(unlist(genes))
         temp <- nchar(allGenesTMP)
         allGenes <- allGenesTMP[which(temp != 0)]
-
+        
+        # reaction x nGene matrix initialization with FALSE:
         rxnGeneMat <- Matrix::Matrix(FALSE,
                                      nrow = numreact,
                                      ncol = length(allGenes),
@@ -990,7 +989,7 @@ else {
 
         for (i in 1 : numreact) {
             # if genes list element i has only 1 element and that element is not equal ""
-            if ( (length(genes[[i]] == 1)) && (genes[[i]] != "") ) {
+            if ( (length(genes[[i]] == 1)) && all(genes[[i]] != "") ) {
                 geneInd <- match(genes[[i]], allGenes)# find gene in allGenes
                 # Mark which genes are used in reaction with TRUE
                 rxnGeneMat[i, geneInd] <- TRUE
diff --git a/R/sybilSBML.R b/R/sybilSBML.R
index 12c0a0a..00afb09 100644
--- a/R/sybilSBML.R
+++ b/R/sybilSBML.R
@@ -362,15 +362,15 @@ writeSBML<- function(morg=NULL,level=2,version=4,fbcLevel=0,filename="export.xml
     # test if Matrix has no double values
     if( !all( S(morg) == floor(S(morg))) ) warning("Level 1 does not support double values")
     fbcLevel=0
-      if(version != 2)
-      {
-        warning("just Level 1 Version 2 will be supported")
-        version=2
-      }
-  }else if (level==2)
+    if(version != 2)
+    {
+      warning("just Level 1 Version 2 will be supported")
+      version=2
+    }
+  } else if (level==2)
   { 
     fbcLevel=0
-    if(version >5)
+    if(version > 5)
     {
       warning("Level 2 Version 5 will be supported")
       version=5 
@@ -380,16 +380,19 @@ writeSBML<- function(morg=NULL,level=2,version=4,fbcLevel=0,filename="export.xml
       warning("Level 2 Version 1 will be supported")
       version=1 
     }  
-  }
-  else if (level==3)
-  { if(fbcLevel >2)fbcLevel=2
-  if(version != 1)
-  {
-    print("Level 3 Version 1 will be supported")
-    version=1 
-  }
-  
-  }else {
+  } else if (level==3)
+  { 
+    if(fbcLevel > 2)
+    {
+      print("FBC level 2 will be supported")
+      fbcLevel=2
+    }
+    if(version != 1)
+    {
+      print("Level 3 Version 1 will be supported")
+      version=1 
+    }
+  } else {
     stop(" Support just for Level 1,2 and 3 \n")
   }
   
@@ -630,6 +633,7 @@ writeSBML<- function(morg=NULL,level=2,version=4,fbcLevel=0,filename="export.xml
                   as.integer(obj_coef(morg)),
                   as.character(newsubS),
                   subSysGroups,
+                  as.character(names(subSysGroups)),
                   as.character(deformatGene(gpr(morg))),
                   as.numeric(shrinkMatrix(morg,j=1:react_num(morg))),
                   mod_notes,
diff --git a/configure b/configure
index 331c6a4..c1eee2a 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for sybilSBML 3.0.7.
+# Generated by GNU Autoconf 2.69 for sybilSBML 3.0.8.
 #
 # Report bugs to <mayo.roettger@hhu.de>.
 #
@@ -580,8 +580,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='sybilSBML'
 PACKAGE_TARNAME='sybilsbml'
-PACKAGE_VERSION='3.0.7'
-PACKAGE_STRING='sybilSBML 3.0.7'
+PACKAGE_VERSION='3.0.8'
+PACKAGE_STRING='sybilSBML 3.0.8'
 PACKAGE_BUGREPORT='mayo.roettger@hhu.de'
 PACKAGE_URL=''
 
@@ -1241,7 +1241,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures sybilSBML 3.0.7 to adapt to many kinds of systems.
+\`configure' configures sybilSBML 3.0.8 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1303,7 +1303,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of sybilSBML 3.0.7:";;
+     short | recursive ) echo "Configuration of sybilSBML 3.0.8:";;
    esac
   cat <<\_ACEOF
 
@@ -1390,7 +1390,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-sybilSBML configure 3.0.7
+sybilSBML configure 3.0.8
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1759,7 +1759,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by sybilSBML $as_me 3.0.7, which was
+It was created by sybilSBML $as_me 3.0.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2118,7 +2118,7 @@ if test -z "${R_HOME}"; then
 fi
 
 CC=`"${R_HOME}/bin/R" CMD config CC`
-CPP=`"${R_HOME}/bin/R" CMD config CPP`
+#CPP=`"${R_HOME}/bin/R" CMD config CPP`
 CFLAGS=`"${R_HOME}/bin/R" CMD config CFLAGS`
 CPPFLAGS=`"${R_HOME}/bin/R" CMD config CPPFLAGS`
 ac_ext=c
@@ -4249,7 +4249,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by sybilSBML $as_me 3.0.7, which was
+This file was extended by sybilSBML $as_me 3.0.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -4311,7 +4311,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-sybilSBML config.status 3.0.7
+sybilSBML config.status 3.0.8
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index b063948..da79320 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT([sybilSBML], [3.0.7], [mayo.roettger@hhu.de])
+AC_INIT([sybilSBML], [3.0.8], [mayo.roettger@hhu.de])
 
 dnl # --------------------------------------------------------------------
 dnl # global (environment) variables
@@ -21,7 +21,7 @@ fi
 
 dnl # GNU R default settings
 CC=`"${R_HOME}/bin/R" CMD config CC`
-CPP=`"${R_HOME}/bin/R" CMD config CPP`
+#CPP=`"${R_HOME}/bin/R" CMD config CPP`
 CFLAGS=`"${R_HOME}/bin/R" CMD config CFLAGS`
 CPPFLAGS=`"${R_HOME}/bin/R" CMD config CPPFLAGS`
 AC_PROG_CC
diff --git a/inst/NEWS.Rd b/inst/NEWS.Rd
index 06c5ee4..bf802cd 100644
--- a/inst/NEWS.Rd
+++ b/inst/NEWS.Rd
@@ -6,15 +6,19 @@
 
 \newcommand{\CRANpkg}{\href{https://cran.r-project.org/package=#1}{\pkg{#1}}}
 % ---------------------------------------------------------------------------- %
-\section{Changes in version 3.0.4 - 3.0.7 2019-08-02}{
+\section{Changes in version 3.0.4 - 3.0.8 2020-03-10}{
   \itemize{
     \item Maintainer change.
     \item Changes to be able to build package without libSBML FBC and Groups
     plugins. In that case, FBC-constraints and groups in the SBML model will
     be ignored. Added functions \code{isAvailableFBCPlugin} and
     \code{isAvailableGroupsPlugin}.
+    \item Corrections for CRAN, where && or || encountered arguments of length > 1.
+    \item Fix for CRAN issue: 'config' variable 'CPP' is deprecated.
+    \item Fix for CRAN issue: too many states (abstraction error?).
   }
 }
+
 % ---------------------------------------------------------------------------- %
 \section{Changes in version 3.0.3 2018-01-02}{
   \itemize{
@@ -23,6 +27,7 @@
     for some newer models.
   }
 }
+
 % ---------------------------------------------------------------------------- %
 \section{Changes in version 3.0.2 2017-10-24}{
   \itemize{
diff --git a/src/Makevars b/src/Makevars
deleted file mode 100644
index 5838658..0000000
--- a/src/Makevars
+++ /dev/null
@@ -1,3 +0,0 @@
-PKG_CFLAGS=
-PKG_CPPFLAGS=-I/usr/include -I/usr/local/include -I/usr/include/sbml -I/usr/local/include/sbml
-PKG_LIBS= -L/usr/local/lib -L/usr/lib -L/usr/lib64 -lsbml
diff --git a/src/config.h b/src/config.h
deleted file mode 100644
index 6042341..0000000
--- a/src/config.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* src/config.h.  Generated from config.h.in by configure.  */
-/* src/config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to 1 if you have the `FbcReactionPlugin_getLowerFluxBound' function.
-   */
-#define HAVE_FBCREACTIONPLUGIN_GETLOWERFLUXBOUND 1
-
-/* define if FBC plugin is available */
-#define HAVE_FBC_PLUGIN 1
-
-/* Define to 1 if you have the `GeneProductAssociation_setAssociation'
-   function. */
-#define HAVE_GENEPRODUCTASSOCIATION_SETASSOCIATION 1
-
-/* define if Groups plugin is available */
-#define HAVE_GROUPS_PLUGIN 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the `sbml' library (-lsbml). */
-#define HAVE_LIBSBML 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `SBase_getPlugin' function. */
-#define HAVE_SBASE_GETPLUGIN 1
-
-/* Define to 1 if you have the `SBMLExtensionRegistry_getRegisteredPackages'
-   function. */
-#define HAVE_SBMLEXTENSIONREGISTRY_GETREGISTEREDPACKAGES 1
-
-/* Define to 1 if you have the <sbml/packages/fbc/common/FbcExtensionTypes.h>
-   header file. */
-#define HAVE_SBML_PACKAGES_FBC_COMMON_FBCEXTENSIONTYPES_H 1
-
-/* Define to 1 if you have the
-   <sbml/packages/groups/common/GroupsExtensionTypes.h> header file. */
-#define HAVE_SBML_PACKAGES_GROUPS_COMMON_GROUPSEXTENSIONTYPES_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "mayo.roettger@hhu.de"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "sybilSBML"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "sybilSBML 3.0.6"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "sybilsbml"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "3.0.6"
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
diff --git a/src/init.c b/src/init.c
index 89e831f..d5905ed 100644
--- a/src/init.c
+++ b/src/init.c
@@ -55,7 +55,7 @@ static const R_CallMethodDef callMethods[] = {
     {"getSBMLCompartList",         (DL_FUNC) &getSBMLCompartList,         1},
     {"getSBMLSpeciesList",         (DL_FUNC) &getSBMLSpeciesList,         1},
     {"getSBMLReactionsList",       (DL_FUNC) &getSBMLReactionsList,       1},
-    {"exportSBML",                 (DL_FUNC) &exportSBML,                 34},
+    {"exportSBML",                 (DL_FUNC) &exportSBML,                 35},
     {"getSBMLFbcversion",          (DL_FUNC) &getSBMLFbcversion,          1},
     {"isAvailableFbcPlugin",       (DL_FUNC) &isAvailableFbcPlugin,       0},
     {"isAvailableGroupsPlugin",    (DL_FUNC) &isAvailableGroupsPlugin,    0},
diff --git a/src/sybilSBML.c b/src/sybilSBML.c
index 32e1b94..a76ff8c 100644
--- a/src/sybilSBML.c
+++ b/src/sybilSBML.c
@@ -1682,12 +1682,12 @@ void ParseModtoAnno  (SBase_t* comp , char* Mannocopy)
 
 
 
-SEXP exportSBML (SEXP version, SEXP level, SEXP FbcLevel, SEXP filename, SEXP sybil_max, SEXP mod_desc, SEXP mod_name, SEXP mod_compart, SEXP met_id, SEXP met_name, SEXP met_comp, SEXP met_form, SEXP met_charge, SEXP react_id, SEXP react_name, SEXP react_rev, SEXP lowbnd, SEXP uppbnd, SEXP obj_coef, SEXP subSys, SEXP subSysGroups, SEXP gpr, SEXP SMatrix, SEXP mod_notes, SEXP mod_anno, SEXP com_notes , SEXP com_anno, SEXP met_notes, SEXP met_anno, SEXP met_bnd , SEXP react_notes, SEXP react_anno, SEXP ex_react, SEXP allgenes)
+SEXP exportSBML (SEXP version, SEXP level, SEXP FbcLevel, SEXP filename, SEXP sybil_max, SEXP mod_desc, SEXP mod_name, SEXP mod_compart, SEXP met_id, SEXP met_name, SEXP met_comp, SEXP met_form, SEXP met_charge, SEXP react_id, SEXP react_name, SEXP react_rev, SEXP lowbnd, SEXP uppbnd, SEXP obj_coef, SEXP subSys, SEXP subSysGroups, SEXP subSysGroupsNames, SEXP gpr, SEXP SMatrix, SEXP mod_notes, SEXP mod_anno, SEXP com_notes , SEXP com_anno, SEXP met_notes, SEXP met_anno, SEXP met_bnd , SEXP react_notes, SEXP react_anno, SEXP ex_react, SEXP allgenes)
 {
 #if defined(HAVE_FBC_PLUGIN) && defined(HAVE_GROUPS_PLUGIN)
-  //Varaibles from R
+  //Variables from R
   const char* fname = CHAR(STRING_ELT(filename, 0));
-  const char* model_desc = CHAR(STRING_ELT(mod_desc, 0));
+  //unused: const char* model_desc = CHAR(STRING_ELT(mod_desc, 0));
   const char* model_name = CHAR(STRING_ELT(mod_name, 0));
   
   int SBMLlevel = INTEGER(level)[0];
@@ -1698,7 +1698,7 @@ SEXP exportSBML (SEXP version, SEXP level, SEXP FbcLevel, SEXP filename, SEXP sy
   double sybilmin = sybilmax*(-1);
   
   // variable FBC
-  XMLNamespaces_t * fbc;
+  //currently unused: XMLNamespaces_t * fbc;
   SBMLNamespaces_t * sbmlns;
   FluxBound_t * fluxBound;
   Objective_t * objective;
@@ -1712,13 +1712,13 @@ SEXP exportSBML (SEXP version, SEXP level, SEXP FbcLevel, SEXP filename, SEXP sy
   
   
   // Variable inital
-  
-  SBMLDocument_t* sbmlDoc;
+  SBMLDocument_t* sbmlDoc = NULL;
+
   Model_t* model;
   XMLNamespaces_t* xmlns;
   
-  UnitDefinition_t* unitdef;
-  Unit_t* unit;
+  //currently unused: UnitDefinition_t* unitdef;
+  //currently unused: Unit_t* unit;
   
   Species_t *sp;
   Reaction_t* reaction;
@@ -1727,7 +1727,7 @@ SEXP exportSBML (SEXP version, SEXP level, SEXP FbcLevel, SEXP filename, SEXP sy
   KineticLaw_t* kl;
   Parameter_t* para;
   
- // ASTNode_t* flux;
+  // ASTNode_t* flux;
   ASTNode_t* astMath;  
   //ASTNode_t* ast;
   //char* mathXMLString;
@@ -2300,6 +2300,7 @@ SEXP exportSBML (SEXP version, SEXP level, SEXP FbcLevel, SEXP filename, SEXP sy
       
       
   }// ENDE REACTION
+  
   if(SBMLfbcversion == 1)
   {  
     
@@ -2358,30 +2359,31 @@ SEXP exportSBML (SEXP version, SEXP level, SEXP FbcLevel, SEXP filename, SEXP sy
       
     }  
   }
-  
+
   /* add subsystem as groups if fbc is >= 2 */
   if(SBMLfbcversion >= 2){
   	if(!Rf_isNull(subSysGroups)){
-		GroupsModelPlugin_t* groupsPlug = NULL;
+        GroupsModelPlugin_t* groupsPlug = NULL;
   		groupsPlug = (GroupsModelPlugin_t*) SBase_getPlugin((SBase_t *)(model), "groups");
-  		
+ 		
   		for(int i=0; i < Rf_length(subSysGroups); i++){
   			Group_t* newGroup = GroupsModelPlugin_createGroup(groupsPlug);
 			
 			Group_setKindAsString(newGroup, "partonomy");
-			Group_setName(newGroup, CHAR(STRING_ELT(Rf_getAttrib(subSysGroups, R_NamesSymbol), i)));
+            Group_setName(newGroup, CHAR(STRING_ELT(subSysGroupsNames, i)));
 			SBase_setSBOTerm((SBase_t *) newGroup, 0000633);
-  			
+
   			for(int j=0; j < Rf_length(VECTOR_ELT(subSysGroups, i)); j++){
 				Member_t* newMember = Member_create(SBMLlevel, SBMLversion, SBMLgroupsversion);
 				Member_setIdRef(newMember, CHAR(STRING_ELT(VECTOR_ELT(subSysGroups, i), j)));
 				Group_addMember(newGroup, newMember);
   			}
+
   			//GroupsModelPlugin_addGroup(groupsPlug, newGroup);
   		}
   	}
   }
-  
+
   // write SBML file
   int result = writeSBML(sbmlDoc, fname);
   SEXP out = R_NilValue;
@@ -2390,7 +2392,7 @@ SEXP exportSBML (SEXP version, SEXP level, SEXP FbcLevel, SEXP filename, SEXP sy
 #else
   SEXP out = Rf_ScalarLogical(0);/* no success */
 #endif
-  
+  //UNPROTECT(1);
   return out;
 }
 
diff --git a/src/sybilSBML.h b/src/sybilSBML.h
index 3f7526a..86ce41d 100644
--- a/src/sybilSBML.h
+++ b/src/sybilSBML.h
@@ -112,7 +112,7 @@ SEXP getSBMLGroupsList(SEXP sbmlmod);
 SEXP getSBMLReactionsList(SEXP sbmlmod);
 
 /* export Modelorg to SBML*/
-SEXP exportSBML (SEXP version, SEXP level, SEXP FbcLevel, SEXP filename, SEXP sybil_max, SEXP mod_desc, SEXP mod_name, SEXP mod_compart, SEXP met_id, SEXP met_name, SEXP met_comp, SEXP met_form, SEXP met_charge, SEXP react_id, SEXP react_name, SEXP react_rev, SEXP lowbnd, SEXP uppbnd, SEXP obj_coef, SEXP subSys, SEXP subSysGroups, SEXP gpr, SEXP SMatrix, SEXP mod_notes, SEXP mod_anno, SEXP com_notes , SEXP com_anno, SEXP met_notes, SEXP met_anno, SEXP met_bnd , SEXP react_notes, SEXP react_anno, SEXP ex_react, SEXP allgenes);
+SEXP exportSBML (SEXP version, SEXP level, SEXP FbcLevel, SEXP filename, SEXP sybil_max, SEXP mod_desc, SEXP mod_name, SEXP mod_compart, SEXP met_id, SEXP met_name, SEXP met_comp, SEXP met_form, SEXP met_charge, SEXP react_id, SEXP react_name, SEXP react_rev, SEXP lowbnd, SEXP uppbnd, SEXP obj_coef, SEXP subSys, SEXP subSysGroups, SEXP subSysGroupsNames, SEXP gpr, SEXP SMatrix, SEXP mod_notes, SEXP mod_anno, SEXP com_notes , SEXP com_anno, SEXP met_notes, SEXP met_anno, SEXP met_bnd , SEXP react_notes, SEXP react_anno, SEXP ex_react, SEXP allgenes);
 
 /* check, if FBC-Plugin is available */
 SEXP isAvailableFbcPlugin();
diff --git a/src/symbols.rds b/src/symbols.rds
index 86d3f8e1d4117ef59178496ee79fda1f4224d930..6c50fca8d9500273b256cbe890ebb2d111bb0c44 100644
GIT binary patch
literal 2899
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

literal 2023
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
HWMBXQvfKVf

-- 
GitLab