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

📄 sip.h

📁 这是关于RFC3261实现sip的源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
/* * The main header file for SIP. * * Copyright (c) 2006 * 	Riverbank Computing Limited <info@riverbankcomputing.co.uk> *  * This file is part of SIP. *  * This copy of SIP is licensed for use under the terms of the SIP License * Agreement.  See the file LICENSE for more details. *  * SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */#ifndef SIP_H#define SIP_H#include <stdio.h>#include <sys/types.h>#ifdef TRUE#undef TRUE#endif#ifdef FALSE#undef FALSE#endif#define	TRUE	1#define	FALSE	0#define	DEFAULT_OFILE_EXT	".o"	/* Default object file extension. */#define	MAX_NR_ARGS		20	/* Max. nr. args. to a function or template. *//* For convenience. */#define	classBaseName(cd)	((cd) -> iff -> name -> text)#define	classFQCName(cd)	((cd) -> iff -> fqcname)/* Handle module flags. */#define	MOD_HAS_DELAYED_DTORS	0x0001	/* It has a class with a delayed dtor. */#define	MOD_IS_ORDERED		0x0002	/* Set if the module has been ordered. */#define	hasDelayedDtors(m)	((m) -> modflags & MOD_HAS_DELAYED_DTORS)#define	setHasDelayedDtors(m)	((m) -> modflags |= MOD_HAS_DELAYED_DTORS)#define	isOrdered(m)		((m) -> modflags & MOD_IS_ORDERED)#define	setIsOrdered(m)		((m) -> modflags |= MOD_IS_ORDERED)/* Handle section flags. */#define	SECT_IS_PUBLIC		0x0001	/* It is public. */#define	SECT_IS_PROT		0x0002	/* It is protected. */#define	SECT_IS_PRIVATE		0x0004	/* It is private. */#define	SECT_IS_SLOT		0x0008	/* It is a slot. */#define	SECT_IS_SIGNAL		0x0010	/* It is a signal. */#define	SECT_MASK		0x001f	/* The mask of all flags. *//* Handle class flags. */#define	CLASS_HAS_ENUMS		0x00010000	/* It has enums. */#define	CLASS_HAS_SIGSLOTS	0x00020000	/* It has signals or slots. */#define	CLASS_IS_ABSTRACT	0x00040000	/* It is an abstract class. */#define	CLASS_HAS_SHADOW	0x00080000	/* It is has a shadow class. */#define	CLASS_IS_OPAQUE		0x00100000	/* It is opaque. */#define	CLASS_HAS_VAR_HANDLERS	0x00200000	/* It has variable handlers. */#define	CLASS_DTOR_RELEASE_GIL	0x00400000	/* The dtor releases the GIL. */#define	CLASS_IS_PROTECTED	0x00800000	/* It is protected. */#define	CLASS_IS_PROTECTED_SAV	0x01000000	/* It is protected (saved). */#define	CLASS_IS_RENAMED	0x02000000	/* It has a different Python name. */#define	CLASS_IS_INCOMPLETE	0x04000000	/* The specification is incomplete. */#define	CLASS_CAN_CREATE	0x08000000	/* It has usable ctors. */#define	CLASS_IS_EXTERNAL	0x10000000	/* It is external. */#define	CLASS_IS_DELAYED_DTOR	0x20000000	/* The dtor is delayed. */#define	hasEnums(cd)		((cd) -> classflags & CLASS_HAS_ENUMS)#define	setHasEnums(cd)		((cd) -> classflags |= CLASS_HAS_ENUMS)#define	hasSigSlots(cd)		((cd) -> classflags & CLASS_HAS_SIGSLOTS)#define	setHasSigSlots(cd)	((cd) -> classflags |= CLASS_HAS_SIGSLOTS)#define	isAbstractClass(cd)	((cd) -> classflags & CLASS_IS_ABSTRACT)#define	setIsAbstractClass(cd)	((cd) -> classflags |= CLASS_IS_ABSTRACT)#define	hasShadow(cd)		((cd) -> classflags & CLASS_HAS_SHADOW)#define	setHasShadow(cd)	((cd) -> classflags |= CLASS_HAS_SHADOW)#define	resetHasShadow(cd)	((cd) -> classflags &= ~CLASS_HAS_SHADOW)#define	isOpaque(cd)		((cd) -> classflags & CLASS_IS_OPAQUE)#define	setIsOpaque(cd)		((cd) -> classflags |= CLASS_IS_OPAQUE)#define	hasVarHandlers(cd)	((cd) -> classflags & CLASS_HAS_VAR_HANDLERS)#define	setHasVarHandlers(cd)	((cd) -> classflags |= CLASS_HAS_VAR_HANDLERS)#define	isProtectedClass(cd)	((cd) -> classflags & CLASS_IS_PROTECTED)#define	setIsProtectedClass(cd)	((cd) -> classflags |= CLASS_IS_PROTECTED)#define	resetIsProtectedClass(cd)	((cd) -> classflags &= ~CLASS_IS_PROTECTED)#define	wasProtectedClass(cd)	((cd) -> classflags & CLASS_IS_PROTECTED_SAV)#define	setWasProtectedClass(cd)	((cd) -> classflags |= CLASS_IS_PROTECTED_SAV)#define	resetWasProtectedClass(cd)	((cd) -> classflags &= ~CLASS_IS_PROTECTED_SAV)#define	isReleaseGILDtor(c)	((cd) -> classflags & CLASS_DTOR_RELEASE_GIL)#define	setIsReleaseGILDtor(c)	((cd) -> classflags |= CLASS_DTOR_RELEASE_GIL)#define	isRenamedClass(cd)	((cd) -> classflags & CLASS_IS_RENAMED)#define	setIsRenamedClass(cd)	((cd) -> classflags |= CLASS_IS_RENAMED)#define	isIncomplete(cd)	((cd) -> classflags & CLASS_IS_INCOMPLETE)#define	setIsIncomplete(cd)	((cd) -> classflags |= CLASS_IS_INCOMPLETE)#define	canCreate(cd)		((cd) -> classflags & CLASS_CAN_CREATE)#define	setCanCreate(cd)	((cd) -> classflags |= CLASS_CAN_CREATE)#define	resetCanCreate(cd)	((cd) -> classflags &= ~CLASS_CAN_CREATE)#define	isExternal(cd)		((cd) -> classflags & CLASS_IS_EXTERNAL)#define	setIsExternal(cd)	((cd) -> classflags |= CLASS_IS_EXTERNAL)#define	isDelayedDtor(cd)	((cd) -> classflags & CLASS_IS_DELAYED_DTOR)#define	setIsDelayedDtor(cd)	((cd) -> classflags |= CLASS_IS_DELAYED_DTOR)#define	isPublicDtor(cd)	((cd) -> classflags & SECT_IS_PUBLIC)#define	setIsPublicDtor(cd)	((cd) -> classflags |= SECT_IS_PUBLIC)#define	isProtectedDtor(cd)	((cd) -> classflags & SECT_IS_PROT)#define	isPrivateDtor(cd)	((cd) -> classflags & SECT_IS_PRIVATE)#define	isDtor(cd)		((cd) -> classflags & (SECT_IS_PUBLIC | SECT_IS_PROT | SECT_IS_PRIVATE))/* Handle ctor flags. */#define	CTOR_RELEASE_GIL	0x00010000	/* The ctor releases the GIL. */#define	CTOR_EXPLICIT		0x00020000	/* The ctor is explicit. */#define	CTOR_CAST		0x00040000	/* The ctor is a cast. */#define	isPublicCtor(c)		((c) -> ctorflags & SECT_IS_PUBLIC)#define	setIsPublicCtor(c)	((c) -> ctorflags |= SECT_IS_PUBLIC)#define	isProtectedCtor(c)	((c) -> ctorflags & SECT_IS_PROT)#define	setIsProtectedCtor(c)	((c) -> ctorflags |= SECT_IS_PROT)#define	isPrivateCtor(c)	((c) -> ctorflags & SECT_IS_PRIVATE)#define	setIsPrivateCtor(c)	((c) -> ctorflags |= SECT_IS_PRIVATE)#define	isReleaseGILCtor(c)	((c) -> ctorflags & CTOR_RELEASE_GIL)#define	setIsReleaseGILCtor(c)	((c) -> ctorflags |= CTOR_RELEASE_GIL)#define	isExplicitCtor(c)	((c) -> ctorflags & CTOR_EXPLICIT)#define	setIsExplicitCtor(c)	((c) -> ctorflags |= CTOR_EXPLICIT)#define	isCastCtor(c)		((c) -> ctorflags & CTOR_CAST)/* Handle member flags. */#define	MEMBR_NUMERIC		0x0001		/* It is a numeric slot. */#define	isNumeric(m)		((m) -> memberflags & MEMBR_NUMERIC)#define	setIsNumeric(m)		((m) -> memberflags |= MEMBR_NUMERIC)/* Handle enum flags. */#define	ENUM_WAS_PROT		0x00010000	/* It was defined as protected. */#define	ENUM_IS_RENAMED		0x00020000	/* It has been renamed. */#define	isProtectedEnum(e)	((e) -> enumflags & SECT_IS_PROT)#define	setIsProtectedEnum(e)	((e) -> enumflags |= SECT_IS_PROT)#define	resetIsProtectedEnum(e)	((e) -> enumflags &= ~SECT_IS_PROT)#define	wasProtectedEnum(e)	((e) -> enumflags & ENUM_WAS_PROT)#define	setWasProtectedEnum(e)	((e) -> enumflags |= ENUM_WAS_PROT)#define	resetWasProtectedEnum(e)	((e) -> enumflags &= ~ENUM_WAS_PROT)#define	isRenamedEnum(e)	((e) -> enumflags & ENUM_IS_RENAMED)#define	setIsRenamedEnum(e)	((e) -> enumflags |= ENUM_IS_RENAMED)/* Handle hierarchy flags. */#define	HIER_IS_DUPLICATE	0x0001		/* It is a super class duplicate. */#define	HIER_HAS_DUPLICATE	0x0002		/* It has a super class duplicate. */#define	isDuplicateSuper(m)	((m) -> mroflags & HIER_IS_DUPLICATE)#define	setIsDuplicateSuper(m)	((m) -> mroflags |= HIER_IS_DUPLICATE)#define	hasDuplicateSuper(m)	((m) -> mroflags & HIER_HAS_DUPLICATE)#define	setHasDuplicateSuper(m)	((m) -> mroflags |= HIER_HAS_DUPLICATE)/* Handle overload flags. */#define	OVER_IS_VIRTUAL		0x00010000	/* It is virtual. */#define	OVER_IS_ABSTRACT	0x00020000	/* It is abstract. */#define	OVER_IS_CONST		0x00040000	/* It is a const function. */#define	OVER_IS_STATIC		0x00080000	/* It is a static function. */#define	OVER_IS_AUTOGEN		0x00100000	/* It is auto-generated. */#define	OVER_IS_NEW_THREAD	0x00200000	/* It is in a new thread. */#define	OVER_IS_FACTORY		0x00400000	/* It is a factory method. */#define	OVER_IS_FACTORY		0x00400000	/* It is a factory method. */#define	OVER_XFERRED_BACK	0x00800000	/* Ownership is transferred back. */#define	OVER_RELEASE_GIL	0x01000000	/* The function releases the GIL. */#define	OVER_IS_VIRTUAL_REIMP	0x02000000	/* It is a re-implementation of a virtual. */#define	isPublic(o)		((o) -> overflags & SECT_IS_PUBLIC)#define	setIsPublic(o)		((o) -> overflags |= SECT_IS_PUBLIC)#define	isProtected(o)		((o) -> overflags & SECT_IS_PROT)#define	setIsProtected(o)	((o) -> overflags |= SECT_IS_PROT)#define	isPrivate(o)		((o) -> overflags & SECT_IS_PRIVATE)#define	setIsPrivate(o)		((o) -> overflags |= SECT_IS_PRIVATE)#define	isSlot(o)		((o) -> overflags & SECT_IS_SLOT)#define	setIsSlot(o)		((o) -> overflags |= SECT_IS_SLOT)#define	isSignal(o)		((o) -> overflags & SECT_IS_SIGNAL)#define	setIsSignal(o)		((o) -> overflags |= SECT_IS_SIGNAL)#define	isVirtual(o)		((o) -> overflags & OVER_IS_VIRTUAL)#define	setIsVirtual(o)		((o) -> overflags |= OVER_IS_VIRTUAL)#define	isAbstract(o)		((o) -> overflags & OVER_IS_ABSTRACT)#define	setIsAbstract(o)	((o) -> overflags |= OVER_IS_ABSTRACT)#define	isConst(o)		((o) -> overflags & OVER_IS_CONST)#define	setIsConst(o)		((o) -> overflags |= OVER_IS_CONST)#define	isStatic(o)		((o) -> overflags & OVER_IS_STATIC)#define	setIsStatic(o)		((o) -> overflags |= OVER_IS_STATIC)#define	isAutoGen(o)		((o) -> overflags & OVER_IS_AUTOGEN)#define	setIsAutoGen(o)		((o) -> overflags |= OVER_IS_AUTOGEN)#define	resetIsAutoGen(o)	((o) -> overflags &= ~OVER_IS_AUTOGEN)#define	isNewThread(o)		((o) -> overflags & OVER_IS_NEW_THREAD)#define	setIsNewThread(o)	((o) -> overflags |= OVER_IS_NEW_THREAD)#define	isFactory(o)		((o) -> overflags & OVER_IS_FACTORY)#define	setIsFactory(o)		((o) -> overflags |= OVER_IS_FACTORY)#define isResultTransferredBack(o)	((o) -> overflags & OVER_XFERRED_BACK)#define setIsResultTransferredBack(o)	((o) -> overflags |= OVER_XFERRED_BACK)#define	isReleaseGIL(o)		((o) -> overflags & OVER_RELEASE_GIL)#define	setIsReleaseGIL(o)	((o) -> overflags |= OVER_RELEASE_GIL)#define	isVirtualReimp(o)	((o) -> overflags & OVER_IS_VIRTUAL_REIMP)#define	setIsVirtualReimp(o)	((o) -> overflags |= OVER_IS_VIRTUAL_REIMP)/* Handle variable flags. */#define	VAR_IS_STATIC		0x01	/* It is a static variable. */#define	VAR_NEEDS_HANDLER	0x02	/* It the variable needs a handler. */#define	isStaticVar(v)		((v) -> varflags & VAR_IS_STATIC)#define	setIsStaticVar(v)	((v) -> varflags |= VAR_IS_STATIC)#define	needsHandler(v)		((v) -> varflags & VAR_NEEDS_HANDLER)#define	setNeedsHandler(v)	((v) -> varflags |= VAR_NEEDS_HANDLER)/* Handle argument flags. */#define	ARG_IS_REF		0x0001	/* It is a reference. */#define	ARG_IS_CONST		0x0002	/* It is a const. */#define	ARG_XFERRED		0x0004	/* Ownership is transferred. */#define	ARG_THIS_XFERRED	0x0008	/* Ownership of this is transferred. */#define	ARG_XFERRED_BACK	0x0010	/* Ownership is transferred back. */#define	ARG_ARRAY		0x0020	/* Used as an array. */#define	ARG_ARRAY_SIZE		0x0040	/* Used as an array size. */#define	ARG_ALLOW_NONE		0x0080	/* Allow None as a value. */#define	ARG_GET_WRAPPER		0x0100	/* Get the wrapper object. */#define	ARG_IN			0x0200	/* It passes an argument. */#define	ARG_OUT			0x0400	/* It returns a result. */#define	ARG_CONSTRAINED		0x0800	/* Suppress type conversion. */#define	isReference(a)		((a) -> argflags & ARG_IS_REF)#define	setIsReference(a)	((a) -> argflags |= ARG_IS_REF)#define	resetIsReference(a)	((a) -> argflags &= ~ARG_IS_REF)#define	isConstArg(a)		((a) -> argflags & ARG_IS_CONST)#define	setIsConstArg(a)	((a) -> argflags |= ARG_IS_CONST)#define	resetIsConstArg(a)	((a) -> argflags &= ~ARG_IS_CONST)#define	isTransferred(a)	((a) -> argflags & ARG_XFERRED)#define	setIsTransferred(a)	((a) -> argflags |= ARG_XFERRED)#define	isThisTransferred(a)	((a) -> argflags & ARG_THIS_XFERRED)#define	setIsThisTransferred(a)	((a) -> argflags |= ARG_THIS_XFERRED)#define	isTransferredBack(a)	((a) -> argflags & ARG_XFERRED_BACK)#define	setIsTransferredBack(a)	((a) -> argflags |= ARG_XFERRED_BACK)#define	isArray(a)		((a) -> argflags & ARG_ARRAY)#define	setArray(a)		((a) -> argflags |= ARG_ARRAY)#define	isArraySize(a)		((a) -> argflags & ARG_ARRAY_SIZE)#define	setArraySize(a)		((a) -> argflags |= ARG_ARRAY_SIZE)#define	isAllowNone(a)		((a) -> argflags & ARG_ALLOW_NONE)#define	setAllowNone(a)		((a) -> argflags |= ARG_ALLOW_NONE)#define	isGetWrapper(a)		((a) -> argflags & ARG_GET_WRAPPER)#define	setGetWrapper(a)	((a) -> argflags |= ARG_GET_WRAPPER)#define	isInArg(a)		((a) -> argflags & ARG_IN)#define	setIsInArg(a)		((a) -> argflags |= ARG_IN)#define	isOutArg(a)		((a) -> argflags & ARG_OUT)#define	setIsOutArg(a)		((a) -> argflags |= ARG_OUT)#define	isConstrained(a)	((a) -> argflags & ARG_CONSTRAINED)#define	setIsConstrained(a)	((a) -> argflags |= ARG_CONSTRAINED)#define	resetIsConstrained(a)	((a) -> argflags &= ~ARG_CONSTRAINED)/* Handle name flags. */#define	NAME_IS_USED		0x01	/* It is used in the main module. */#define	NAME_IS_CLASS		0x02	/* It is the name of a class. */#define	isUsedName(n)		((n) -> nameflags & NAME_IS_USED)#define	setIsUsedName(n)	((n) -> nameflags |= NAME_IS_USED)#define	resetIsUsedName(n)	((n) -> nameflags &= ~NAME_IS_USED)#define	isClassName(n)		((n) -> nameflags & NAME_IS_CLASS)#define	setIsClassName(n)	((n) -> nameflags |= NAME_IS_CLASS)#define	resetIsClassName(n)	((n) -> nameflags &= ~NAME_IS_CLASS)/* Handle virtual handler flags. */#define	VH_IS_DUPLICATE		0x01	/* It is a duplicate. */#define	VH_TRANSFERS		0x02	/* It transfers ownership of the result. */#define	isDuplicateVH(vh)	((vh) -> vhflags & VH_IS_DUPLICATE)#define	setIsDuplicateVH(vh)	((vh) -> vhflags |= VH_IS_DUPLICATE)#define	resetIsDuplicateVH(vh)	((vh) -> vhflags &= ~VH_IS_DUPLICATE)#define	isTransferVH(vh)	((vh) -> vhflags & VH_TRANSFERS)#define	setIsTransferVH(vh)	((vh) -> vhflags |= VH_TRANSFERS)/* Slot types. */typedef enum {	str_slot,	unicode_slot,	int_slot,	long_slot,	float_slot,	len_slot,	contains_slot,	add_slot,	concat_slot,	sub_slot,	mul_slot,	repeat_slot,	div_slot,	mod_slot,	and_slot,	or_slot,	xor_slot,	lshift_slot,	rshift_slot,	iadd_slot,	iconcat_slot,	isub_slot,

⌨️ 快捷键说明

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