26 void unpack(classdesc::pack_t& b, civita::XVector& a)
31 b>>a.name>>a.dimension>>size;
32 for (
size_t i=0; i<size; ++i)
39 void unpack(classdesc::pack_t& b, civita::TensorVal& a)
41 vector<unsigned> dims;
48 for (
size_t i=0; i<sz; ++i)
52 hc.xvectors.push_back(xv);
56 assert(a.size()==data.size());
57 memcpy(a.begin(),data.data(),data.size()*
sizeof(data[0]));
62 map<int,schema1::UnionLayout>
layout;
66 if (
auto ul=dynamic_cast<schema1::UnionLayout*>(i.get()))
73 xml_pack_t xmlPackBuf(is);
74 i->xml_pack(xmlPackBuf,
"");
75 istringstream os(is.str());
76 xml_unpack_t xmlUnpackBuf(os);
81 template <
class V,
class O>
83 vec.emplace_back(item);
84 if (
layout.contains(item.id))
85 vec.back().addLayout(
layout[item.id]);
91 name(it.name), data(it.data), assetClasses(it.assetClasses)
104 if (fc.
name.length()>0 && fc.
name[0]==
':')
113 for (
size_t r=1; r<
data->size(); ++r)
114 for (
size_t c=1; c<(*data)[r].size(); ++c)
115 if (!(*
data)[r][c].empty() &&
116 ((*assetClasses)[c]==AssetClass::liability || (*assetClasses)[c]==AssetClass::equity))
120 (*data)[r][c]=fc.
str();
144 map<int,pair<int,bool>> portToVar;
148 for (
size_t j=0; j<i.ports.size(); ++j)
149 portToVar[i.ports[j]]=make_pair(i.id,j>0);
161 items.back().height.reset();
167 for (
auto p: i.ports)
169 auto v=portToVar.find(p);
170 if (v!=portToVar.end())
172 if (v->second.second)
173 groups.back().inVariables->push_back(v->second.first);
175 groups.back().outVariables->push_back(v->second.first);
void xml_unpack(classdesc::xml_unpack_t &, const classdesc::string &, classdesc::ref< ecolab::urand > &)
vector< shared_ptr< Layout > > layout
void addItem(V &vec, const O &item)
minsky::Simulation rungeKutta
Optional< std::vector< minsky::GodleyAssetClass::AssetClass > > assetClasses
minsky::Simulation rungeKutta
bool doubleEntryCompliant
vector< Operation > operations
map< int, schema1::UnionLayout > layout
void unpack(classdesc::pack_t &b, civita::XVector &a)
represents a numerical coefficient times a variable (a "flow")
vector< Variable > variables
vector< Item > notes
descriptive notes
vector< Switch > switches
Optional< std::vector< std::vector< std::string > > > data
Schema1Layout(const vector< shared_ptr< schema1::Layout >> &x)