X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Farchive.cpp;h=d249f2971a427c9d6399220099ad5113ebe3efe1;hp=2b9ecdb72174803ce518aeada53b2b3a8154bf6f;hb=db5765dc91202851739e196ba11bfccb0b3fe7bc;hpb=956eeb82c513a723e864edefa857133282cf692b diff --git a/ginac/archive.cpp b/ginac/archive.cpp index 2b9ecdb7..d249f297 100644 --- a/ginac/archive.cpp +++ b/ginac/archive.cpp @@ -55,7 +55,7 @@ void archive::archive_ex(const ex &e, const char *name) archive_node_id archive::add_node(const archive_node &n) { // Search for node in nodes vector - vector::const_iterator i = nodes.begin(), iend = nodes.end(); + std::vector::const_iterator i = nodes.begin(), iend = nodes.end(); archive_node_id id = 0; while (i != iend) { if (i->has_same_ex_as(n)) @@ -84,9 +84,9 @@ archive_node &archive::get_node(archive_node_id id) ex archive::unarchive_ex(const lst &sym_lst, const char *name) const { // Find root node - string name_string = name; + std::string name_string = name; archive_atom id = atomize(name_string); - vector::const_iterator i = exprs.begin(), iend = exprs.end(); + std::vector::const_iterator i = exprs.begin(), iend = exprs.end(); while (i != iend) { if (i->name == id) goto found; @@ -112,7 +112,7 @@ ex archive::unarchive_ex(const lst &sym_lst, unsigned int index) const /** Retrieve expression and its name from archive by index. * @param sym_lst list of pre-defined symbols */ -ex archive::unarchive_ex(const lst &sym_lst, string &name, unsigned int index) const +ex archive::unarchive_ex(const lst &sym_lst, std::string &name, unsigned int index) const { if (index >= exprs.size()) throw (std::range_error("index of archived expression out of range")); @@ -144,8 +144,8 @@ unsigned int archive::num_expressions(void) const * - unsigned root node ID * - unsigned number of nodes * - unsigned number of properties - * - unsigned type (PTYPE_*) - * - unsigned name atom + * - unsigned containing type (PTYPE_*) in its lower 3 bits and + * name atom in the upper bits * - unsigned property value * * Unsigned quantities are stored in a compressed format: @@ -172,7 +172,7 @@ unsigned int archive::num_expressions(void) const */ /** Write unsigned integer quantity to stream. */ -static void write_unsigned(ostream &os, unsigned int val) +static void write_unsigned(std::ostream &os, unsigned int val) { while (val > 0x80) { os.put((val & 0x7f) | 0x80); @@ -182,7 +182,7 @@ static void write_unsigned(ostream &os, unsigned int val) } /** Read unsigned integer quantity from stream. */ -static unsigned int read_unsigned(istream &is) +static unsigned int read_unsigned(std::istream &is) { unsigned char b; unsigned int ret = 0; @@ -196,21 +196,20 @@ static unsigned int read_unsigned(istream &is) } /** Write archive_node to binary data stream. */ -ostream &operator<<(ostream &os, const archive_node &n) +std::ostream &operator<<(std::ostream &os, const archive_node &n) { // Write properties unsigned int num_props = n.props.size(); write_unsigned(os, num_props); for (unsigned int i=0; i>(istream &is, archive_node &n) +std::istream &operator>>(std::istream &is, archive_node &n) { // Read properties unsigned int num_props = read_unsigned(is); n.props.resize(num_props); for (unsigned int i=0; i> 3; n.props[i].value = read_unsigned(is); } return is; } /** Read archive from binary data stream. */ -istream &operator>>(istream &is, archive &ar) +std::istream &operator>>(std::istream &is, archive &ar) { // Read header char c1, c2, c3, c4; @@ -293,10 +293,10 @@ istream &operator>>(istream &is, archive &ar) /** Atomize a string (i.e. convert it into an ID number that uniquely * represents the string). */ -archive_atom archive::atomize(const string &s) const +archive_atom archive::atomize(const std::string &s) const { // Search for string in atoms vector - vector::const_iterator i = atoms.begin(), iend = atoms.end(); + std::vector::const_iterator i = atoms.begin(), iend = atoms.end(); archive_atom id = 0; while (i != iend) { if (*i == s) @@ -310,7 +310,7 @@ archive_atom archive::atomize(const string &s) const } /** Unatomize a string (i.e. convert the ID number back to the string). */ -const string &archive::unatomize(archive_atom id) const +const std::string &archive::unatomize(archive_atom id) const { if (id >= atoms.size()) throw (std::range_error("archive::unatomizee(): atom ID out of range")); @@ -359,25 +359,25 @@ bool archive_node::has_same_ex_as(const archive_node &other) const /** Add property of type "bool" to node. */ -void archive_node::add_bool(const string &name, bool value) +void archive_node::add_bool(const std::string &name, bool value) { props.push_back(property(a.atomize(name), PTYPE_BOOL, value)); } /** Add property of type "unsigned int" to node. */ -void archive_node::add_unsigned(const string &name, unsigned int value) +void archive_node::add_unsigned(const std::string &name, unsigned int value) { props.push_back(property(a.atomize(name), PTYPE_UNSIGNED, value)); } /** Add property of type "string" to node. */ -void archive_node::add_string(const string &name, const string &value) +void archive_node::add_string(const std::string &name, const std::string &value) { props.push_back(property(a.atomize(name), PTYPE_STRING, a.atomize(value))); } /** Add property of type "ex" to node. */ -void archive_node::add_ex(const string &name, const ex &value) +void archive_node::add_ex(const std::string &name, const ex &value) { // Recursively create an archive_node and add its ID to the properties of this node archive_node_id id = a.add_node(archive_node(a, value)); @@ -387,10 +387,10 @@ void archive_node::add_ex(const string &name, const ex &value) /** Retrieve property of type "bool" from node. * @return "true" if property was found, "false" otherwise */ -bool archive_node::find_bool(const string &name, bool &ret) const +bool archive_node::find_bool(const std::string &name, bool &ret) const { archive_atom name_atom = a.atomize(name); - vector::const_iterator i = props.begin(), iend = props.end(); + std::vector::const_iterator i = props.begin(), iend = props.end(); while (i != iend) { if (i->type == PTYPE_BOOL && i->name == name_atom) { ret = i->value; @@ -403,10 +403,10 @@ bool archive_node::find_bool(const string &name, bool &ret) const /** Retrieve property of type "unsigned" from node. * @return "true" if property was found, "false" otherwise */ -bool archive_node::find_unsigned(const string &name, unsigned int &ret) const +bool archive_node::find_unsigned(const std::string &name, unsigned int &ret) const { archive_atom name_atom = a.atomize(name); - vector::const_iterator i = props.begin(), iend = props.end(); + std::vector::const_iterator i = props.begin(), iend = props.end(); while (i != iend) { if (i->type == PTYPE_UNSIGNED && i->name == name_atom) { ret = i->value; @@ -419,10 +419,10 @@ bool archive_node::find_unsigned(const string &name, unsigned int &ret) const /** Retrieve property of type "string" from node. * @return "true" if property was found, "false" otherwise */ -bool archive_node::find_string(const string &name, string &ret) const +bool archive_node::find_string(const std::string &name, std::string &ret) const { archive_atom name_atom = a.atomize(name); - vector::const_iterator i = props.begin(), iend = props.end(); + std::vector::const_iterator i = props.begin(), iend = props.end(); while (i != iend) { if (i->type == PTYPE_STRING && i->name == name_atom) { ret = a.unatomize(i->value); @@ -435,10 +435,10 @@ bool archive_node::find_string(const string &name, string &ret) const /** Retrieve property of type "ex" from node. * @return "true" if property was found, "false" otherwise */ -bool archive_node::find_ex(const string &name, ex &ret, const lst &sym_lst, unsigned int index) const +bool archive_node::find_ex(const std::string &name, ex &ret, const lst &sym_lst, unsigned int index) const { archive_atom name_atom = a.atomize(name); - vector::const_iterator i = props.begin(), iend = props.end(); + std::vector::const_iterator i = props.begin(), iend = props.end(); unsigned int found_index = 0; while (i != iend) { if (i->type == PTYPE_NODE && i->name == name_atom) { @@ -464,7 +464,7 @@ ex archive_node::unarchive(const lst &sym_lst) const return e; // Find instantiation function for class specified in node - string class_name; + std::string class_name; if (!find_string("class", class_name)) throw (std::runtime_error("archive node contains no class name")); unarch_func f = find_unarch_func(class_name); @@ -500,7 +500,7 @@ void archive::clear(void) /** Delete cached unarchived expressions in all archive_nodes (mainly for debugging). */ void archive::forget(void) { - vector::iterator i = nodes.begin(), iend = nodes.end(); + std::vector::iterator i = nodes.begin(), iend = nodes.end(); while (i != iend) { i->forget(); i++; @@ -516,12 +516,12 @@ void archive_node::forget(void) /** Print archive to stream in ugly raw format (for debugging). */ -void archive::printraw(ostream &os) const +void archive::printraw(std::ostream &os) const { // Dump atoms os << "Atoms:\n"; { - vector::const_iterator i = atoms.begin(), iend = atoms.end(); + std::vector::const_iterator i = atoms.begin(), iend = atoms.end(); archive_atom id = 0; while (i != iend) { os << " " << id << " " << *i << endl; @@ -533,7 +533,7 @@ void archive::printraw(ostream &os) const // Dump expressions os << "Expressions:\n"; { - vector::const_iterator i = exprs.begin(), iend = exprs.end(); + std::vector::const_iterator i = exprs.begin(), iend = exprs.end(); unsigned int index = 0; while (i != iend) { os << " " << index << " \"" << unatomize(i->name) << "\" root node " << i->root << endl; @@ -545,7 +545,7 @@ void archive::printraw(ostream &os) const // Dump nodes os << "Nodes:\n"; { - vector::const_iterator i = nodes.begin(), iend = nodes.end(); + std::vector::const_iterator i = nodes.begin(), iend = nodes.end(); archive_node_id id = 0; while (i != iend) { os << " " << id << " "; @@ -556,16 +556,16 @@ void archive::printraw(ostream &os) const } /** Output archive_node to stream in ugly raw format (for debugging). */ -void archive_node::printraw(ostream &os) const +void archive_node::printraw(std::ostream &os) const { // Dump cached unarchived expression if (has_expression) os << "(basic * " << e.bp << " = " << e << ")\n"; else - os << "(no expression)\n"; + os << "\n"; // Dump properties - vector::const_iterator i = props.begin(), iend = props.end(); + std::vector::const_iterator i = props.begin(), iend = props.end(); while (i != iend) { os << " "; switch (i->type) { @@ -580,8 +580,8 @@ void archive_node::printraw(ostream &os) const } } -/** Create a dummy archive. The intention is to fill archive_node's default ctor, - * which is currently a Cint-requirement. */ +/** Create a dummy archive. The intention is to fill archive_node's default + * ctor, which is currently a Cint-requirement. */ archive* archive_node::dummy_ar_creator(void) { static archive* some_ar = new archive;