rspec_parser_v1.h 2.17 KB
Newer Older
1
/*
2
 * Copyright (c) 2010 University of Utah and the Flux Group.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
 * 
 * {{{EMULAB-LICENSE
 * 
 * This file is part of the Emulab network testbed software.
 * 
 * This file is free software: you can redistribute it and/or modify it
 * under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or (at
 * your option) any later version.
 * 
 * This file is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public
 * License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this file.  If not, see <http://www.gnu.org/licenses/>.
 * 
 * }}}
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
 */

/*
 * Parser class for rspec version 1
 */
 
#ifdef WITH_XML 
 
#ifndef __RSPEC_PARSER_V1_H__
#define __RSPEC_PARSER_V1_H__

#include "rspec_parser.h"
#include "xstr.h"

#include <string>
#include <xercesc/dom/DOM.hpp>

39 40
struct node_interface_v1 : node_interface
{
41
  std::string componentName;
42 43
};

44 45
class rspec_parser_v1 : public rspec_parser 
{
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
  // Functions specific to rspec version 1 should be declared here. 
  // Most of the functions needed to parse rspecs in general should 
  // already have been inherited from rspec parser
 private:
  std::string find_urn(const xercesc::DOMElement* element, 
		       std::string const& prefix, bool&);
  
 public:
  
  rspec_parser_v1 (int type) : rspec_parser(type) { ; }
  
  std::string readPhysicalId (const xercesc::DOMElement*, bool&);
  std::string readVirtualId (const xercesc::DOMElement*, bool&);
  std::string readComponentManagerId (const xercesc::DOMElement*, bool&);
  
  std::map< std::pair<std::string, std::string>, 
    std::pair<std::string, std::string> > 
    readInterfacesOnNode (const xercesc::DOMElement*, bool&);
  std::vector<struct link_interface> readLinkInterface
    (const xercesc::DOMElement* link, int& ifaceCount);
  struct link_interface getIface (const xercesc::DOMElement*);
  std::string readSubnodeOf (const xercesc::DOMElement* tag,
			     bool& isSubnode,
			     int& count);
70 71 72 73 74
};

#endif

#endif