reSIProcate/stack  9694
ParameterTypeEnums.hxx
Go to the documentation of this file.
00001 #if !defined(RESIP_PARAMETERTYPEENUMS_HXX)
00002 #define RESIP_PARAMETERTYPEENUMS_HXX 
00003 
00004 #include "rutil/Data.hxx"
00005 
00013 #define defineParam(_enum, _name, _type, _rfc) _enum
00014 
00018 #define UNUSED_defineParam(_enum, _name, _type, _rfc) SAVE##_enum, _enum = UNKNOWN, RESET##enum = SAVE##_enum-1
00019 
00020 namespace resip
00021 {
00022 
00023 class Parameter;
00024 class ParseBuffer;
00025 class PoolBase;
00026 
00038 class ParameterTypes
00039 {
00040   
00041    public:
00042       // !dlb! until automated, must ensure that this set is consistent with
00043       // gperf in ParameterTypes.cxx, ParameterTypes.hxx, Parameters.gperf
00044       // NOTE: !!Parameters.gperf must have lowercase parameters!!
00045       // Also needs to be in ParserCategory.hxx/cxx
00046       // PLEASE compile and run testParserCategories after changing this file.
00047       enum Type
00048       {
00049          UNKNOWN = -1,
00050          defineParam(data, "data", ExistsParameter, "RFC 3840"),
00051          defineParam(control, "control", ExistsParameter, "RFC 3840"),
00052          defineParam(mobility, "mobility", QuotedDataParameter, "RFC 3840"), // mobile|fixed
00053          defineParam(description, "description", QuotedDataParameter, "RFC 3840"), // <> quoted
00054          defineParam(events, "events", QuotedDataParameter, "RFC 3840"), // list
00055          defineParam(priority, "priority", QuotedDataParameter, "RFC 3840"), // non-urgent|normal|urgent|emergency
00056          defineParam(methods, "methods", QuotedDataParameter, "RFC 3840"), // list
00057          defineParam(schemes, "schemes", QuotedDataParameter, "RFC 3840"), // list
00058          defineParam(application, "application", ExistsParameter, "RFC 3840"),
00059          defineParam(video, "video", ExistsParameter, "RFC 3840"),
00060          defineParam(language, "language", QuotedDataParameter, "RFC 3840"), // list
00061          defineParam(type, "type", QuotedDataParameter, "RFC 3840"), // list
00062          defineParam(isFocus, "isfocus", ExistsParameter, "RFC 3840"),
00063          defineParam(actor, "actor", QuotedDataParameter, "RFC 3840"), // principal|msg-taker|attendant|information
00064          defineParam(text, "text", ExistsOrDataParameter, "RFC 3840"), // using ExistsOrDataParameter so this parameter is compatible with both RFC3840 and RFC3326
00065          defineParam(extensions, "extensions", QuotedDataParameter, "RFC 3840"), //list
00066 
00067          defineParam(Instance, "+sip.instance", QuotedDataParameter, "RFC 5626"),  // <> quoted
00068          defineParam(regid, "reg-id", UInt32Parameter, "RFC 5626"),  
00069          defineParam(ob,"ob",ExistsParameter, "RFC 5626"),
00070 
00071          defineParam(pubGruu, "pub-gruu", QuotedDataParameter, "RFC 5627"),
00072          defineParam(tempGruu, "temp-gruu", QuotedDataParameter, "RFC 5627"),
00073          defineParam(gr, "gr", ExistsOrDataParameter, "RFC 5627"),
00074 
00075          defineParam(accessType, "access-type", DataParameter, "RFC 2046"),
00076          defineParam(algorithm, "algorithm", DataParameter, "RFC ????"),
00077          defineParam(boundary, "boundary", DataParameter, "RFC 2046"),
00078          defineParam(branch, "branch", BranchParameter, "RFC ????"),
00079          defineParam(charset, "charset", DataParameter, "RFC 2045"),
00080          defineParam(cnonce, "cnonce", QuotedDataParameter, "RFC ????"),
00081          defineParam(comp, "comp", DataParameter, "RFC ????"),
00082          defineParam(dAlg, "d-alg", DataParameter, "RFC 3329"),
00083          defineParam(dQop, "d-qop", DataParameter, "RFC ????"),
00084          defineParam(dVer, "d-ver", QuotedDataParameter, "RFC ????"),
00085          defineParam(directory, "directory", DataParameter, "RFC 2046"),
00086          defineParam(domain, "domain", QuotedDataParameter, "RFC ????"),
00087          defineParam(duration, "duration", UInt32Parameter, "RFC ????"),
00088          defineParam(expiration, "expiration", QuotedDataParameter, "RFC 2046"),
00089          defineParam(expires, "expires", UInt32Parameter, "RFC ????"),
00090          defineParam(filename, "filename", DataParameter, "RFC ????"),
00091          defineParam(fromTag, "from-tag", DataParameter, "RFC ????"),
00092          defineParam(handling, "handling", DataParameter, "RFC ????"),
00093          defineParam(id, "id", DataParameter, "RFC ????"),
00094          defineParam(lr, "lr", ExistsParameter, "RFC ????"),
00095          defineParam(maddr, "maddr", DataParameter, "RFC ????"),
00096          defineParam(method, "method", DataParameter, "RFC ????"),
00097          defineParam(micalg, "micalg", DataParameter, "RFC 1847"),
00098          defineParam(mode, "mode", DataParameter, "RFC 2046"),
00099          defineParam(name, "name", DataParameter, "RFC 2046"),
00100          defineParam(nc, "nc", DataParameter, "RFC ????"),
00101          defineParam(nonce, "nonce", QuotedDataParameter, "RFC ????"),
00102          defineParam(opaque, "opaque", QuotedDataParameter, "RFC ????"),
00103          defineParam(permission, "permission", DataParameter, "RFC 2046"),
00104          defineParam(protocol, "protocol", QuotedDataParameter, "RFC 1847"),
00105          defineParam(purpose, "purpose", DataParameter, "RFC ????"),
00106          defineParam(q, "q", QValueParameter, "RFC 3261"),
00107 
00108          defineParam(realm, "realm", QuotedDataParameter, "RFC ????"),
00109          defineParam(reason, "reason", DataParameter, "RFC ????"),
00110          defineParam(received, "received", DataParameter, "RFC ????"),
00111          defineParam(require, "require", DataParameter, "RFC 5373"),
00112          defineParam(response, "response", QuotedDataParameter, "RFC ????"),
00113          defineParam(retryAfter, "retry-after", UInt32Parameter, "RFC ????"),
00114          defineParam(rinstance, "rinstance", DataParameter, "Internal"),
00115          defineParam(rport, "rport", RportParameter, "RFC 3851"),
00116          defineParam(server, "server", DataParameter, "RFC 2046"),
00117          defineParam(site, "site", DataParameter, "RFC 2046"),
00118          defineParam(size, "size", DataParameter, "RFC 2046"),
00119          defineParam(smimeType, "smime-type", DataParameter, "RFC 2633"),
00120          defineParam(stale, "stale", DataParameter, "RFC ????"),
00121          defineParam(tag, "tag", DataParameter, "RFC 3261"),
00122          defineParam(toTag, "to-tag", DataParameter, "RFC ????"),
00123          defineParam(transport, "transport", DataParameter, "RFC 3261"),
00124          defineParam(ttl, "ttl", UInt32Parameter, "RFC 3261"),
00125          defineParam(uri, "uri", QuotedDataParameter, "RFC ????"),
00126          defineParam(user, "user", DataParameter, "RFC ????"),
00127          defineParam(extension, "ext", DataParameter, "RFC ????"),
00128          defineParam(username, "username", DataParameter, "RFC ????"),
00129          defineParam(earlyOnly, "early-only", ExistsParameter, "RFC 3891"),
00130          defineParam(refresher, "refresher", DataParameter, "RFC 4028"),
00131 
00132          defineParam(profileType, "profile-type", DataParameter, "draft-ietf-sipping-config-framework"),
00133          defineParam(vendor, "vendor", QuotedDataParameter, "draft-ietf-sipping-config-framework"),
00134          defineParam(model, "model", QuotedDataParameter, "draft-ietf-sipping-config-framework"),
00135          defineParam(version, "version", QuotedDataParameter, "draft-ietf-sipping-config-framework"),
00136          defineParam(effectiveBy, "effective-by", UInt32Parameter, "draft-ietf-sipping-config-framework"),
00137          defineParam(document, "document", DataParameter, "draft-ietf-sipping-config-framework"),
00138          defineParam(appId, "app-id", DataParameter, "draft-ietf-sipping-config-framework"),
00139          defineParam(networkUser, "network-user", DataParameter, "draft-ietf-sipping-config-framework"),
00140 
00141          defineParam(url, "url", QuotedDataParameter, "draft-ietf-sip-content-indirect-mech-05"),
00142 
00143 
00144          defineParam(sigcompId, "sigcomp-id", QuotedDataParameter, "draft-ietf-rohc-sigcomp-sip"),
00145          defineParam(qop, "qop", DataParameter, "RFC 3261"),
00146          defineParam(qopOptions, "qop", DataParameter, "RFC 3261"),
00147          defineParam(addTransport, "addTransport", ExistsParameter, "Internal"),
00148 
00149          MAX_PARAMETER
00150       };
00151 
00155       static Type getType(const char* start, unsigned int length);
00156 
00164       typedef Parameter* (*Factory)(ParameterTypes::Type, ParseBuffer&, const std::bitset<256>& terminators, PoolBase* pool);
00165 
00170       static Factory ParameterFactories[MAX_PARAMETER];
00171 
00176       static Data ParameterNames[MAX_PARAMETER];
00177 };
00178  
00179 }
00180 
00181 #undef defineParam
00182 #undef UNUSED_defineParam
00183 
00184 #endif
00185 
00186 /* ====================================================================
00187  * The Vovida Software License, Version 1.0 
00188  * 
00189  * Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved.
00190  * 
00191  * Redistribution and use in source and binary forms, with or without
00192  * modification, are permitted provided that the following conditions
00193  * are met:
00194  * 
00195  * 1. Redistributions of source code must retain the above copyright
00196  *    notice, this list of conditions and the following disclaimer.
00197  * 
00198  * 2. Redistributions in binary form must reproduce the above copyright
00199  *    notice, this list of conditions and the following disclaimer in
00200  *    the documentation and/or other materials provided with the
00201  *    distribution.
00202  * 
00203  * 3. The names "VOCAL", "Vovida Open Communication Application Library",
00204  *    and "Vovida Open Communication Application Library (VOCAL)" must
00205  *    not be used to endorse or promote products derived from this
00206  *    software without prior written permission. For written
00207  *    permission, please contact vocal@vovida.org.
00208  *
00209  * 4. Products derived from this software may not be called "VOCAL", nor
00210  *    may "VOCAL" appear in their name, without prior written
00211  *    permission of Vovida Networks, Inc.
00212  * 
00213  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
00214  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00215  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
00216  * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA
00217  * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
00218  * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
00219  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00220  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00221  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
00222  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00223  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
00224  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
00225  * DAMAGE.
00226  * 
00227  * ====================================================================
00228  * 
00229  * This software consists of voluntary contributions made by Vovida
00230  * Networks, Inc. and many individuals on behalf of Vovida Networks,
00231  * Inc.  For more information on Vovida Networks, Inc., please see
00232  * <http://www.vovida.org/>.
00233  *
00234  */