亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? writer.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/* This file is part of the iom project. * For more information, please see <http://www.interlis.ch>. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *//** @file * adapter to xml writer * @defgroup writer xml writer functions * @{ */#include <string.h>//#include <xercesc/util/TransService.hpp>#include <xercesc/framework/XMLFormatter.hpp>#include <xercesc/framework/LocalFileFormatTarget.hpp>#include <iom/iom_p.h>#include <algorithm>#include <string>/** gets the xml representaion of a consistency value. */static const XMLCh *encodeConsistency(int consistency){	const XMLCh *ret;	switch(consistency){	case IOM_INCOMPLETE:        ret=ustrings::get_INCOMPLETE();		break;    case IOM_INCONSISTENT:        ret=ustrings::get_INCONSISTENT();		break;    case IOM_ADAPTED:        ret=ustrings::get_ADAPTED();		break;    case IOM_COMPLETE:	default:        ret=0;		break;	}	return ret;}/** gets the xml representaion of a basket-kind value. */static const XMLCh *encodeBasketKind(int kind){	const XMLCh *ret;	switch(kind){	case IOM_UPDATE:        ret=ustrings::get_UPDATE();		break;	case IOM_INITIAL:        ret=ustrings::get_INITIAL();		break;    case IOM_FULL:	default:        ret=0;		break;	}	return ret;}/** gets the xml representaion of a operation value. */static const XMLCh *encodeOperation(int ops){	const XMLCh *ret;	switch(ops){	case IOM_OP_UPDATE:        ret=ustrings::get_UPDATE();		break;	case IOM_OP_DELETE:        ret=ustrings::get_DELETE();		break;    case IOM_OP_INSERT:	default:        ret=0;		break;	}	return ret;}/** writes a coord value or a coord segment. */static void writeCoord(XmlWriter &out, IomObject &obj){/*     object: COORD       C1         102.0       C2         402.0	<COORD><C1>102.0</C1><C2>402.0</C2></COORD>*/	out.startElement(tags::get_COORD(),0,0);	out.startElement(tags::get_C1(),0,0);	const XMLCh *c1=obj->getAttrPrim(tags::get_C1(),0);	out.characters(c1);	out.endElement(/*C1*/);	const XMLCh *c2=obj->getAttrPrim(tags::get_C2(),0);	if(c2){		out.startElement(tags::get_C2(),0,0);		out.characters(c2);		out.endElement(/*C2*/);		const XMLCh *c3=obj->getAttrPrim(tags::get_C3(),0);		if(c3){			out.startElement(tags::get_C3(),0,0);			out.characters(c3);			out.endElement(/*C3*/);		}	}	out.endElement(/*COORD*/);}/** writes a arc segment value. */static void writeArc(XmlWriter &out, IomObject &obj){/*     object: ARC       C1         103.0       C2         403.0       A1         104.0       A2         404.0	<COORD><C1>103.0</C1><C2>403.0</C2><A1>104.0</A1><A2>404.0</A2></COORD>*/	out.startElement(tags::get_ARC(),0,0);	out.startElement(tags::get_C1(),0,0);	const XMLCh *c1=obj->getAttrPrim(tags::get_C1(),0);	out.characters(c1);	out.endElement(/*C1*/);	const XMLCh *c2=obj->getAttrPrim(tags::get_C2(),0);	out.startElement(tags::get_C2(),0,0);	out.characters(c2);	out.endElement(/*C2*/);	const XMLCh *c3=obj->getAttrPrim(tags::get_C3(),0);	if(c3){		out.startElement(tags::get_C3(),0,0);		out.characters(c3);		out.endElement(/*C3*/);	}	const XMLCh *a1=obj->getAttrPrim(tags::get_A1(),0);	out.characters(a1);	out.endElement(/*A1*/);	const XMLCh *a2=obj->getAttrPrim(tags::get_A2(),0);	out.startElement(tags::get_A2(),0,0);	out.characters(a2);	out.endElement(/*A2*/);	const XMLCh *r=obj->getAttrPrim(tags::get_R(),0);	if(r){		out.startElement(tags::get_R(),0,0);		out.characters(r);		out.endElement(/*R*/);	}	out.endElement(/*ARC*/);}/** writes a polyline value. */void iom_file::writePolyline(XmlWriter &out, IomObject &obj,bool hasLineAttr){/*     object: POLYLINE [INCOMPLETE]       lineattr         object: Model.Topic.LineAttr           attr00             11       sequence // if incomplete; multi sequence values         object: SEGMENTS           segment             object: COORD               C1                 102.0               C2                 402.0           segment             object: ARC               C1                 103.0               C2                 403.0               A1                 104.0               A2                 404.0           segment             object: Model.SplineParam               SegmentEndPoint                 object: COORD                   C1                     103.0                   C2                     403.0               p0                 1.0               p1                 2.0		<POLYLINE>			<LINEATTR>				<Model.Topic.LineAttr>					<attr00>11</attr00>				</Model.Topic.LineAttr>			</LINEATTR>			<COORD>				<C1>101.0</C1>				<C2>401.0</C2>			</COORD>			<COORD>				<C1>102.0</C1>				<C2>402.0</C2>			</COORD>			<Model.SplineParam>				<SegmentEndPoint>					<COORD>						<C1>103.0</C1>						<C2>403.0</C2>					</COORD>				</SegmentEndPoint>				<p0>1.0</p0>				<p1>2.0</p1>			</Model.SplineParam>		</POLYLINE>*/	out.startElement(tags::get_POLYLINE(),0,0);	if(hasLineAttr){		IomObject lineattr=obj->getAttrObj(tags::get_lineattr(),0);		if(!lineattr.isNull()){			out.startElement(tags::get_LINEATTR(),0,0);			out.startElement(lineattr->getTag(),0,0);			writeAttrs(out,lineattr);			out.endElement(/*lineattr*/);			out.endElement(/*LINEATTR*/);		}	}	bool clipped=obj->getConsistency()==IOM_INCOMPLETE;	for(int sequencei=0;sequencei<obj->getAttrValueCount(tags::get_sequence());sequencei++){		if(clipped){			out.startElement(tags::get_CLIPPED(),0,0);		}else{			// an unclipped polyline should have only one sequence element			if(sequencei>0){				iom_issueerr("unclipped polyline with multi 'sequence' elements");				break;			}		}		IomObject sequence=obj->getAttrObj(tags::get_sequence(),sequencei);		for(int segmenti=0;segmenti<sequence->getAttrValueCount(tags::get_segment());segmenti++){			IomObject segment=sequence->getAttrObj(tags::get_segment(),segmenti);			if(segment->getTag()==tags::get_COORD()){				// COORD				writeCoord(out,segment);			}else if(segment->getTag()==tags::get_ARC()){				// ARC				writeArc(out,segment);			}else{				// custum line form				out.startElement(segment->getTag(),0,0);				writeAttrs(out,segment);				out.endElement(/*segment*/);			}		}		if(clipped){			out.endElement(/*CLIPPED*/);		}	}	out.endElement(/*POLYLINE*/);}/** writes a surface value. */void iom_file::writeSurface(XmlWriter &out, IomObject &obj){/*     object: MULTISURFACE [INCOMPLETE]       surface // if incomplete; multi surface values         object: SURFACE           boundary             object: BOUNDARY               polyline                 object: POLYLINE		<SURFACE>		<BOUNDARY>			<POLYLINE .../>			<POLYLINE .../>		</BOUNDARY>		<BOUNDARY>			<POLYLINE .../>			<POLYLINE .../>		</BOUNDARY>	</SURFACE>*/	out.startElement(tags::get_SURFACE(),0,0);	bool clipped=obj->getConsistency()==IOM_INCOMPLETE;	for(int surfacei=0;surfacei<obj->getAttrValueCount(tags::get_surface());surfacei++){		if(clipped){			out.startElement(tags::get_CLIPPED(),0,0);		}else{			// an unclipped surface should have only one surface element			if(surfacei>0){				iom_issueerr("unclipped surface with multi 'surface' elements");				break;			}		}		IomObject surface=obj->getAttrObj(tags::get_surface(),surfacei);		for(int boundaryi=0;boundaryi<surface->getAttrValueCount(tags::get_boundary());boundaryi++){			IomObject boundary=surface->getAttrObj(tags::get_boundary(),boundaryi);			out.startElement(tags::get_BOUNDARY(),0,0);			for(int polylinei=0;polylinei<boundary->getAttrValueCount(tags::get_polyline());polylinei++){				IomObject polyline=boundary->getAttrObj(tags::get_polyline(),polylinei);				writePolyline(out,polyline,true);			}			out.endElement(/*BOUNDARY*/);		}		if(clipped){			out.endElement(/*CLIPPED*/);		}	}	out.endElement(/*SURFACE*/);}void iom_file::writeAttr(XmlWriter &out, IomObject &obj,int attr){	int valueCount=obj->getAttrValueCount(attr);	if(valueCount>0){		const XMLCh *val=obj->getAttrPrim(attr,0);		// not a primitive?		if(!val){			IomObject child=obj->getAttrObj(attr,0);			// some special cases			if(child->getTag()==tags::get_COORD()){				// COORD				out.startElement(attr,0,0);				writeCoord(out,child);				out.endElement(/*attr*/);				if(valueCount>1){					iom_issueerr("max one COORD value allowed");				}			}else if(child->getTag()==tags::get_POLYLINE()){				// POLYLINE				out.startElement(attr,0,0);				writePolyline(out,child,false);				out.endElement(/*attr*/);				if(valueCount>1){					iom_issueerr("max one POLYLINE value allowed");				}			}else if(child->getTag()==tags::get_MULTISURFACE()){				// MULTISURFACE				out.startElement(attr,0,0);				writeSurface(out,child);				out.endElement(/*attr*/);				if(valueCount>1){					iom_issueerr("max one MULTISURFACE value allowed");				}			}else{				// normal case				const XMLCh *ref=child->getRefOid();				bool isRef= ref ? true : false;				// Reference-attribute or Role or EmbeddedLink?				if(isRef){					const XMLCh *extref=0;					const XMLCh *bid=0;					XMLCh itoabuf[40];					const XMLCh *orderpos=0;					if(ref){						if(child->getRefOrderPos()>0){							XMLString::binToText( child->getRefOrderPos(),itoabuf,sizeof(itoabuf)-1,10);							orderpos=itoabuf;						}					}					bid=child->getRefBid();					if(bid){						extref=ref;						ref=0;					}					XmlWrtAttr refAttr[]={						 XmlWrtAttr(ref      ? ustrings::get_REF()     :0, ref,true)						,XmlWrtAttr(extref   ? ustrings::get_EXTREF()  :0, extref,true)						,XmlWrtAttr(bid      ? ustrings::get_BID()     :0, bid,true)						,XmlWrtAttr(orderpos ? ustrings::get_ORDER_POS():0, orderpos)					};					out.startElement(attr,refAttr,sizeof(refAttr)/sizeof(refAttr[0]));					if(child->getAttrCount()>0){						out.startElement(child->getTag(),0,0);						writeAttrs(out,child);						out.endElement(/*child*/);					}					out.endElement(/*attr*/);					if(valueCount>1){						iom_issueerr("max one reference value allowed");					}				}else{					// struct					out.startElement(attr,0,0);					int valuei=0;					while(1){						out.startElement(child->getTag(),0,0);						writeAttrs(out,child);						out.endElement(/*child*/);						valuei++;						if(valuei>=valueCount){							break;						}						child=obj->getAttrObj(attr,valuei);					}					out.endElement(/*attr*/);				}			}		}else{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看欧美精品| 丝瓜av网站精品一区二区| 激情小说亚洲一区| 日韩精品中文字幕一区| 麻豆精品在线看| 日韩精品一区二区三区在线| 精品无码三级在线观看视频| 久久综合一区二区| 国产精品一线二线三线| 国产精品无码永久免费888| www.99精品| 一区二区三区在线免费视频| 欧美日韩mp4| 久久99精品一区二区三区三区| 久久午夜羞羞影院免费观看| 成人av资源在线| 亚洲一区二区三区视频在线| 555www色欧美视频| 国产精选一区二区三区| 亚洲日本一区二区三区| 欧美日韩亚洲综合| 国产一区二区三区免费观看| 18欧美乱大交hd1984| 欧美丰满少妇xxxxx高潮对白| 精品一区二区三区在线播放| 中文字幕在线一区二区三区| 欧美日韩一区二区三区四区五区| 毛片av一区二区| 日韩毛片精品高清免费| 4hu四虎永久在线影院成人| 国产成人精品一区二| 亚洲一区二区精品久久av| 精品国产a毛片| 色妞www精品视频| 麻豆精品在线看| 夜夜嗨av一区二区三区网页 | 91麻豆精品国产91久久久资源速度| 九九精品视频在线看| 亚洲激情欧美激情| 亚洲精品一区在线观看| 欧美视频完全免费看| 国产999精品久久| 日本va欧美va瓶| 亚洲精品一卡二卡| 国产午夜精品久久| 在线播放亚洲一区| 日本道免费精品一区二区三区| 国产一区二区91| 天天亚洲美女在线视频| 亚洲人成7777| 国产欧美综合在线观看第十页| 91精品黄色片免费大全| 91麻豆视频网站| 盗摄精品av一区二区三区| 青青草97国产精品免费观看无弹窗版| 亚洲欧洲国产日本综合| 久久久久亚洲蜜桃| 日韩一区二区影院| 欧美日本高清视频在线观看| 91亚洲精品久久久蜜桃| 福利电影一区二区| 九九国产精品视频| 捆绑紧缚一区二区三区视频| 图片区小说区区亚洲影院| 一区二区三区高清| 中文字幕欧美一| 国产精品日韩成人| 国产日韩影视精品| 精品国产人成亚洲区| 91精品国产福利| 欧美日韩和欧美的一区二区| 91久久精品一区二区| av一二三不卡影片| 97久久精品人人澡人人爽| 成人一区二区三区中文字幕| 国产精品一区二区在线播放| 精品午夜一区二区三区在线观看| 久久精品国产999大香线蕉| 男人的j进女人的j一区| 看电影不卡的网站| 精品无人码麻豆乱码1区2区 | www.久久久久久久久| 不卡欧美aaaaa| gogo大胆日本视频一区| 丁香婷婷综合色啪| www.亚洲精品| 在线一区二区三区| 欧美日本乱大交xxxxx| 91精品国产综合久久久蜜臀粉嫩| 制服.丝袜.亚洲.另类.中文| 日韩欧美另类在线| 国产喂奶挤奶一区二区三区| 国产精品私人影院| 亚洲蜜桃精久久久久久久| 亚洲一区欧美一区| 日韩电影一二三区| 国产精品正在播放| 色婷婷综合视频在线观看| 欧美一a一片一级一片| 欧美日韩成人一区| 久久影院视频免费| 亚洲欧美中日韩| 亚洲成av人片在线观看无码| 免费av网站大全久久| 国产精品99精品久久免费| 99久久久久久99| 欧美日韩精品一区二区三区四区 | 日韩一区二区三区免费看| 精品日韩在线观看| 国产精品视频看| 亚洲制服丝袜av| 美女诱惑一区二区| 成人一级黄色片| 欧美三级在线播放| 精品国产电影一区二区| 亚洲免费观看高清在线观看| 日韩不卡一区二区三区| 丁香啪啪综合成人亚洲小说 | 精彩视频一区二区三区| 97精品久久久午夜一区二区三区 | 久久成人av少妇免费| a亚洲天堂av| 欧美一区日本一区韩国一区| 国产午夜精品一区二区三区视频| 亚洲高清免费一级二级三级| 麻豆精品国产91久久久久久| 99re视频精品| 欧美精品一区二区三区很污很色的| 中文字幕制服丝袜成人av| 久久99久久99精品免视看婷婷| 在线亚洲+欧美+日本专区| 久久一日本道色综合| 亚洲国产精品一区二区久久| 国产91精品在线观看| 7777精品伊人久久久大香线蕉| 亚洲色图清纯唯美| 国产一区二区三区| 69精品人人人人| 亚洲主播在线播放| 99精品欧美一区二区三区小说| 精品免费国产一区二区三区四区| 亚洲午夜电影在线观看| 成人久久18免费网站麻豆 | 9久草视频在线视频精品| 欧美大片一区二区三区| 亚洲一区二区三区精品在线| 9色porny自拍视频一区二区| 国产欧美视频一区二区| 久久99精品久久只有精品| 欧美影院精品一区| ...xxx性欧美| 国产98色在线|日韩| 久久久噜噜噜久久人人看| 男人的天堂久久精品| 欧美日韩久久一区| 一区二区三区在线视频观看| 91麻豆免费看片| 国产精品国产三级国产aⅴ中文 | voyeur盗摄精品| 欧美国产日本视频| 国产精品一区二区在线播放| 精品欧美乱码久久久久久| 精品一区二区在线免费观看| 欧美一区二区性放荡片| 日精品一区二区| 91超碰这里只有精品国产| 亚洲妇熟xx妇色黄| 欧美日韩亚洲高清一区二区| 亚洲国产视频网站| 在线成人av影院| 麻豆国产精品官网| 久久日韩精品一区二区五区| 久国产精品韩国三级视频| 欧美精品一区二区三区在线播放| 另类小说欧美激情| 欧美精品一区二区三| 国产精品一区二区三区网站| 久久精品一区蜜桃臀影院| 国产盗摄一区二区| 中文字幕va一区二区三区| a亚洲天堂av| 亚洲专区一二三| 日韩欧美一区二区久久婷婷| 美女网站在线免费欧美精品| xvideos.蜜桃一区二区| 国产成人免费在线观看不卡| 国产精品久久网站| 色婷婷av一区二区三区gif| 亚洲国产一二三| 欧美一卡2卡3卡4卡| 国产精品亚洲а∨天堂免在线| 国产精品免费av| 在线免费不卡视频| 日韩高清国产一区在线| 国产亚洲欧美一级| 色猫猫国产区一区二在线视频| 奇米精品一区二区三区在线观看一| 精品国产免费一区二区三区四区 | 9191精品国产综合久久久久久| 国产一区二区不卡在线|