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

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

?? iom_object.cpp

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? CPP
字號:
/* 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 * implementation of object object * @defgroup object object level functions * @{ */#include <assert.h>#include <iom/iom_p.h>/** * release handle */extern "C" int iom_releaseobject(IOM_OBJECT object){	if(!object->freeRef()){		delete object;	}	return 0;}// Objekt l鰏chenextern "C" int iom_deleteobject(IOM_OBJECT object);/** gets the tag of this object. * The return value is valid until iom_close or iom_setclass. */extern "C" IOM_TAG iom_getobjecttag(IOM_OBJECT object){	return object->getTag_c();}/** sets the tag of this object. */extern "C" void iom_setobjecttag(IOM_OBJECT object,IOM_TAG tag){	object->setTag(ParserHandler::getTagId(tag));}/** gets the OID of this object. * The return value is valid until iom_close or iom_setobjectoid. */extern "C" IOM_OID iom_getobjectoid(IOM_OBJECT object){	return object->getOid_c();}/** sets the OID of this object. */extern "C" void iom_setobjectoid(IOM_OBJECT object,IOM_OID oid){	object->setOid(X(oid));}/** get xmlfile line number of a object. */extern "C" int iom_getobjectline(IOM_OBJECT obj){	return obj->getXMLLineNumber();}/** get xmlfile column number of a object. */extern "C" int iom_getobjectcol(IOM_OBJECT obj){	return obj->getXMLColumnNumber();}/** gets the oid of the referenced object or 0 if this is not a reference. */extern "C" IOM_OID iom_getobjectrefoid(IOM_OBJECT object){	return object->getRefOid_c();}/** sets the oid of the referenced object. */extern "C" void iom_setobjectrefoid(IOM_OBJECT object,IOM_OID refoid){	object->setRefOid(X(refoid));}/** get the bid of the referenced object or 0 if this is not a reference *  or returns 0 if the referenced object is in the same basket. */extern "C" IOM_OID iom_getobjectrefbid(IOM_OBJECT object){	return object->getRefBid_c();}/** sets the bid of the referenced object. */extern "C" void iom_setobjectrefbid(IOM_OBJECT object,IOM_OID refbid){	object->setRefBid(X(refbid));}/** gets the ORDER_POS of the referenced object.*/extern "C" unsigned int iom_getobjectreforderpos(IOM_OBJECT object){	return object->getRefOrderPos();}/** sets the ORDER_POS of the referenced object.*/extern "C" void iom_setobjectreforderpos(IOM_OBJECT object,unsigned int orderPos){	object->setRefOrderPos(orderPos);}/** gets the operation-mode of an object. */extern "C" int iom_getobjectoperation(IOM_OBJECT object){	return object->getOperation();}/** sets the operation-mode of an object. */extern "C" void iom_setobjectoperation(IOM_OBJECT object,int operation){	object->setOperation(operation);}/** gets the consistency of an object. */extern "C" int iom_getobjectconsistency(IOM_OBJECT object){	return object->getConsistency();}/** sets the consistency of an object. */extern "C" void iom_setobjectconsistency(IOM_OBJECT object,int consistency){	object->setConsistency(consistency);}/** @} */iom_object::iom_object()	:useCount(0)	, basket(0)	,consistency(IOM_COMPLETE)	,operation(IOM_OP_INSERT)	,tag(0)	,tag_c(0)	,xmlLine(0)	,xmlCol(0)	,oid_w(0)	,oid_c(0)	,bid_w(0)	,bid_c(0)	,refOid_w(0)	,refOid_c(0)	,refBid_w(0)	,refBid_c(0)	, refOrderPos(0){}iom_object::~iom_object(){	if(tag_c)XMLString::release(&tag_c);	if(oid_c)XMLString::release(&oid_c);	if(oid_w)XMLString::release(&oid_w);	if(bid_c)XMLString::release(&bid_c);	if(bid_w)XMLString::release(&bid_w);	if(refOid_w)XMLString::release(&refOid_w);	if(refOid_c)XMLString::release(&refOid_c);	if(refBid_w)XMLString::release(&refBid_w);	if(refBid_c)XMLString::release(&refBid_c);}void iom_object::setBasket(IomBasket basket1){	basket=&(*basket1);	assert(tag!=0);}void iom_object::setTag(int tag1){	if(tag_c){		XMLString::release(&tag_c);		tag_c=0;	}	tag=tag1;	const XMLCh *const tag_w=ParserHandler::getTagName(tag);	tag_c=XMLString::transcode(tag_w);}const char *iom_object::getTag_c(){	if(!tag){		return 0;	}	if(!tag_c){		const XMLCh *const tag_w=ParserHandler::getTagName(tag);		tag_c=XMLString::transcode(tag_w);	}	return tag_c;}int iom_object::getTag(){	return tag;}void iom_object::setXMLLineNumber(int line){	xmlLine=line;}int iom_object::getXMLLineNumber(){	return xmlLine;}void iom_object::setXMLColumnNumber(int col){	xmlCol=col;}int iom_object::getXMLColumnNumber(){	return xmlCol;}/** sets the consistency of an object. */void iom_object::setConsistency(int cons){	consistency=cons;}/** gets the consistency of an object. */int iom_object::getConsistency(){	return consistency;}/** sets the operation-mode of an object. */void iom_object::setOperation(int op){	operation=op;}/** gets the operation-mode of an object. */int iom_object::getOperation(){	return operation;}void iom_object::setOid(const XMLCh *oid){	if(oid_c)XMLString::release(&oid_c);	if(oid_w)XMLString::release(&oid_w);	oid_w=XMLString::replicate(oid);}const XMLCh *iom_object::getOid(){	return oid_w;}const char *iom_object::getOid_c(){	if(!oid_w){		return 0;	}	if(!oid_c){		oid_c=XMLString::transcode(oid_w);	}	return oid_c;}void iom_object::setBid(const XMLCh *bid){	if(bid_c)XMLString::release(&bid_c);	if(bid_w)XMLString::release(&bid_w);	bid_w=XMLString::replicate(bid);}const char *iom_object::getBid_c(){	if(!bid_w){		return 0;	}	if(!bid_c){		bid_c=XMLString::transcode(bid_w);	}	return bid_c;}const XMLCh* iom_object::getBid(){	return bid_w;}/** sets the oid of the referenced object. */void iom_object::setRefOid(const XMLCh *oid){	if(refOid_c)XMLString::release(&refOid_c);	if(refOid_w)XMLString::release(&refOid_w);	refOid_w=XMLString::replicate(oid);}/** gets the oid of the referenced object. */const char *iom_object::getRefOid_c(){	if(!refOid_w){		return 0;	}	if(!refOid_c){		refOid_c=XMLString::transcode(refOid_w);	}	return refOid_c;}/** gets the oid of the referenced object. */const XMLCh *iom_object::getRefOid(){	return refOid_w;}/** sets the bid of the referenced object. */void iom_object::setRefBid(const XMLCh *bid){	if(refBid_c)XMLString::release(&refBid_c);	if(refBid_w)XMLString::release(&refBid_w);	refBid_w=XMLString::replicate(bid);}/** gets the bid of the referenced object. */const char *iom_object::getRefBid_c(){	if(!refBid_w){		return 0;	}	if(!refBid_c){		refBid_c=XMLString::transcode(refBid_w);	}	return refBid_c;}/** gets the bid of the referenced object. */const XMLCh *iom_object::getRefBid(){	return refBid_w;}/** gets ORDER_POS value, if this is a ORDERED association end. */unsigned int iom_object::getRefOrderPos(){	return refOrderPos;}/** sets ORDER_POS value, if this is a ORDERED association end. */void iom_object::setRefOrderPos(unsigned int value){	refOrderPos=value;}/** dumps all attributes to stderr. */void iom_object::dumpAttrs(){	attrValuev_type::iterator attr=attrValuev.begin();	while(attr!=attrValuev.end()){		std::cerr << attr->first << ", " << StrX(ParserHandler::getTagName(attr->first)) << std::endl;		attr++;	}}/** sets the value of a primitive type attribute. */void iom_object::parser_addAttrValue(int attrName,const XMLCh *value){	attrValuev_type::iterator attr=attrValuev.find(attrName);	int idx;	if(attr==attrValuev.end()){		// not found, add		valuev_type valuev;		idx=valuev.size();		valuev.push_back(iom_value(XMLString::replicate(value)));		attrValuev[attrName]=valuev;	}else{		// found, add		valuev_type valuev=attr->second;		idx=valuev.size();		valuev.push_back(iom_value(XMLString::replicate(value)));		attrValuev[attrName]=valuev;	}	xmleleidxv.push_back(xmlele_type(attrName,idx));}void iom_object::parser_addAttrValue(int attrName,IomObject value){	attrValuev_type::iterator attr=attrValuev.find(attrName);	int idx;	if(attr==attrValuev.end()){		// not found, add		valuev_type valuev;		idx=valuev.size();		valuev.push_back(iom_value(value));		attrValuev[attrName]=valuev;	}else{		// found, add		valuev_type valuev=attr->second;		idx=valuev.size();		valuev.push_back(iom_value(value));		attrValuev[attrName]=valuev;	}	xmleleidxv.push_back(xmlele_type(attrName,idx));}int iom_object::getXmleleCount(){	return xmleleidxv.size();}int iom_object::getXmleleAttrName(int index){	return xmleleidxv.at(index).first;}int iom_object::getXmleleValueIdx(int index){	return xmleleidxv.at(index).second;}/** sets the value of an attribute to undefined.  */void iom_object::setAttrUndefined(int attrName){	attrValuev_type::iterator attr=attrValuev.find(attrName);	if(attr==attrValuev.end()){		// not found	}else{		// found, remove		attrValuev.erase(attr); // TODO free strings	}}/** sets the value of a primitive type attribute.  *  If value==0, the attribute is set to undefined. */void iom_object::setAttrValue(int attrName,const XMLCh *value){		attrValuev_type::iterator attr=attrValuev.find(attrName);	if(attr==attrValuev.end()){		// not found, add		if(value){			valuev_type valuev;			valuev.push_back(iom_value(XMLString::replicate(value)));			attrValuev[attrName]=valuev;		}	}else{		// found, replace		if(value){			valuev_type valuev=attr->second;			valuev.clear(); // TODO free strings			valuev.push_back(iom_value(XMLString::replicate(value)));			attrValuev[attrName]=valuev;		}else{			attrValuev.erase(attr); // TODO free strings		}	}}/** gets the value of a primitive type attribute. */const XMLCh *iom_object::getAttrValue(int attrName){	attrValuev_type::iterator attr=attrValuev.find(attrName);	if(attr==attrValuev.end()){		// not found		return 0;	}	// found	valuev_type valuev=attr->second;	iom_value value=valuev.at(0);	return value.getStr();}int iom_object::getAttrCount(){	return attrValuev.size();}int iom_object::getAttrName(int index){	attrValuev_type::iterator attri=attrValuev.begin();	int i=0;	while(attri!=attrValuev.end() && i<=index){		if(i==index){			return attri->first;		}		attri++;		i++;	}	return 0;}int iom_object::getAttrValueCount(int attrName){	attrValuev_type::iterator attr=attrValuev.find(attrName);	if(attr==attrValuev.end()){		// not found		return 0;	}	// found	valuev_type valuev=attr->second;	return valuev.size();}const XMLCh *iom_object::getAttrPrim(int attrName,int index){	attrValuev_type::iterator attr=attrValuev.find(attrName);	if(attr==attrValuev.end()){		// not found		return 0;	}	// found	valuev_type valuev=attr->second;	iom_value value=valuev.at(index);	return value.getStr();}/** get value at given index. */IomObject iom_object::getAttrObj(int attrName,int index){	attrValuev_type::iterator attr=attrValuev.find(attrName);	if(attr==attrValuev.end()){		// not found		return 0;	}	// found	valuev_type valuev=attr->second;	iom_value value=valuev.at(index);	return value.getObj();}/** change value at given index*/void iom_object::setAttrObj(int attrName,int index,IomObject value){	attrValuev_type::iterator attr=attrValuev.find(attrName);	if(attr==attrValuev.end()){		// not found, add		valuev_type valuev;		valuev.push_back(iom_value(value));		attrValuev[attrName]=valuev;	}else{		// found, replace		valuev_type valuev=attr->second;		valuev.at(index)=iom_value(value);		attrValuev[attrName]=valuev;	}}/** insert value a given index.*/void iom_object::insertAttrObj(int attrName,int index,IomObject value){	attrValuev_type::iterator attr=attrValuev.find(attrName);	if(attr==attrValuev.end()){		// not found, add		valuev_type valuev;		valuev.push_back(iom_value(value));		attrValuev[attrName]=valuev;	}else{		// found, add		valuev_type valuev=attr->second;		valuev.insert(valuev.begin()+index,iom_value(value));		attrValuev[attrName]=valuev;	}}/** add value to end of list.*/void iom_object::addAttrObj(int attrName,IomObject value){	attrValuev_type::iterator attr=attrValuev.find(attrName);	if(attr==attrValuev.end()){		// not found, add		valuev_type valuev;		valuev.push_back(iom_value(value));		attrValuev[attrName]=valuev;	}else{		// found, add		valuev_type valuev=attr->second;		valuev.push_back(iom_value(value));		attrValuev[attrName]=valuev;	}}/** remove value with given index*/void iom_object::removeAttrObj(int attrName,int index){	attrValuev_type::iterator attr=attrValuev.find(attrName);	if(attr==attrValuev.end()){		// not found	}else{		// found, remove		valuev_type valuev=attr->second;		valuev.erase(valuev.begin()+index);		attrValuev[attrName]=valuev;	}}IomObject::IomObject(struct iom_object *pointee1) : pointee(pointee1 ? pointee1->getRef() : 0){}IomObject::IomObject(const IomObject& src) : pointee(src.pointee ? src.pointee->getRef() : 0){}IomObject& IomObject::operator=(const IomObject& src){	if(this!=&src){		if(pointee && !pointee->freeRef()){			delete pointee;		}		pointee=src.pointee ? src.pointee->getRef() : 0;	}	return *this;}IomObject::~IomObject(){	if(pointee && !pointee->freeRef()){		delete pointee;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩视频一区二区| 成人免费黄色大片| 国产自产v一区二区三区c| 国产精品66部| 色一区在线观看| 91麻豆精品国产| 国产日韩三级在线| 亚洲一区二区三区在线| 日韩1区2区日韩1区2区| 粉嫩绯色av一区二区在线观看| 色诱亚洲精品久久久久久| 欧美一级日韩不卡播放免费| 国产婷婷色一区二区三区在线| 亚洲精品视频免费观看| 精品中文字幕一区二区| 92国产精品观看| 欧美一个色资源| 亚洲色图欧洲色图| 美腿丝袜一区二区三区| av午夜精品一区二区三区| 在线综合亚洲欧美在线视频| 国产精品嫩草99a| 视频一区二区三区入口| av资源网一区| 精品国内片67194| 亚洲女同ⅹxx女同tv| 国模冰冰炮一区二区| 欧美日韩亚州综合| 中文欧美字幕免费| 久久99精品国产麻豆不卡| 在线观看视频欧美| 日本一区二区免费在线| 日韩精品色哟哟| 色噜噜狠狠成人中文综合| 久久久久久久综合色一本| 午夜精品久久久| 91小视频免费观看| 亚洲一区二区三区在线看| 成人avav影音| 日韩一区二区免费视频| 亚洲激情五月婷婷| 岛国精品在线观看| 精品福利在线导航| 日韩国产精品久久久久久亚洲| 91丨porny丨国产| 国产亚洲一区二区三区在线观看| 欧美a一区二区| 欧美日韩一区二区三区不卡| 中文字幕日本不卡| 国产成人精品综合在线观看| 日韩欧美中文字幕公布| 亚洲国产成人av网| 色天天综合色天天久久| 综合分类小说区另类春色亚洲小说欧美 | 亚洲欧美国产毛片在线| 福利电影一区二区三区| 精品国产乱码久久久久久蜜臀| 午夜电影网亚洲视频| 在线国产亚洲欧美| 一区二区三区国产精华| a在线播放不卡| 成人欧美一区二区三区| 精品久久人人做人人爰| www.欧美日韩国产在线| 久久久精品综合| 高清国产一区二区三区| 91精品国产麻豆| 狠狠v欧美v日韩v亚洲ⅴ| 久久丝袜美腿综合| 99这里只有精品| 韩国视频一区二区| 亚洲美女偷拍久久| 日韩欧美国产综合一区 | 国产精品一区二区无线| 久久久久久久久久久久电影| 国产美女久久久久| 国产午夜精品一区二区三区四区| 国产精品 欧美精品| 国产日韩欧美在线一区| 国产一区欧美二区| 亚洲国产精品av| 成人午夜精品一区二区三区| 国产精品麻豆一区二区| fc2成人免费人成在线观看播放| 国产精品久久网站| 日本精品一级二级| 天天影视网天天综合色在线播放| 91精品国产欧美日韩| 久久99精品国产麻豆婷婷| 久久精品人人爽人人爽| av资源网一区| 亚洲图片欧美综合| 日韩一区二区三区视频在线 | 久久午夜国产精品| 高清不卡一区二区在线| 专区另类欧美日韩| 欧美伊人精品成人久久综合97| 午夜影院久久久| 一区二区三区视频在线看| 欧美三级电影一区| 免费人成精品欧美精品| 国产欧美日韩麻豆91| 色综合天天综合| 香蕉av福利精品导航| 久久综合九色综合97婷婷女人 | 国产视频一区二区在线观看| 成人综合婷婷国产精品久久 | 欧美丝袜丝交足nylons图片| 首页欧美精品中文字幕| 精品国产一二三区| 成人18视频在线播放| 亚洲成人福利片| 26uuu久久综合| 99国产精品国产精品久久| 亚洲第一久久影院| 久久久不卡网国产精品二区| 91视频免费播放| 日韩av在线发布| 国产亚洲va综合人人澡精品| 色悠悠亚洲一区二区| 久久99最新地址| 1024成人网| 日韩欧美一级精品久久| 97久久超碰国产精品| 日韩国产欧美三级| 中文字幕永久在线不卡| 在线不卡中文字幕| 国产成人精品一区二区三区四区| 亚洲国产成人高清精品| 久久久国产一区二区三区四区小说| 91丝袜美腿高跟国产极品老师 | 一区二区免费在线| 欧美成人国产一区二区| 色哟哟国产精品| 国产美女在线观看一区| 亚洲一级二级在线| 中文字幕av一区二区三区高| 欧美一区二区三区小说| 91在线视频播放| 韩国在线一区二区| 无码av免费一区二区三区试看| 国产精品盗摄一区二区三区| 91精品国产色综合久久ai换脸 | 亚洲丰满少妇videoshd| 国产精品人妖ts系列视频| 欧美成人aa大片| 欧美三级日韩三级| 99久久夜色精品国产网站| 韩国av一区二区三区四区| 视频一区二区不卡| 一区二区激情小说| 国产精品高潮呻吟久久| 久久先锋影音av| 精品少妇一区二区三区免费观看| 欧美在线综合视频| 97久久精品人人爽人人爽蜜臀| 国产精品自拍毛片| 久久精品av麻豆的观看方式| 五月婷婷久久综合| 一区二区高清免费观看影视大全| 国产嫩草影院久久久久| 欧美va在线播放| 91精品黄色片免费大全| 欧美色图第一页| 色狠狠一区二区| 99热这里都是精品| 国产成人精品三级| 国产成人免费9x9x人网站视频| 国产综合一区二区| 狠狠网亚洲精品| 免费人成网站在线观看欧美高清| 天天射综合影视| 亚洲成人自拍一区| 亚洲午夜免费视频| 亚洲午夜私人影院| 亚洲123区在线观看| 亚洲图片欧美色图| 亚洲成a人片在线观看中文| 亚洲一区二区三区自拍| 午夜天堂影视香蕉久久| 亚洲一二三级电影| 天天操天天色综合| 日韩精品欧美成人高清一区二区| 首页国产欧美日韩丝袜| 青青青爽久久午夜综合久久午夜| 日韩成人伦理电影在线观看| 日韩av中文在线观看| 久久丁香综合五月国产三级网站| 美女视频一区二区三区| 国内欧美视频一区二区| 国产尤物一区二区| 成人污视频在线观看| caoporen国产精品视频| 色域天天综合网| 欧美男同性恋视频网站| 日韩欧美一区在线| 久久久久久亚洲综合影院红桃| 亚洲国产高清aⅴ视频| 亚洲日本乱码在线观看| 亚洲一区在线视频观看|