⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 policy_utils.hh

📁 xorp源码hg
💻 HH
字号:
// -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-// vim:set sts=4 ts=8:// Copyright (c) 2001-2007 International Computer Science Institute//// Permission is hereby granted, free of charge, to any person obtaining a// copy of this software and associated documentation files (the "Software")// to deal in the Software without restriction, subject to the conditions// listed in the XORP LICENSE file. These conditions include: you must// preserve this copyright notice, and you cannot mention the copyright// holders in advertising related to the Software without their permission.// The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This// notice is a summary of the XORP LICENSE file; the license in that file is// legally binding.// $XORP: xorp/policy/common/policy_utils.hh,v 1.8 2007/02/16 22:47:04 pavlin Exp $#ifndef __POLICY_COMMON_POLICY_UTILS_HH__#define __POLICY_COMMON_POLICY_UTILS_HH__#include <vector>#include <map>#include <string>#include <list>#include <set>#include <sstream>#include "policy_exception.hh"/** * Some generic utility functions used by different policy components. */namespace policy_utils {/** * @short Generic exception for errors */class PolicyUtilsErr : public PolicyException {public:    PolicyUtilsErr(const char* file, size_t line, const string& init_why = "")           : PolicyException("PolicyUtilsErr", file, line, init_why) {}};/** * Deletes a vector by deleting objects and deleting the vector itself. * It checks if objects are null and skips them if so. Also checks if vector * itself is null. * * @param v vector to delete */template <class T>void delete_vector(vector<T*>* v) {    if(!v)	return;    for(typename vector<T*>::iterator i = v->begin();	i != v->end(); ++i) {	if(*i)	    delete *i;    }    delete v;}/** * Deletes objects in container. * Checks if objects are null and skips them if so. * * The container is cleared at the end. * * @param l container to be deleted and cleared. */template <class T>void clear_container(T& l) {    for(typename T::iterator i = l.begin();	i != l.end(); ++i) {	if(*i)	    delete *i;    }    l.clear();	}/** * Delets objects of a map and clears the map at the end. * Checks for null objects. * * @param m map to be deleted and cleared. */template <class A, class T>void clear_map(map<A,T*>& m) {    for(typename map<A,T*>::iterator i = m.begin();	i != m.end(); ++i)  {	if((*i).second)	    delete (*i).second;    }	    m.clear();}/** * Delets objects of a map-like container and clears the map at the end. * Checks for null objects. * * @param m map-like container to be deleted and cleared. */template <class T>void clear_map_container(T& m) {    for(typename T::iterator i = m.begin();	i != m.end(); ++i)  {	if((*i).second)	    delete (*i).second;    }	    m.clear();}/** * Converts a string in the form "1,2,...,n" to a list of strings. * * @param in input string. * @param out output list. */void str_to_list(const string& in, list<string>& out); /** * Converts a string in the form "1,2,...,n" to a set of strings. * * @param in input string. * @param out output set. */void str_to_set(const string& in, set<string>& out); /** * Converts an object to a string via an ostringstream. * * @return string representation of object. * @param x object to convert to string. */template <class T>stringto_str(T x) {    ostringstream oss;    oss << x;    return oss.str();}/** * Reads a file into a string. * An exception is thrown on error. * * @param fname filename to read. * @param out output string which will be filled with file content. */void read_file(const string& fname, string& out);/** * Count the occurences of newlines in the c-style string. * * @return the number of new lines in the string. * @param x the 0 terminated c-style string to count new lines in. */unsigned count_nl(const char* x);/** * Match a regex. * * @param str input string to check. * @param reg regular expression used for matching. * @return true if string matches regular expression */bool regex(const string& str, const string& reg);};#endif // __POLICY_COMMON_POLICY_UTILS_HH__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -