Fixed newline characters throughout the code
[com/gs-lite.git] / src / ftacmp / iface_q.h
index 2fdc203..6b35021 100644 (file)
-/* ------------------------------------------------\r
-Copyright 2014 AT&T Intellectual Property\r
-   Licensed under the Apache License, Version 2.0 (the "License");\r
-   you may not use this file except in compliance with the License.\r
-   You may obtain a copy of the License at\r
-\r
-     http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-   Unless required by applicable law or agreed to in writing, software\r
-   distributed under the License is distributed on an "AS IS" BASIS,\r
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-   See the License for the specific language governing permissions and\r
-   limitations under the License.\r
- ------------------------------------------- */\r
-#ifndef __IFACE_Q_DEFINED_\r
-#define __IFACE_Q_DEFINED_\r
-\r
-#include <stdio.h>\r
-//#include "xmlparse.h"\r
-#include<vector>\r
-#include<string>\r
-#include<map>\r
-#include<set>\r
-#include<algorithm>\r
-\r
-#include"parse_fta.h"\r
-\r
-\r
-//                     Represent an interface.\r
-class iface_t{\r
-public:\r
-       int lineno;\r
-       std::map<std::string, std::vector<std::string> > vals;\r
-\r
-       iface_t(int l){\r
-               lineno = l;\r
-       }\r
-\r
-       void add_property(const char *name, const char *att);\r
-       void add_property(const char *name, const char **atts);\r
-       void add_property(const char *name, std::vector<std::string> &val_vec);\r
-\r
-       std::vector<std::string> get_property(std::string p){\r
-               std::vector<std::string> ret;\r
-\r
-       /* convert property name to lcase */\r
-       std::transform(p.begin(), p.end(), p.begin(), (int(*)(int))std::tolower);\r
-\r
-/*\r
-printf("get_property %s :\n",p.c_str());\r
-std::map<std::string, std::vector<std::string> >::iterator msvsi;\r
-for(msvsi=vals.begin(); msvsi!=vals.end();++msvsi){\r
-  printf("\t%s : ",(*msvsi).first.c_str());\r
-  std::vector<std::string>  vs = (*msvsi).second;\r
-  int i;\r
-  for(i=0;i<vs.size();++i){\r
-    printf(" %s",vs[i].c_str());\r
-  }\r
-  printf("\n");\r
-}\r
-*/\r
-               if(vals.count(p)) return vals[p];\r
-               else return ret;\r
-       }\r
-\r
-       std::vector<std::string> get_properties(){\r
-               std::vector<std::string> ret;\r
-\r
-               std::map<std::string, std::vector<std::string> >::iterator iter;\r
-               for (iter = vals.begin(); iter != vals.end(); iter++) {\r
-                       ret.push_back((*iter).first);\r
-               }\r
-               return ret;\r
-       }\r
-\r
-       int finalize(std::string &errs);\r
-       std::string to_string();\r
-       std::string get_name();\r
-       std::string get_host();\r
-       bool eval_Contains(std::string prop, std::string val);\r
-       bool eval_Equals(std::string prop, std::string val);\r
-       bool eval_Exists(std::string prop);\r
-};\r
-\r
-//                     Represent an interface.\r
-class gs_host_t{\r
-public:\r
-       int lineno;\r
-       std::map<std::string, std::vector<std::string> > vals;\r
-\r
-       gs_host_t(int l){\r
-               lineno = l;\r
-       }\r
-\r
-       void add_property(const char *name, const char *att);\r
-       void add_property(const char *name, std::vector<std::string> &val_vec);\r
-       std::vector<std::string> get_property(std::string p){\r
-               std::vector<std::string> ret;\r
-               if(vals.count(p)) return vals[p];\r
-               else return ret;\r
-       }\r
-       int finalize(std::string &errs);\r
-\r
-       void add_interface(iface_t* it) {ifaces.push_back(it);}\r
-\r
-       void propagate_name() {\r
-               for(int i=0;i<ifaces.size();i++)\r
-                       ifaces[i]->add_property("host", vals["name"]);\r
-       }\r
-\r
-       std::string to_string();\r
-       std::string get_name();\r
-\r
-       std::vector<iface_t *> ifaces;\r
-};\r
-\r
-\r
-\r
-//             A collection of resources (interfaces)\r
-\r
-class resparse_data{\r
-public:\r
-       std::vector<std::string> level;\r
-       bool in_Resources, in_Iface, in_Host;\r
-       iface_t *curr_iface;\r
-       gs_host_t *curr_host;\r
-       bool failure;\r
-    std::vector<iface_t *> ifaces;\r
-       std::vector<gs_host_t *> hosts;\r
-       bool use_live_hosts_file;\r
-       std::set<std::string> *live_hosts;\r
-       bool distributed_mode;\r
-\r
-//     XML_Parser parser;\r
-\r
-//     resparse_data(XML_Parser p){\r
-//             parser = p;\r
-       resparse_data(bool use_live_hosts_file, std::set<std::string> *live_hosts, bool distributed_mode){\r
-               in_Resources = false;\r
-               in_Iface = false;\r
-               curr_iface = NULL;\r
-               failure = false;\r
-               this->use_live_hosts_file = use_live_hosts_file;\r
-               this->live_hosts = live_hosts;\r
-               this->distributed_mode = distributed_mode;\r
-       };\r
-\r
-       void new_iface(int l){\r
-               curr_iface = new iface_t(l);\r
-       };\r
-       void new_host(int l){\r
-               curr_host = new gs_host_t(l);\r
-       };\r
-       void add_property(const char *name, const char *att){\r
-               curr_iface->add_property(name, att);\r
-       };\r
-       void add_property(const char *name, const char **atts){\r
-               curr_iface->add_property(name, atts);\r
-       };\r
-       void add_property(const char *name, std::vector<std::string> &val_vec){\r
-               curr_iface->add_property(name, val_vec);\r
-       };\r
-\r
-\r
-       std::vector<std::string> get_property(int i, std::string property){\r
-               return ifaces[i]->get_property(property);\r
-       };\r
-       std::vector<std::string> get_properties(int i){\r
-               return ifaces[i]->get_properties();\r
-       };\r
-\r
-       int finalize_iface(std::string &errs);\r
-       int finalize_host(std::string &errs);\r
-       bool failed(){return failure;};\r
-       std::string to_string();\r
-       std::vector<std::pair<std::string,std::string> > find_ifaces(predicate_t *pr);\r
-       std::vector<int> get_ifaces_by_Name(std::string host_name, std::string if_name);\r
-private:\r
-       bool eval_pred(int i, predicate_t *pr);\r
-};\r
-\r
-\r
-class ifq_t{\r
-public:\r
-       resparse_data *rpd;\r
-       std::map<std::string, predicate_t *> ifq_map;\r
-\r
-       ifq_t(){ rpd = NULL;};\r
-\r
-       int load_ifaces(std::string fname, bool use_live_hosts_file, bool distributed_mode, std::string &err);\r
-       int load_ifqs(std::string fname, std::string &err);\r
-\r
-       std::vector<std::pair<std::string,std::string> > eval(std::string qname, int &errnbr);\r
-       std::vector<std::string> get_iface_vals(std::string host_name, std::string if_name, std::string property, int &errnbr, std::string &err_str);\r
-       std::vector<std::string> get_iface_properties(std::string host_name, std::string basic_if_name, int &err_no, std::string &err_str);\r
-};\r
-\r
-\r
-/////////////////////////\r
-//     for resource parser\r
-\r
-void startElement(void *userData, const char *name, std::vector<std::string> &attr_vec, std::vector<std::string> &val_vec);\r
-void endElement(void *userData, const char *name) ;\r
-\r
-\r
-\r
-\r
-#endif\r
+/* ------------------------------------------------
+Copyright 2014 AT&T Intellectual Property
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+ ------------------------------------------- */
+#ifndef __IFACE_Q_DEFINED_
+#define __IFACE_Q_DEFINED_
+
+#include <stdio.h>
+//#include "xmlparse.h"
+#include<vector>
+#include<string>
+#include<map>
+#include<set>
+#include<algorithm>
+
+#include"parse_fta.h"
+
+
+//                     Represent an interface.
+class iface_t{
+public:
+       int lineno;
+       std::map<std::string, std::vector<std::string> > vals;
+
+       iface_t(int l){
+               lineno = l;
+       }
+
+       void add_property(const char *name, const char *att);
+       void add_property(const char *name, const char **atts);
+       void add_property(const char *name, std::vector<std::string> &val_vec);
+
+       std::vector<std::string> get_property(std::string p){
+               std::vector<std::string> ret;
+
+       /* convert property name to lcase */
+       std::transform(p.begin(), p.end(), p.begin(), (int(*)(int))std::tolower);
+
+/*
+printf("get_property %s :\n",p.c_str());
+std::map<std::string, std::vector<std::string> >::iterator msvsi;
+for(msvsi=vals.begin(); msvsi!=vals.end();++msvsi){
+  printf("\t%s : ",(*msvsi).first.c_str());
+  std::vector<std::string>  vs = (*msvsi).second;
+  int i;
+  for(i=0;i<vs.size();++i){
+    printf(" %s",vs[i].c_str());
+  }
+  printf("\n");
+}
+*/
+               if(vals.count(p)) return vals[p];
+               else return ret;
+       }
+
+       std::vector<std::string> get_properties(){
+               std::vector<std::string> ret;
+
+               std::map<std::string, std::vector<std::string> >::iterator iter;
+               for (iter = vals.begin(); iter != vals.end(); iter++) {
+                       ret.push_back((*iter).first);
+               }
+               return ret;
+       }
+
+       int finalize(std::string &errs);
+       std::string to_string();
+       std::string get_name();
+       std::string get_host();
+       bool eval_Contains(std::string prop, std::string val);
+       bool eval_Equals(std::string prop, std::string val);
+       bool eval_Exists(std::string prop);
+};
+
+//                     Represent an interface.
+class gs_host_t{
+public:
+       int lineno;
+       std::map<std::string, std::vector<std::string> > vals;
+
+       gs_host_t(int l){
+               lineno = l;
+       }
+
+       void add_property(const char *name, const char *att);
+       void add_property(const char *name, std::vector<std::string> &val_vec);
+       std::vector<std::string> get_property(std::string p){
+               std::vector<std::string> ret;
+               if(vals.count(p)) return vals[p];
+               else return ret;
+       }
+       int finalize(std::string &errs);
+
+       void add_interface(iface_t* it) {ifaces.push_back(it);}
+
+       void propagate_name() {
+               for(int i=0;i<ifaces.size();i++)
+                       ifaces[i]->add_property("host", vals["name"]);
+       }
+
+       std::string to_string();
+       std::string get_name();
+
+       std::vector<iface_t *> ifaces;
+};
+
+
+
+//             A collection of resources (interfaces)
+
+class resparse_data{
+public:
+       std::vector<std::string> level;
+       bool in_Resources, in_Iface, in_Host;
+       iface_t *curr_iface;
+       gs_host_t *curr_host;
+       bool failure;
+    std::vector<iface_t *> ifaces;
+       std::vector<gs_host_t *> hosts;
+       bool use_live_hosts_file;
+       std::set<std::string> *live_hosts;
+       bool distributed_mode;
+
+//     XML_Parser parser;
+
+//     resparse_data(XML_Parser p){
+//             parser = p;
+       resparse_data(bool use_live_hosts_file, std::set<std::string> *live_hosts, bool distributed_mode){
+               in_Resources = false;
+               in_Iface = false;
+               curr_iface = NULL;
+               failure = false;
+               this->use_live_hosts_file = use_live_hosts_file;
+               this->live_hosts = live_hosts;
+               this->distributed_mode = distributed_mode;
+       };
+
+       void new_iface(int l){
+               curr_iface = new iface_t(l);
+       };
+       void new_host(int l){
+               curr_host = new gs_host_t(l);
+       };
+       void add_property(const char *name, const char *att){
+               curr_iface->add_property(name, att);
+       };
+       void add_property(const char *name, const char **atts){
+               curr_iface->add_property(name, atts);
+       };
+       void add_property(const char *name, std::vector<std::string> &val_vec){
+               curr_iface->add_property(name, val_vec);
+       };
+
+
+       std::vector<std::string> get_property(int i, std::string property){
+               return ifaces[i]->get_property(property);
+       };
+       std::vector<std::string> get_properties(int i){
+               return ifaces[i]->get_properties();
+       };
+
+       int finalize_iface(std::string &errs);
+       int finalize_host(std::string &errs);
+       bool failed(){return failure;};
+       std::string to_string();
+       std::vector<std::pair<std::string,std::string> > find_ifaces(predicate_t *pr);
+       std::vector<int> get_ifaces_by_Name(std::string host_name, std::string if_name);
+private:
+       bool eval_pred(int i, predicate_t *pr);
+};
+
+
+class ifq_t{
+public:
+       resparse_data *rpd;
+       std::map<std::string, predicate_t *> ifq_map;
+
+       ifq_t(){ rpd = NULL;};
+
+       int load_ifaces(std::string fname, bool use_live_hosts_file, bool distributed_mode, std::string &err);
+       int load_ifqs(std::string fname, std::string &err);
+
+       std::vector<std::pair<std::string,std::string> > eval(std::string qname, int &errnbr);
+       std::vector<std::string> get_iface_vals(std::string host_name, std::string if_name, std::string property, int &errnbr, std::string &err_str);
+       std::vector<std::string> get_iface_properties(std::string host_name, std::string basic_if_name, int &err_no, std::string &err_str);
+};
+
+
+/////////////////////////
+//     for resource parser
+
+void startElement(void *userData, const char *name, std::vector<std::string> &attr_vec, std::vector<std::string> &val_vec);
+void endElement(void *userData, const char *name) ;
+
+
+
+
+#endif