CYCLUS
Loading...
Searching...
No Matches
commodity_recipe_context.h
Go to the documentation of this file.
1#ifndef CYCLUS_SRC_TOOLKIT_COMMODITY_RECIPE_CONTEXT_H_
2#define CYCLUS_SRC_TOOLKIT_COMMODITY_RECIPE_CONTEXT_H_
3
4#include <map>
5#include <string>
6#include <vector>
7
8#include "cyc_std.h"
9#include "resource.h"
10#include "state_wrangler.h"
11
12namespace cyclus {
13namespace toolkit {
14
15/// @class CommodityRecipeContext
16///
17/// @brief a CommodityRecipeContext contains relationships between commodities,
18/// recipes and resources
20 public:
21 /// @brief add an input commodity and its relations
22 void AddInCommod(std::string in_commod,
23 std::string in_recipe,
24 std::string out_commod,
25 std::string out_recipe);
26
27 /// @brief add a resource and its commodity affiliation
28 void AddRsrc(std::string commod, Resource::Ptr rsrc);
29
30 /// @brief update a resource and its commodity affiliation
31 void UpdateRsrc(std::string commod, Resource::Ptr rsrc);
32
33 /// @brief removes a resource from the context
34 void RemoveRsrc(Resource::Ptr rsrc);
35
36 /// @brief update an input recipe and its commodity affiliation
37 void UpdateInRec(std::string in_commod, std::string recipe);
38
39 /// @return input commodities
40 inline const std::set<std::string>& in_commods() const { return in_commods_; }
41
42 /// @return output commodities
43 inline const std::set<std::string>& out_commods() const {
44 return out_commods_;
45 }
46
47 /// @return output commodity of an input commodity
48 inline std::string out_commod(std::string in_commod) {
49 return out_commod_map_[in_commod];
50 }
51
52 /// @return input recipe of an input commodity
53 inline std::string in_recipe(std::string in_commod) {
54 return in_recipes_[in_commod];
55 }
56
57 /// @return output recipe of an input recipe
58 inline std::string out_recipe(std::string in_commod) {
59 return out_recipes_[in_commod];
60 }
61
62 /// @return commodity of a material
63 /// @warning returns a blank string if material isn't found
64 inline std::string commod(Resource::Ptr rsrc) {
65 return rsrc_commod_map_[rsrc->obj_id()];
66 }
67
68 inline bool operator==(const CommodityRecipeContext& other) const {
69 return (in_commods_.size() == other.in_commods_.size() &&
70 out_commods_.size() == other.out_commods_.size() &&
71 map_compare(out_commod_map_, other.out_commod_map_) &&
72 map_compare(in_recipes_, other.in_recipes_) &&
73 map_compare(out_recipes_, other.out_recipes_) &&
74 map_compare(rsrc_commod_map_, other.rsrc_commod_map_));
75 }
76
77 inline bool operator!=(const CommodityRecipeContext& other) const {
78 return !operator==(other);
79 }
80
82 virtual void InfileToDb(InfileTree* qe, DbInit di);
83 virtual void InitFrom(QueryableBackend* b);
84 virtual void Snapshot(DbInit di);
85 virtual std::string schema();
86
87 private:
88 std::set<std::string> in_commods_;
89 std::set<std::string> out_commods_;
90 std::map<std::string, std::string> out_commod_map_;
91 std::map<std::string, std::string> in_recipes_;
92 std::map<std::string, std::string> out_recipes_;
93 std::map<int, std::string> rsrc_commod_map_;
94};
95
96} // namespace toolkit
97} // namespace cyclus
98
99#endif // CYCLUS_SRC_TOOLKIT_COMMODITY_RECIPE_CONTEXT_H_
DbInit provides an interface for agents to record data to the output db that automatically injects th...
Definition db_init.h:14
A class for extracting information from a given XML parser.
Definition infile_tree.h:22
Interface implemented by backends that support rudimentary querying.
boost::shared_ptr< Resource > Ptr
Definition resource.h:27
An abjstract interface that must be implemented by all simulation agents and all agent member variabl...
a CommodityRecipeContext contains relationships between commodities, recipes and resources
std::string in_recipe(std::string in_commod)
virtual void Snapshot(DbInit di)
Snapshots agent-internal state to the output db via di.
virtual void InfileToDb(InfileTree *qe, DbInit di)
Translates info for the object from input file information to the database by reading parameters from...
virtual CommodityRecipeContext * Clone()
Return a newly created/allocated object that is an exact copy of this.
std::string out_commod(std::string in_commod)
void AddInCommod(std::string in_commod, std::string in_recipe, std::string out_commod, std::string out_recipe)
add an input commodity and its relations
void RemoveRsrc(Resource::Ptr rsrc)
removes a resource from the context
virtual std::string schema()
Returns an object's xml rng schema for initializing from input files.
void AddRsrc(std::string commod, Resource::Ptr rsrc)
add a resource and its commodity affiliation
void UpdateInRec(std::string in_commod, std::string recipe)
update an input recipe and its commodity affiliation
const std::set< std::string > & in_commods() const
void UpdateRsrc(std::string commod, Resource::Ptr rsrc)
update a resource and its commodity affiliation
bool operator!=(const CommodityRecipeContext &other) const
const std::set< std::string > & out_commods() const
virtual void InitFrom(QueryableBackend *b)
Intializes an agent's internal state from an output database.
bool operator==(const CommodityRecipeContext &other) const
std::string out_recipe(std::string in_commod)
taken directly from OsiSolverInterface.cpp on 2/17/14 from https://projects.coin-or....
Definition agent.cc:14
bool map_compare(Map const &lhs, Map const &rhs)
Definition cyc_std.h:17