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 + -
显示快捷键?