planelement.hxx
来自「vovida的软交换」· HXX 代码 · 共 176 行
HXX
176 行
#ifndef PlanElement_HXX#define PlanElement_HXX/* ==================================================================== * The Vovida Software License, Version 1.0 * * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The names "VOCAL", "Vovida Open Communication Application Library", * and "Vovida Open Communication Application Library (VOCAL)" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact vocal@vovida.org. * * 4. Products derived from this software may not be called "VOCAL", nor * may "VOCAL" appear in their name, without prior written * permission of Vovida Networks, Inc. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * ==================================================================== * * This software consists of voluntary contributions made by Vovida * Networks, Inc. and many individuals on behalf of Vovida Networks, * Inc. For more information on Vovida Networks, Inc., please see * <http://www.vovida.org/>. * */#include <vector>#include "Data.hxx"#include "Sptr.hxx"#include <sys/types.h>#include <regex.h>static const char* const PlanElementVersion = "$Id: PlanElement.hxx,v 1.1 2003/05/07 09:28:26 suhac Exp $";#define MAX_NUM_REGMATCH 9 /** * This class is contains an element of a dial plan. * Each element is composed of a unique identifier (key) which * is also stored in its regular expression format. Finally * the list of contacts relating to this key are stored. */class PlanElement{ public: /** * Constructor */ PlanElement(); /** * Constructor * @param key Regular expression * @param contacts List of contacts */ PlanElement(const Data& key, const vector < Data > & contacts); /** * Copy Constructor * @param rhs Element to be copied */ PlanElement( const PlanElement& rhs ); /** * Set element equal to specified element * @param rhs Element containing data to copy. * @return This element */ PlanElement& operator=( const PlanElement& rhs ); /** * Destructor */ virtual ~PlanElement(); /** * Retrieve the regular expression * @return Regular expression for this element. */ const Data& getTextKey() const; /** * Retrieve the regular expression * @return Regular expression for this element. */ const regex_t& getKey() const; /** * Retrieve the regular expression Match Register * @return Regular expression Match Register for this element. */ const regmatch_t * getMatch( ) const ; /** * Retrieve the contact list * @return Contact list for this element. */ const vector < Data > & getContacts() const; /** * Check and see if the contact needs to be replaced * using regular expressions * @return the needsReplacement */ bool isToBeReplaced( ) const; /** * Generate a new modified contact list based on * the provided matched "key" * the existing contact in the plan(using it as the * replacement string) * @param key String that matched against the regular * expressions in the table. * @param elementFound List of contacts corresponding to * expression matched. */ void replace( const Data& key , vector < Data > & elementFound); protected: /// Element's identifier. Data textKey; /// Element's identifier in the form of a regular expression regex_t regExpKey; /// Used for Matching and Grouping in the regexec regmatch_t regMatch[MAX_NUM_REGMATCH+1] ; /// List of SIP contacts for termination of a call. vector < Data > contactList; private: /** * Copy data from specified element into this one. * @param rhs Element containing data to copy. */ void copyRhsToThis( const PlanElement& rhs ); /// Flag that gets set based on the use of regular expression grouping. bool needsReplacement ;};#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?