📄 rvsdpobjs.h
字号:
/******************************************************************************
Filename :rvsdpobjs.h
Description :Definitions and structures for SDP message objects
******************************************************************************
Copyright (c) 1999 RADVision Inc.
************************************************************************
NOTICE:
This document contains information that is proprietary to RADVision LTD.
No part of this publication may be reproduced in any form whatsoever
without written prior approval by RADVision LTD..
RADVision LTD. reserves the right to revise this publication and make
changes without obligation to notify any person of such revisions or
changes.
******************************************************************************
$Revision:1.0$
$Date:7/18/99$
$Author:Dan Elbert$
******************************************************************************/
#ifndef RV_SDPOBJS_H
#define RV_SDPOBJS_H
#include <string.h>
#include <stdlib.h>
#include "rvtypes.h"
#include "rvlist.h"
#include "rvstring.h"
#include "rvsdpsymb.h"
#include "rvalloc.h"
#include "rvdefalloc.h"
#if !defined(RV_SDP_DECLSPEC)
#define RV_SDP_DECLSPEC
#endif
#if defined(__cplusplus)
extern "C" {
#endif
#define rvSdpMemEqual(d,s,T) memcmp((void*)d,(void*)s,sizeof(T))
/* typedef int RvInetPort; */
#define RV_SDPFIELD_NOTSET 0
#define RV_SDPTTL_NOTSET -1
/* Default */
#define RV_SDPTIME_FULL
/************* Private helper functions ****************************************/
RV_SDP_DECLSPEC RvString* rvSdpStringAssign(RvString* s, const char* v);
RV_SDP_DECLSPEC const char* rvSdpStringGetData(const RvString* s);
/************* Origin object and methods ***************************************/
typedef struct RvSdpOrigin_ {
RvString username;
RvString session_id;
RvString version;
RvSdpNetType nettype; /* "IN" ,ATM */
#ifdef RV_SDPSYMB_USESTRING
RvString nettype_str;
#endif
RvSdpAddrType addrtype; /* IP4,IP6,LOCAL */
#ifdef RV_SDPSYMB_USESTRING
RvString addrtype_str;
#endif
RvString address; /* Connection address: multicast,or FQDN */
} RvSdpOrigin;
RV_SDP_DECLSPEC RvSdpOrigin * rvSdpOriginConstructN(RvSdpOrigin *x,
const char* username,size_t ulen,
const char* session_id,size_t slen,
const char* version,size_t vlen,
RvSdpNetType nettype,RvSdpAddrType addrtype,
const char* address,size_t alen,RvAlloc* alloc);
#define rvSdpOriginConstructA(x,u,s,v,n,at,a,alloc) rvSdpOriginConstructN(x,u,strlen(u),s,strlen(s),v,strlen(v),n,at,a,strlen(a),alloc)
#define rvSdpOriginConstruct(x,u,s,v,n,at,a) rvSdpOriginConstructA(x,u,s,v,n,at,a,&rvDefaultAlloc)
RV_SDP_DECLSPEC RvSdpOrigin * rvSdpOriginConstructCopyA(RvSdpOrigin *d,const RvSdpOrigin *s, RvAlloc *a);
RV_SDP_DECLSPEC RvSdpOrigin * rvSdpOriginConstructCopy(RvSdpOrigin *d,const RvSdpOrigin *s);
RV_SDP_DECLSPEC void rvSdpOriginDestruct(RvSdpOrigin *x);
RV_SDP_DECLSPEC RvSdpOrigin * rvSdpOriginCopy(RvSdpOrigin *d,const RvSdpOrigin *s, RvAlloc *a);
/*void rvSdpOriginSetUsername(RvSdpOrigin* x,const char* username);*/
#define rvSdpOriginSetUsername(x,u) rvSdpStringAssign(&(x)->username,u)
/*const char* rvSdpOriginGetUsername(const RvSdpOrigin* x);*/
#define rvSdpOriginGetUsername(x) rvSdpStringGetData(&(x)->username)
/*void rvSdpOriginSetVersion(RvSdpOrigin* x,const char* version);*/
#define rvSdpOriginSetVersion(x,v) rvSdpStringAssign(&(x)->version,v)
/*const char* rvSdpOriginGetVersion(const RvSdpOrigin* x);*/
#define rvSdpOriginGetVersion(x) rvSdpStringGetData(&(x)->version)
/*void rvSdpOriginSetSessionId(RvSdpOrigin* x,const char* id);*/
#define rvSdpOriginSetSessionId(x,id) rvSdpStringAssign(&(x)->session_id,id)
/*const char* rvSdpOriginGetSessionId(const RvSdpOrigin* x);*/
#define rvSdpOriginGetSessionId(x) rvSdpStringGetData(&(x)->session_id)
/*void rvSdpOriginSetNetType(RvSdpOrigin* x,RvSdpNetType type);*/
#define rvSdpOriginSetNetType(x,t) ((x)->nettype=t)
/*RvSdpNetType rvSdpOriginGetNetType(const RvSdpOrigin* x);*/
#define rvSdpOriginGetNetType(x) ((x)->nettype)
RV_SDP_DECLSPEC void rvSdpOriginSetNetTypeStr(RvSdpOrigin* x,const char* type);
RV_SDP_DECLSPEC void rvSdpOriginSetNetTypeStrN(RvSdpOrigin* x,const char* type,size_t n);
RV_SDP_DECLSPEC const char* rvSdpOriginGetNetTypeStr(const RvSdpOrigin* x);
/*void rvSdpOriginSetAddressType(RvSdpOrigin* x,RvSdpAddrType type);*/
#define rvSdpOriginSetAddressType(x,type) ((x)->addrtype=type)
/*RvSdpAddrType rvSdpOriginGetAddressType(const RvSdpOrigin* x);*/
#define rvSdpOriginGetAddressType(x) ((x)->addrtype)
RV_SDP_DECLSPEC void rvSdpOriginSetAddressTypeStr(RvSdpOrigin* x,const char* t);
RV_SDP_DECLSPEC void rvSdpOriginSetAddressTypeStrN(RvSdpOrigin* x,const char* t,size_t n);
RV_SDP_DECLSPEC const char* rvSdpOriginGetAddressTypeStr(const RvSdpOrigin* x);
RV_SDP_DECLSPEC void rvSdpOriginSetAddress(RvSdpOrigin* x,const char* addr);
#define rvSdpOriginSetAddress(x,a) rvSdpStringAssign(&(x)->address,a)
/*const char* rvSdpOriginGetAddress(const RvSdpOrigin* x);*/
#define rvSdpOriginGetAddress(x) rvSdpStringGetData(&(x)->address)
/************* Email object and methods ***************************************/
typedef struct RvSdpEmail_ {
RvString address;
RvString text;
} RvSdpEmail;
rvDeclareList(RvSdpEmail)
typedef RvList(RvSdpEmail) RvSdpEmailList;
/* RvSdpEmailList* rvSdpEmailListConstruct(RvSdpEmailList *x); */
#define rvSdpEmailListConstructA rvListConstruct(RvSdpEmail)
#define rvSdpEmailListConstructCopy rvListConstructCopy(RvSdpEmail)
#define rvSdpEmailListDestruct rvListDestruct(RvSdpEmail)
#define rvSdpEmailListCopy rvListCopy(RvSdpEmail)
#define rvSdpEmailListEqual rvListEqual(RvSdpEmail)
#define rvSdpEmailListAdd rvListPushBack(RvSdpEmail)
#define rvSdpEmailListClear rvListClear(RvSdpEmail)
#define rvSdpEmailListGetSize rvListSize
#define rvSdpEmailListGetElem rvListAt(RvSdpEmail)
RV_SDP_DECLSPEC RvSdpEmail* rvSdpEmailConstructN(RvSdpEmail* x,
const char* address,size_t alen,
const char* text,size_t tlen,
RvAlloc* alloc);
#define rvSdpEmailConstructA(x,a,t,alloc) rvSdpEmailConstructN(x,a,strlen(a),t,strlen(t),alloc)
#define rvSdpEmailConstruct(x,a,t) rvSdpEmailConstructA(x,a,t,&rvDefaultAlloc)
RV_SDP_DECLSPEC RvSdpEmail* rvSdpEmailConstructCopyA(RvSdpEmail *d,const RvSdpEmail *s,RvAlloc* alloc);
RV_SDP_DECLSPEC RvSdpEmail* rvSdpEmailConstructCopy(RvSdpEmail *d,const RvSdpEmail *s);
RV_SDP_DECLSPEC void rvSdpEmailDestruct(RvSdpEmail *x);
RV_SDP_DECLSPEC RvSdpEmail* rvSdpEmailCopy(RvSdpEmail *d,const RvSdpEmail *s);
/*void rvSdpEmailSetAddress(RvSdpEmail* x,const char* addr);*/
#define rvSdpEmailSetAddress(x,addr) rvSdpStringAssign(&(x)->address,addr)
/*const char* rvSdpEmailGetAddress(const RvSdpEmail* x);*/
#define rvSdpEmailGetAddress(x) rvSdpStringGetData(&(x)->address)
/*void rvSdpEmailSetText(RvSdpEmail* x,const char* text);*/
#define rvSdpEmailSetText(x,t) rvSdpStringAssign(&(x)->text,t)
/*const char* rvSdpEmailGetText(const RvSdpEmail* x);*/
#define rvSdpEmailGetText(x) rvSdpStringGetData(&(x)->text)
#define RvSdpEmailConstructCopy rvSdpEmailConstructCopyA
#define RvSdpEmailCopy rvSdpEmailCopy
#define RvSdpEmailDestruct rvSdpEmailDestruct
#define RvSdpEmailEqual(d,s) rvSdpMemEqual(d,s,RvSdpEmail)
/************** Phone fields ******************************/
typedef struct RvSdpPhone_{
RvString phone_number;
RvString text;
} RvSdpPhone;
rvDeclareList(RvSdpPhone)
typedef RvList(RvSdpPhone) RvSdpPhoneList;
/* RvSdpPhoneList* rvSdpPhoneListConstruct(RvSdpPhoneList *x); */
#define rvSdpPhoneListConstructA rvListConstruct(RvSdpPhone)
#define rvSdpPhoneListConstructCopy rvListConstructCopy(RvSdpPhone)
#define rvSdpPhoneListDestruct rvListDestruct(RvSdpPhone)
#define rvSdpPhoneListCopy rvListCopy(RvSdpPhone)
#define rvSdpPhoneListEqual rvListEqual(RvSdpPhone)
#define rvSdpPhoneListAdd rvListPushBack(RvSdpPhone)
#define rvSdpPhoneListClear rvListClear(RvSdpPhone)
#define rvSdpPhoneListGetSize rvListSize
#define rvSdpPhoneListGetElem rvListAt(RvSdpPhone)
RV_SDP_DECLSPEC RvSdpPhone* rvSdpPhoneConstructN(RvSdpPhone* x,
const char* number,size_t nlen,
const char* text,size_t tlen,
RvAlloc* alloc);
#define rvSdpPhoneConstructA(x,n,t,alloc) rvSdpPhoneConstructN(x,n,strlen(n),t,strlen(t),alloc)
#define rvSdpPhoneConstruct(x,n,t) rvSdpPhoneConstructA(x,n,t,&rvDefaultAlloc)
RV_SDP_DECLSPEC RvSdpPhone* rvSdpPhoneConstructCopyA(RvSdpPhone *d,const RvSdpPhone *s,RvAlloc* alloc);
RV_SDP_DECLSPEC RvSdpPhone* rvSdpPhoneConstructCopy(RvSdpPhone *d,const RvSdpPhone *s);
RV_SDP_DECLSPEC void rvSdpPhoneDestruct(RvSdpPhone *x);
RV_SDP_DECLSPEC RvSdpPhone* rvSdpPhoneCopy(RvSdpPhone *d,const RvSdpPhone *s);
/*void rvSdpPhoneSetNumber(RvSdpPhone* x,const char* number);*/
#define rvSdpPhoneSetNumber(x,number) rvSdpStringAssign(&(x)->phone_number,number)
/*const char* rvSdpPhoneGetNumber(const RvSdpPhone* x);*/
#define rvSdpPhoneGetNumber(x) rvSdpStringGetData(&(x)->phone_number)
/*void rvSdpPhoneSetText(RvSdpPhone* x,const char* text);*/
#define rvSdpPhoneSetText(x,text) rvSdpStringAssign(&(x)->text,text)
/*const char* rvSdpPhoneGetText(const RvSdpPhone* x);*/
#define rvSdpPhoneGetText(x) rvSdpStringGetData(&(x)->text)
#define RvSdpPhoneConstructCopy rvSdpPhoneConstructCopyA
#define RvSdpPhoneDestruct rvSdpPhoneDestruct
#define RvSdpPhoneCopy rvSdpPhoneCopy
#define RvSdpPhoneEqual(d,s) rvSdpMemEqual(d,s,RvSdpPhone)
/************** Typed time fields ******************************/
typedef struct {
RvSdpTimeUnit type;
RvUint32 time;
} RvSdpTypedTime;
rvDeclareList(RvSdpTypedTime)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -