APM: RSMC version 1.0 (not 1.0a) from ipisvn

This commit is contained in:
Artur Meski
2017-11-18 20:30:18 +00:00
parent 27c43717fa
commit 69a9825c8b
2071 changed files with 222512 additions and 0 deletions

99
rs.hh Normal file
View File

@@ -0,0 +1,99 @@
/*
Copyright (c) 2012-2014
Artur Meski <meski@ipipan.waw.pl>
Reuse of the code or its part for any purpose
without the author's permission is strictly prohibited.
*/
#ifndef RS_RS_HH
#define RS_RS_HH
#include <iostream>
#include <set>
#include <map>
#include <vector>
#include <string>
#include <cstdlib>
#include "macro.hh"
#include "options.hh"
#include "memtime.hh"
using std::cout;
using std::endl;
class RctSys
{
friend class SymRS;
friend class SymRSstate;
public:
typedef unsigned int Atom;
typedef std::set<Atom> Atoms;
struct Reaction {
Atoms rctt;
Atoms inhib;
Atoms prod;
};
typedef std::vector<Reaction> Reactions;
typedef std::vector<std::string> AtomsByIds;
typedef std::map<std::string, Atom> AtomsByName;
typedef std::set<Atoms> AtomsSets;
private:
Reactions reactions;
AtomsSets initStates;
Atoms actionAtoms;
AtomsByIds atoms_ids;
AtomsByName atoms_names;
Atoms tmpReactants;
Atoms tmpInhibitors;
Atoms tmpProducts;
Atoms tmpState;
Atom getAtomID(std::string atomName);
Options *opts;
public:
void setOptions(Options *opts)
{
this->opts = opts;
}
bool hasAtom(std::string atomName);
void addAtom(std::string atomName);
std::string getAtomName(Atom atomID);
void pushReactant(std::string atomName);
void pushInhibitor(std::string atomName);
void pushProduct(std::string atomName);
void commitReaction(void);
std::string atomToStr(const Atom atom) {
return atoms_ids[atom];
}
std::string atomsToStr(const Atoms &atoms);
void showReactions(void);
void pushStateAtom(std::string atomName);
void commitInitState(void);
void addActionAtom(std::string atomName);
bool isActionAtom(Atom atom);
void resetInitStates(void) {
initStates.clear();
}
unsigned int getAtomsSize(void) {
return atoms_ids.size();
}
unsigned int getReactionsSize(void) {
return reactions.size();
}
unsigned int getActionsSize(void) {
return actionAtoms.size();
}
void showInitialStates(void);
void showActionAtoms(void);
void printSystem(void);
};
#endif