realroot_doc 0.1.1
mmx::xml Namespace Reference

Namespace for parsing and printing in @ format. More...

Functions


Detailed Description

Namespace for parsing and printing in @ format.


Function Documentation

OSTREAM & print ( OSTREAM &  os,
const X &  x,
const char *  tag 
)

Definition at line 16 of file polynomial_xml.hpp.

Referenced by print(), and mmx::run_solver().

    {
      os<<"<"<<tag<<">"<<x<<"</"<<tag<<">";
      return os;
    }
OSTREAM& mmx::xml::print ( OSTREAM &  os,
const upoldse< C, R > &  p 
)

Print a univariate polynomial, with its @ tags.

Definition at line 145 of file xml.hpp.

References print().

  {
    xml::print(os,p,"polynomial");
    return os;
  }
bool mmx::xml::read ( ISTREAM &  is,
upoldse< C, R > &  p 
)

Read a univariate polynomial, enclosed in @ tags.

Definition at line 138 of file xml.hpp.

References read_upol().

  {
    return read_upol(is,p);
  }
bool mmx::xml::read ( ISTREAM &  is,
polynomial< C, R > &  p,
variables &  V 
)

Read a polynomial, enclosed in polynomial tags.

Definition at line 41 of file polynomial_xml.hpp.

References begin_polynomial, and skip().

Referenced by mmx::run_solver().

                                                        {
      if(skip(is,begin_polynomial)) {
        std::string s; char c;
        while((c=is.get()) != EOF && c != '<') {
          if(c != ' ' && c != '\n') s+=c;
        }
        s+='\0';
        p = polynomial<C,R>(s.data(),V);
        return true;
      } else {
        p=polynomial<C,R>(0); return false;
      }
    }
bool mmx::xml::read_pol ( ISTREAM &  is,
T &  p,
const VAR &  V 
)

Read a polynomial, enclosed in @ tags.

Definition at line 88 of file xml.hpp.

References begin_polynomial, and skip().

  {
    if(skip(is,begin_polynomial))
      {
        std::string s; char c;
        while((c=is.get()) != EOF && c != '<') 
          {
            if(c != ' ' && c != '\n') s+=c;
          }
        s+='\0';
        p = T(s.data(),V);
        return true;
      }
    else 
      {
        p=T(0); return false;
      }
  }
bool mmx::xml::read_pol ( ISTREAM &  is,
T &  p 
)

Read a polynomial, enclosed in @ tags.

Definition at line 66 of file xml.hpp.

References begin_polynomial, and skip().

  {
    if(skip(is,begin_polynomial))
      {
        ::std::string s; char c;
        while((c=is.get()) != EOF && c != '<') 
          {
            if(c != ' ' && c != '\n') s+=c;
          }
        s+='\0';
        //PRINT_DEBUG(s.data());
        p = T(s.data());
        return true;
      }
    else 
      {
        p=T(0); return false;
      }
  }
std::string mmx::xml::read_tag ( ISTREAM &  is,
const char *  tag 
)

Read between @ and "<" and build p from this string;.

Definition at line 47 of file xml.hpp.

References skip().

  {
    if(skip(is,tag))
      {
        std::string s; char c;
        while((c=is.get()) != EOF && c != '<') 
          {
            if(c != '\n') s+=c;
          }
        //      s+='\0';
        return s;
      }
    else
      {
        return std::string("");
      }
  }
bool mmx::xml::read_upol ( ISTREAM &  is,
T &  p 
)

Read a polynomial, enclosed in @ tags.

Definition at line 117 of file xml.hpp.

References begin_polynomial, and skip().

Referenced by read().

  {
    if(skip(is,begin_polynomial))
      {
        std::string s; char c;
        while((c=is.get()) != EOF && c != '<') 
          {
            if(c != ' ' && c != '\n') s+=c;
          }
        s+='\0';
        p = T(s.data());
        return true;
      }
    else 
      {
        p=T(0); return false;
      }
  }
bool skip ( ISTREAM &  is,
const char *  s 
)

Skip the input stream until s is found. It returns true if @ is found.

Definition at line 23 of file polynomial_xml.hpp.

Referenced by read(), read_pol(), read_tag(), read_upol(), and sread().

                                          {
      char c=(*s); const char* t=s;
      unsigned n= strlen(s),i=0;
      while(c != EOF) {
        for(i=0; i<n && (c !=EOF) && (c=is.get()) == (*t); i++,t++);
        if(i==n) {
          while((c=is.get()) != EOF && c != '>') ;
          return true;
        }
      else
        t=s;
      }

      return false;
    }
bool mmx::xml::sread ( ISTREAM &  is,
std::string &  s 
)

Read a polynomial as a string, enclosed in polynomial tags.

Definition at line 57 of file polynomial_xml.hpp.

References begin_polynomial, and skip().

                                     {
      if(skip(is,begin_polynomial)) {
        char c;
        while((c=is.get()) != EOF && c != '<') {
          if(c != ' ' && c != '\n') s+=c;
        }
        s+='\0';
        return true;
      } else {
        return false;
      }
    }