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

📄 wmlelm.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
		{
			((OPTIONELEMENT *)(pElement))->pOnpick=*ppURL;
			*ppURL=NULL;
			return TRUE;
		}
	}

	return FALSE;
}


BOOL WML_SetOnTimer (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppURL)
{
	pDecStr=pDecStr;

	if (pElement->iType==Type_CARD) 
	{
		if (((CARDELEMENT *)(pElement))->pOnTimer==NULL) 
		{
			((CARDELEMENT *)(pElement))->pOnTimer=*ppURL;

			/* ppURL MUST NOT be set to NULL here. The pointer is also 
			   used in the calling function. */
			return TRUE;
		}
	} 
	else if (pElement->iType==Type_TEMPLATE) 
	{
		if (((TEMPLATEELEMENT *)(pElement))->pOnTimer==NULL) 
		{
			((TEMPLATEELEMENT *)(pElement))->pOnTimer=*ppURL;

			/* ppURL MUST NOT be set to NULL here. The pointer is also 
			   used in the calling function. */
			return TRUE;
		}
	} 

	return FALSE;
}


BOOL WML_SetOptional (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppOptional, BOOL fOptional)
{
	BOOL fResult=fOptional;

	if (pElement->iType==Type_DO) 
	{
		if (*ppOptional!=NULL)
		{
			WCHAR* pwchTemp=XML_ConvertToString(ppOptional,pDecStr);

			if (!Convert_StringToBool(&pwchTemp,&fResult))
			{
				/* Error in conversion */
				return FALSE;
			}
		}

		((DOELEMENT *)(pElement))->fOptional=fResult;
		return TRUE;
	} 

	return FALSE;
}


BOOL WML_SetPath (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppPath)
{
	if (pElement->iType==Type_ACCESS) 
	{
		if (((ACCESSELEMENT *)(pElement))->pchPath==NULL) 
		{
			((ACCESSELEMENT *)(pElement))->pchPath=XML_ConvertToString(ppPath,pDecStr);
			return TRUE;
		}
	}

	return FALSE;
}


BOOL WML_SetScheme (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppScheme)
{
	if (pElement->iType==Type_META) 
	{
		if (((METAELEMENT *)(pElement))->pchScheme==NULL) 
		{
			((METAELEMENT *)(pElement))->pchScheme=XML_ConvertToString(ppScheme,pDecStr);
			return TRUE;
		}
	}

	return FALSE;
}


BOOL WML_SetSendReferer (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppSendRef, BOOL fSendRef)
{
	BOOL fResult=fSendRef;

	if (pElement->iType==Type_GO) 
	{
		if (*ppSendRef!=NULL)
		{
			WCHAR* pwchTemp=XML_ConvertToString(ppSendRef,pDecStr);

			if (!Convert_StringToBool(&pwchTemp,&fResult))
			{
				/* Error in conversion */
				return FALSE;
			}
		}

		((GOELEMENT *)(pElement))->fSendRef=fResult;
		return TRUE;
	} 

	return FALSE;
}


BOOL WML_SetSize (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppSize)
{
	UINT32 iSize=0;

	/* Convert size (text) to UINT32. The ELEMENTTYPE is removed
	   in the XML_ConvertToString function and the string is removed
	   in the Convert_StringToUINT32 function. */
	WCHAR* pwchSize=XML_ConvertToString(ppSize,pDecStr);

	if (Convert_StringToUINT32(&pwchSize,&iSize))
	{
		if (pElement->iType==Type_INPUT) 
		{
			if (iSize>127) 
			{
				((INPUTELEMENT *)(pElement))->iSize=-1;
			}
			else
			{
				((INPUTELEMENT *)(pElement))->iSize=(INT8)iSize;
			}
			return TRUE;
		}
	}
	return FALSE;
}


BOOL WML_SetSrc	(pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppHref)
{
	pDecStr=pDecStr;

	if (pElement->iType==Type_IMG) 
	{
		if (((IMGELEMENT *)(pElement))->pSrc==NULL) 
		{
			((IMGELEMENT *)(pElement))->pSrc=*ppHref;
			*ppHref=NULL;
			return TRUE;
		}
	} 

	return FALSE;
}


BOOL WML_SetOrdered	(pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppOrdered, BOOL fOrdered)
{
	BOOL fResult=fOrdered;

	if (pElement->iType==Type_CARD) 
	{
		if (*ppOrdered!=NULL)
		{
			WCHAR* pwchTemp=XML_ConvertToString(ppOrdered,pDecStr);

			if (!Convert_StringToBool(&pwchTemp,&fResult))
			{
				/* Error in conversion */
				return FALSE;
			}
		}

		((CARDELEMENT *)(pElement))->fOrdered=fResult;
		return TRUE;
	} 

	return FALSE;
}


BOOL WML_SetTabIndex (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppTabIndex)
{		
	UINT8 iTabIndex=0;

	/* Convert tabindex (text) to UINT8. The ELEMENTTYPE is removed
	   in the XML_ConvertToString function and the string is removed
	   in the ConvertNumber function. */
	WCHAR* pwchTabIndex=XML_ConvertToString(ppTabIndex,pDecStr);

	if (Convert_StringToUINT8(&pwchTabIndex,&iTabIndex))
	{
		if (pElement->iType==Type_INPUT) 
		{
			((INPUTELEMENT *)(pElement))->iTabIndex=iTabIndex;
			return TRUE;
		} 
		else if (pElement->iType==Type_SELECT) 
		{
			((SELECTELEMENT *)(pElement))->iTabIndex=iTabIndex;
			return TRUE;
		}
	}
	return FALSE;
}


BOOL WML_SetTitle (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppTitle)
{
	pDecStr=pDecStr;

	switch (pElement->iType)
	{
	case Type_A:
	case Type_ANCHOR:
		if (((AELEMENT *)(pElement))->pTitle==NULL) 
		{
			((AELEMENT *)(pElement))->pTitle=*ppTitle;
			*ppTitle=NULL;
			return TRUE;
		}
		break;
	case Type_CARD:
		if (((CARDELEMENT *)(pElement))->pTitle==NULL) 
		{
			((CARDELEMENT *)(pElement))->pTitle=*ppTitle;
			*ppTitle=NULL;
			return TRUE;
		}
		break;
	case Type_FIELDSET:
		if (((FIELDSETELEMENT *)(pElement))->pTitle==NULL) 
		{
			((FIELDSETELEMENT *)(pElement))->pTitle=*ppTitle;
			*ppTitle=NULL;
			return TRUE;
		}
		break;
	case Type_INPUT:
		if (((INPUTELEMENT *)(pElement))->pTitle==NULL) 
		{
			((INPUTELEMENT *)(pElement))->pTitle=*ppTitle;
			*ppTitle=NULL;
			return TRUE;
		}
		break;
	case Type_OPTGROUP:
		if (((OPTGROUPELEMENT *)(pElement))->pTitle==NULL) 
		{
			((OPTGROUPELEMENT *)(pElement))->pTitle=*ppTitle;
			*ppTitle=NULL;
			return TRUE;
		}
		break;
	case Type_OPTION:
		if (((OPTIONELEMENT *)(pElement))->pTitle==NULL) 
		{
			((OPTIONELEMENT *)(pElement))->pTitle=*ppTitle;
			*ppTitle=NULL;
			return TRUE;
		}
		break;
	case Type_SELECT:
		if (((SELECTELEMENT *)(pElement))->pTitle==NULL) 
		{
			((SELECTELEMENT *)(pElement))->pTitle=*ppTitle;
			*ppTitle=NULL;
			return TRUE;
		}
		break;
	case Type_TABLE:
		if (((TABLEELEMENT *)(pElement))->pTitle==NULL) 
		{
			((TABLEELEMENT *)(pElement))->pTitle=*ppTitle;
			*ppTitle=NULL;
			return TRUE;
		}
		break;
	}

	return FALSE;
}


BOOL WML_SetType (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppType, BOOL fWTA)
{
	INT8 iType=DEF_TYPE_UNKNOWN;
	WCHAR* pwchType=XML_ConvertToString(ppType,pDecStr);

	fWTA=fWTA;

	switch (pElement->iType)
	{
	case Type_DO:
		if (pwchType!=NULL)
		{
			/* Remove old type (default value) */
			DEALLOC(&((DOELEMENT*)(pElement))->pchType);

			((DOELEMENT*)(pElement))->pchType=pwchType;
			return TRUE;
		} 
		break;

	case Type_INPUT:
		/* Only predefined events -> convert to integer */
		iType=WML_ConvertInputToInt(&pwchType);

		if (iType!=DEF_TYPE_UNKNOWN)
		{
			((INPUTELEMENT*)(pElement))->iInputType=iType;
			return TRUE;
		}
		break;
	case Type_ONEVENT:
		/* Check WTA events if WTA enabled AND the user agent
		   is a WTA user agent */
		#ifdef CONFIG_WTA
		if (fWTA)
		{
			/* Convert WTA event */
			iType=WTA_ConvertEventToInt(pwchType);

			/* The function WTA_ConvertEventToInt returns 
			   DEF_TYPE_UNKNOWN if the string was not a WTA event.
			   In this case the WML_ConvertTypeToInt should be called.
			   Otherwise the string should be deleted. */
		}
		#endif

		/* Only predefined events -> convert to integer */
		if (iType==DEF_TYPE_UNKNOWN)
		{
			iType=WML_ConvertEventToInt(&pwchType);
		}

		if (iType!=DEF_TYPE_UNKNOWN)
		{
			((ONEVENTELEMENT *)(pElement))->iEventType=iType;
			DEALLOC(&pwchType);
			return TRUE;
		}
	}

	/* Delete string pchType */
	DEALLOC(&pwchType);

	return FALSE;
}


BOOL WML_SetValue (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppValue)
{
	pDecStr=pDecStr;

	switch (pElement->iType)
	{
	case Type_INPUT:
		if (((INPUTELEMENT *)(pElement))->pValue==NULL) 
		{
			((INPUTELEMENT *)(pElement))->pValue=*ppValue;
			*ppValue=NULL;
			return TRUE;
		}
	case Type_OPTION:
		if (((OPTIONELEMENT *)(pElement))->pValue==NULL) 
		{
			((OPTIONELEMENT *)(pElement))->pValue=*ppValue;
			*ppValue=NULL;
			return TRUE;
		}
	case Type_POSTFIELD:
		if (((POSTFIELDELEMENT *)(pElement))->pValue==NULL) 
		{
			((POSTFIELDELEMENT *)(pElement))->pValue=*ppValue;
			*ppValue=NULL;
			return TRUE;
		}
	case Type_SELECT:
		if (((SELECTELEMENT *)(pElement))->pValue==NULL) 
		{
			((SELECTELEMENT *)(pElement))->pValue=*ppValue;
			*ppValue=NULL;
			return TRUE;
		}
	case Type_SETVAR:
		if (((SETVARELEMENT *)(pElement))->pValue==NULL) 
		{
			((SETVARELEMENT *)(pElement))->pValue=*ppValue;
			*ppValue=NULL;
			return TRUE;
		}
	case Type_TIMER:
		if (((TIMERELEMENT *)(pElement))->pValue==NULL) 
		{
			((TIMERELEMENT *)(pElement))->pValue=*ppValue;
			*ppValue=NULL;
			return TRUE;
		}
	}
	return FALSE;
}


BOOL WML_SetVSpace (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppVSpace)
{
	UINT8 iVSpace=0;
	BOOL fIsPercent=FALSE;

	/* Convert VSpace (text) to UINT8. The ELEMENTTYPE is removed
	   in the XML_ConvertToString function and the string is removed
	   in the Convert_StringToUINT8percent function. */
	WCHAR* pwchVSpace=XML_ConvertToString(ppVSpace,pDecStr);

	if (Convert_StringToUINT8percent(&pwchVSpace,&iVSpace,&fIsPercent))
	{
		if (pElement->iType==Type_IMG)
		{
			if (fIsPercent)
			{
				((IMGELEMENT *)(pElement))->iIsPercent|=VSPACE_IS_PERCENT;
			}

			((IMGELEMENT *)(pElement))->iVSpace=iVSpace;
			return TRUE;
		}
	}
	return FALSE;
}


