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

📄 doxygen.h

📁 基于sip协议的网络电话源码
💻 H
📖 第 1 页 / 共 3 页
字号:
/* $Id: doxygen.h 974 2007-02-19 01:13:53Z bennylp $ *//*  * Copyright (C)2003-2007 Benny Prijono <benny@prijono.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  */#ifndef __PJ_DOXYGEN_H__#define __PJ_DOXYGEN_H__/** * @file doxygen.h * @brief Doxygen's mainpage. *//*////////////////////////////////////////////////////////////////////////// *//*	INTRODUCTION PAGE *//** * @mainpage Welcome to PJLIB! * * @section intro_sec What is PJLIB * * PJLIB is an Open Source, small footprint framework library written in C for  * making scalable applications. Because of its small footprint, it can be used * in embedded applications (we hope so!), but yet the library is also aimed for * facilitating the creation of high performance protocol stacks. * * PJLIB is released under GPL terms. * * @section download_sec Download * * PJLIB and all documentation can be downloaded from  * http://www.pjsip.org. * * * @section how_to_use_sec About This Documentation * * This document is generated directly from PJLIB source file using * \a doxygen (http://www.doxygen.org). Doxygen is a great (and free!)  * tools for generating such documentation. * * @subsection doc_ver_subsec Version * * This document corresponds to PJLIB version 0.5.10. * * * @subsection find_samples_subsec How to Read This Document * * This documentation is laid out more to be a reference guide instead * of tutorial, therefore first time users may find it difficult to * grasp PJLIB by reading this document alone. * * However, we've tried our best to make this document easy to follow. * For first time users, we would suggest that you follow these steps * when reading this documentation: * *  - continue reading this introduction chapter. At the end of this *    chapter, you'll find section called \ref pjlib_fundamentals_sec *    which should guide you to understand basic things about PJLIB. * *  - find information about specific features that you want to use *    in PJLIB. Use the <b>Module Index</b> to find out about all  *    features in PJLIB (if you're browsing the HTML documentation, *    click on the \a Module link on top of the page, or if you're *    reading the PDF documentation, click on \a Module \a Documentation *    on the navigation pane on the left). * * @subsection doc_organize_sec How To's * * Please find below links to specific tasks that you probably * want to do: * *  - <b>How to Build PJLIB</b> *\n * Please refer to \ref pjlib_build_sys_pg page for more information. * *  - <b>How to Use PJLIB in My Application</b> *\n * Please refer to \ref configure_app_sec for more information. * *  - <b>How to Port PJLIB</b> *\n * Please refer to \ref porting_pjlib_pg page. * *  - <b>Where to Read Samples Documentation</b> *\n * Most of the modules provide link to the corresponding sample file. * Alternatively, to get the list of all examples, you can click on  * <b>Related Pages</b> on the top of HTML document or on  * <b>PJLIB Page Documentation</b> on navigation pane of your PDF reader. * *  - <b>How to Submit Code to PJLIB Project</b> *\n * Please read \ref pjlib_coding_convention_page before submitting * your code. Send your code as patch against current Subversion tree * to the appropriate mailing list. * * * @section features_sec Features * * @subsection open_source_feat It's Open Source! * * PJLIB is currently released on GPL license, but other arrangements * can be made with the author. * * @subsection extreme_portable_feat Extreme Portability * * PJLIB is designed to be extremely portable. It can run on any kind * of processors (16-bit, 32-bit, or 64-bit, big or little endian, single * or multi-processors) and operating systems. Floating point or no * floating point. Multi-threading or not. * It can even run in environment where no ANSI LIBC is available.  * * Currently PJLIB is known to run on these platforms: *  - Win32/x86 (Win95/98/ME, NT/2000/XP/2003, mingw). *  - arm, WinCE and Windows Mobile. *  - Linux/x86, (user mode and as <b>kernel module</b>(!)). *  - Linux/alpha *  - Solaris/ultra. *  - MacOS X/powerpc *  - RTEMS (x86 and powerpc). * * And efforts is under way to port PJLIB on: *  - Symbian OS * * * @subsection small_size_feat Small in Size * * One of the primary objectives is to have library that is small in size for * typical embedded applications. As a rough guidance, we aim to keep the  * library size below 100KB for it to be considered as small. * As the result, most of the functionalities in the library can be tailored * to meet the requirements; user can enable/disable specific functionalities * to get the desired size/performance/functionality balance. * * For more info, please see @ref pj_config. * * * @subsection big_perform_feat Big in Performance * * Almost everything in PJLIB is designed to achieve the highest possible * performance out of the target platform.  * * * @subsection no_dyn_mem No Dynamic Memory Allocations * * The central idea of PJLIB is that for applications to run as fast as it can, * it should not use \a malloc() at all, but instead should get the memory  * from a preallocated storage pool. There are few things that can be  * optimized with this approach: * *  - \a alloc() is a O(1) operation. *  - no mutex is used inside alloc(). It is assumed that synchronization  *    will be used in higher abstraction by application anyway. *  - no \a free() is required. All chunks will be deleted when the pool is  *    destroyed. * * The performance gained on some systems can be as high as 30x speed up * against \a malloc() and \a free() on certain configurations, but of * course your mileage may vary.  * * For more information, see \ref PJ_POOL_GROUP * *  * @subsection os_abstract_feat Operating System Abstraction * * PJLIB has abstractions for features that are normally not portable  * across operating systems:  *  - @ref PJ_THREAD *\n *    Portable thread manipulation. *  - @ref PJ_TLS *\n *    Storing data in thread's private data. *  - @ref PJ_MUTEX *\n *    Mutual exclusion protection. *  - @ref PJ_SEM *\n *    Semaphores. *  - @ref PJ_ATOMIC *\n *    Atomic variables and their operations. *  - @ref PJ_CRIT_SEC *\n *    Fast locking of critical sections. *  - @ref PJ_LOCK *\n *    High level abstraction for lock objects. *  - @ref PJ_EVENT *\n *    Event object. *  - @ref PJ_TIME *\n *    Portable time manipulation. *  - @ref PJ_TIMESTAMP *\n *    High resolution time value. *  - etc. * * * @subsection ll_network_io_sec Low-Level Network I/O * * PJLIB has very portable abstraction and fairly complete set of API for * doing network I/O communications. At the lowest level, PJLIB provides: * *  - @ref PJ_SOCK *\n *    A highly portable socket abstraction, runs on all kind of *    network APIs such as standard BSD socket, Windows socket, Linux *    \b kernel socket, PalmOS networking API, etc. * *  - @ref pj_addr_resolve *\n *    Portable address resolution, which implements #pj_gethostbyname(). * *  - @ref PJ_SOCK_SELECT *\n *    A portable \a select() like API (#pj_sock_select()) which can be *    implemented with various back-end. * * * * @subsection timer_mgmt_sec Timer Management * * A passive framework for managing timer, see @ref PJ_TIMER for more info. * There is also function to retrieve high resolution timestamp * from the system (see @ref PJ_TIMESTAMP). * * * @subsection data_struct_sec Various Data Structures * * Various data structures are provided in the library: * *  - @ref PJ_PSTR *  - @ref PJ_ARRAY *  - @ref PJ_HASH *  - @ref PJ_LIST *  - @ref PJ_RBTREE * * * @subsection exception_sec Exception Construct * * A convenient TRY/CATCH like construct to propagate errors, which by * default are used by the @ref PJ_POOL_GROUP "memory pool" and  * the lexical scanner in pjlib-util. The exception * construct can be used to write programs like below: * * <pre> *    #define SYNTAX_ERROR  1 * *    PJ_TRY { *       msg = NULL; *       msg = parse_msg(buf, len); *    } *    PJ_CATCH ( SYNTAX_ERROR ) { *       .. handle error .. *    } *    PJ_END; * </pre> * * Please see @ref PJ_EXCEPT for more information. * * * @subsection logging_sec Logging Facility * * PJLIB @ref PJ_LOG consists of macros to write logging information to * some output device. Some of the features of the logging facility: * *  - the verbosity can be fine-tuned both at compile time (to control *    the library size) or run-time (to control the verbosity of the *    information). *  - output device is configurable (e.g. stdout, printk, file, etc.) *  - log decoration is configurable. * * See @ref PJ_LOG for more information. * * * @subsection guid_gen_sec Random and GUID Generation * * PJLIB provides facility to create random string  * (#pj_create_random_string()) or globally unique identifier * (see @ref PJ_GUID). * * * * @section configure_app_sec Configuring Application to use PJLIB * * @subsection pjlib_compil_sec Building PJLIB * * Follow the instructions in \ref pjlib_build_sys_pg to build * PJLIB. * * @subsection pjlib_compil_app_sec Building Applications with PJLIB * * Use the following settings when building applications with PJLIB. * * @subsubsection compil_inc_dir_sec Include Search Path * * Add this to your include search path ($PJLIB is PJLIB root directory): * <pre> *   $PJLIB/include * </pre> * * @subsubsection compil_inc_file_sec Include PJLIB Header * * To include all PJLIB headers: * \verbatim    #include <pjlib.h>   \endverbatim * * Alternatively, you can include individual PJLIB headers like this: * \verbatim     #include <pj/log.h>     #include <pj/os.h>  \endverbatim * * * @subsubsection compil_lib_dir_sec Library Path *

⌨️ 快捷键说明

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