Added quantiling UDAFs
[com/gs-lite.git] / src / ftacmp / iface_q.h
index 6b35021..2fdc203 100644 (file)
-/* ------------------------------------------------
-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
+/* ------------------------------------------------\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