BOOL WML_SetWidth (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppWidth)
{
	UINT16 iWidth=0;
	BOOL fIsPercent=FALSE;

	/* Convert Width (text) to UINT16. The ELEMENTTYPE is removed
	   in the XML_ConvertToString function and the string is removed
	   in the Convert_StringToUINT16percent function. */
	WCHAR* pwchWidth=XML_ConvertToString(ppWidth,pDecStr);

	if (Convert_StringToUINT16percent(&pwchWidth,&iWidth,&fIsPercent))
	{
		if (pElement->iType==Type_IMG) 
		{
			if (fIsPercent)
			{
				((IMGELEMENT *)(pElement))->iIsPercent|=WIDTH_IS_PERCENT;
			}
			
			((IMGELEMENT *)(pElement))->iWidth=iWidth;
			return TRUE;
		}
	}
	return FALSE;
}


BOOL WML_SetXmllang (pDECSTR pDecStr, pELEMENTTYPE pElement, pELEMENTTYPE* ppXmllang)
{
	WCHAR* pwchLang=XML_ConvertToString(ppXmllang,pDecStr);

	switch (pElement->iType)
	{
	case Type_WML:
		if (((WMLELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((WMLELEMENT*)(pElement))->pwchXmlLang=pwchLang;
			return TRUE;
		}
	case Type_A:
		if (((AELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((AELEMENT*)(pElement))->pwchXmlLang=pwchLang;
			return TRUE;
		}
		break;
	case Type_ANCHOR:
		if (((ANCHORELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((ANCHORELEMENT*)(pElement))->pwchXmlLang=pwchLang;
			return TRUE;
		}
		break;
	case Type_BR:
		/* This attribute is only only allowed in this element
	       if the document is 1.1 or older. */
		if (pDecStr->iVersion<=WML_VERSION_1_1)
		{
			if (((BRELEMENT*)(pElement))->pwchXmlLang==NULL) 
			{
				((BRELEMENT*)(pElement))->pwchXmlLang=pwchLang;
				return TRUE;
			}
		}
		break;
	case Type_B:
	case Type_BIG:
	case Type_EM:
	case Type_I:
	case Type_SMALL:
	case Type_STRONG:
	case Type_U:
		if (((EMPHELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((EMPHELEMENT*)(pElement))->pwchXmlLang=pwchLang;
			return TRUE;
		}
		break;
	case Type_CARD: 
		if (((CARDELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((CARDELEMENT*)(pElement))->pwchXmlLang=pwchLang;
			return TRUE;
		}
		break;
	case Type_DO:
		if (((DOELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((DOELEMENT*)(pElement))->pwchXmlLang=pwchLang;
			return TRUE;
		}
		break;
	case Type_FIELDSET:
		if (((FIELDSETELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((FIELDSETELEMENT*)(pElement))->pwchXmlLang=pwchLang;
			return TRUE;
		}
		break;
	case Type_IMG:
		if (((IMGELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((IMGELEMENT*)(pElement))->pwchXmlLang=pwchLang;
			return TRUE;
		}
		break;
	case Type_INPUT:
		if (((INPUTELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((INPUTELEMENT*)(pElement))->pwchXmlLang=pwchLang;
			return TRUE;
		}
		break;
	case Type_OPTGROUP:
		if (((OPTGROUPELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((OPTGROUPELEMENT*)(pElement))->pwchXmlLang=pwchLang;
			return TRUE;
		}
		break;
	case Type_OPTION:
		if (((OPTIONELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((OPTIONELEMENT*)(pElement))->pwchXmlLang=pwchLang;
			return TRUE;
		}
		break;
	case Type_P: 
		if (((PELEMENT*)(pElement))->pwchXmlLang==NULL) 
		{
			((PELEMENT*)(pElement))->pwchXmlLang=p

⌨️ 快捷键说明

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