mirror of
https://git.freebsd.org/ports.git
synced 2025-05-31 10:26:28 -04:00
872 lines
36 KiB
C++
872 lines
36 KiB
C++
--- src/kernel/cpdf.cc.orig 2010-04-27 18:42:09 UTC
|
|
+++ src/kernel/cpdf.cc
|
|
@@ -81,13 +81,13 @@ ostream & operator<<(ostream & stream, P
|
|
return stream;
|
|
}
|
|
|
|
-shared_ptr<CDict> getPageTreeRoot(const boost::shared_ptr<CPdf> &pdf)
|
|
+boost::shared_ptr<CDict> getPageTreeRoot(const boost::shared_ptr<CPdf> &pdf)
|
|
{
|
|
- shared_ptr<CDict> result;
|
|
+ boost::shared_ptr<CDict> result;
|
|
|
|
try
|
|
{
|
|
- shared_ptr<IProperty> pagesProp=pdf->getDictionary()->getProperty("Pages");
|
|
+ boost::shared_ptr<IProperty> pagesProp=pdf->getDictionary()->getProperty("Pages");
|
|
if(!isRef(pagesProp))
|
|
// returns null dictionary
|
|
return result;
|
|
@@ -106,7 +106,7 @@ PageTreeNodeType getNodeType(const boost
|
|
PageTreeNodeType nodeType=UnknownNode;
|
|
|
|
// checks nodeProp - must be dictionary or reference to dictionary
|
|
- shared_ptr<CDict> nodeDict;
|
|
+ boost::shared_ptr<CDict> nodeDict;
|
|
if(isDict(nodeProp))
|
|
nodeDict=IProperty::getSmartCObjectPtr<CDict>(nodeProp);
|
|
else
|
|
@@ -126,9 +126,9 @@ PageTreeNodeType getNodeType(const boost
|
|
return ErrorNode;
|
|
|
|
// checks root node at first
|
|
- shared_ptr<CPdf> pdf=nodeProp->getPdf().lock();
|
|
+ boost::shared_ptr<CPdf> pdf=nodeProp->getPdf().lock();
|
|
assert(pdf);
|
|
- shared_ptr<CDict> rootDict=getPageTreeRoot(pdf);
|
|
+ boost::shared_ptr<CDict> rootDict=getPageTreeRoot(pdf);
|
|
if(rootDict==nodeDict)
|
|
// root dictionary found and it is same as internode
|
|
return RootNode;
|
|
@@ -136,7 +136,7 @@ PageTreeNodeType getNodeType(const boost
|
|
// given node is not root of page tree, chcecks Type field
|
|
if(nodeDict->containsProperty("Type"))
|
|
{
|
|
- shared_ptr<IProperty> nodeType=nodeDict->getProperty("Type");
|
|
+ boost::shared_ptr<IProperty> nodeType=nodeDict->getProperty("Type");
|
|
try
|
|
{
|
|
if(isRef(nodeType))
|
|
@@ -159,7 +159,7 @@ PageTreeNodeType getNodeType(const boost
|
|
// Internode should contain at least Kids array field
|
|
if(nodeDict->containsProperty("Kids"))
|
|
{
|
|
- shared_ptr<IProperty> kidsProp=nodeDict->getProperty("Kids");
|
|
+ boost::shared_ptr<IProperty> kidsProp=nodeDict->getProperty("Kids");
|
|
if(isArray(kidsProp))
|
|
return InterNode;
|
|
if(isRef(kidsProp))
|
|
@@ -189,8 +189,8 @@ void getKidsFromInterNode(const boost::s
|
|
// tries to get Kids array
|
|
if(interNodeDict->containsProperty("Kids"))
|
|
{
|
|
- shared_ptr<IProperty> kidsProp=interNodeDict->getProperty("Kids");
|
|
- shared_ptr<CArray> kidsArray;
|
|
+ boost::shared_ptr<IProperty> kidsProp=interNodeDict->getProperty("Kids");
|
|
+ boost::shared_ptr<CArray> kidsArray;
|
|
if(isRef(kidsProp))
|
|
{
|
|
try
|
|
@@ -341,17 +341,17 @@ using namespace debug;
|
|
if(!withSubTree)
|
|
return;
|
|
|
|
- shared_ptr<IProperty> nodeProp=pdf->getIndirectProperty(ref);
|
|
+ boost::shared_ptr<IProperty> nodeProp=pdf->getIndirectProperty(ref);
|
|
if(getNodeType(nodeProp)>=InterNode)
|
|
{
|
|
ChildrenStorage childs;
|
|
assert(isDict(nodeProp));
|
|
- shared_ptr<CDict> nodeDict=IProperty::getSmartCObjectPtr<CDict>(nodeProp);
|
|
+ boost::shared_ptr<CDict> nodeDict=IProperty::getSmartCObjectPtr<CDict>(nodeProp);
|
|
getKidsFromInterNode(nodeDict, childs);
|
|
utilsPrintDbg(DBG_DBG, "discarding all nodes in "<<ref<<" subtree");
|
|
for(ChildrenStorage::iterator i=childs.begin(); i!=childs.end(); ++i)
|
|
{
|
|
- shared_ptr<IProperty> child=*i;
|
|
+ boost::shared_ptr<IProperty> child=*i;
|
|
if(!isRef(child))
|
|
// skip array mess
|
|
continue;
|
|
@@ -373,7 +373,7 @@ size_t getKidsCount(const boost::shared_
|
|
|
|
// gets dictionary from given property. If reference, gets target object. If
|
|
// it is not a dictionary, returns with 0
|
|
- shared_ptr<CDict> interNodeDict;
|
|
+ boost::shared_ptr<CDict> interNodeDict;
|
|
if(isRef(interNodeProp))
|
|
{
|
|
try
|
|
@@ -409,7 +409,7 @@ size_t getKidsCount(const boost::shared_
|
|
getKidsFromInterNode(interNodeDict, children);
|
|
for(ChildrenStorage::const_iterator i=children.begin(); i!=children.end(); ++i)
|
|
{
|
|
- shared_ptr<IProperty> childProp=*i;
|
|
+ boost::shared_ptr<IProperty> childProp=*i;
|
|
if(isRef(childProp))
|
|
count+=getKidsCount(childProp, cache);
|
|
}
|
|
@@ -441,7 +441,7 @@ boost::shared_ptr<CDict> findPageDict(
|
|
// dictionary smart pointer holder
|
|
// it is initialized according pagesDict parameter - if it is reference
|
|
// it has to be dereferenced
|
|
- shared_ptr<CDict> dict_ptr;
|
|
+ boost::shared_ptr<CDict> dict_ptr;
|
|
|
|
// checks if given parameter is reference and if so, dereference it
|
|
// using getIndirectProperty method and casts to dict_ptr
|
|
@@ -523,7 +523,7 @@ boost::shared_ptr<CDict> findPageDict(
|
|
size_t min_pos=startPos, index=0;
|
|
for(ChildrenStorage::iterator i=children.begin(); i!=children.end(); ++i, ++index)
|
|
{
|
|
- shared_ptr<IProperty> child=*i;
|
|
+ boost::shared_ptr<IProperty> child=*i;
|
|
|
|
if(!isRef(child))
|
|
{
|
|
@@ -542,7 +542,7 @@ boost::shared_ptr<CDict> findPageDict(
|
|
|
|
// gets child dictionary (everything is checked, so no exception can
|
|
// be thrown here)
|
|
- shared_ptr<CDict> child_ptr=getCObjectFromRef<CDict>(child);
|
|
+ boost::shared_ptr<CDict> child_ptr=getCObjectFromRef<CDict>(child);
|
|
|
|
utilsPrintDbg(DBG_DBG, "kid["<<index<<"] node type="<<nodeType);
|
|
|
|
@@ -632,9 +632,9 @@ boost::shared_ptr<CDict> findPageDict(
|
|
* superNode.
|
|
*/
|
|
size_t searchTreeNode(
|
|
- shared_ptr<const CPdf> pdf,
|
|
- shared_ptr<CDict> superNode,
|
|
- shared_ptr<CDict> node,
|
|
+ boost::shared_ptr<const CPdf> pdf,
|
|
+ boost::shared_ptr<CDict> superNode,
|
|
+ boost::shared_ptr<CDict> node,
|
|
size_t startValue,
|
|
PageTreeNodeCountCache * cache)
|
|
{
|
|
@@ -673,7 +673,7 @@ size_t searchTreeNode(
|
|
getKidsFromInterNode(superNode, children);
|
|
for(i=children.begin(); i!=children.end(); ++i, ++index)
|
|
{
|
|
- shared_ptr<IProperty> child=*i;
|
|
+ boost::shared_ptr<IProperty> child=*i;
|
|
|
|
// each element has to be reference
|
|
if(!isRef(child))
|
|
@@ -693,7 +693,7 @@ size_t searchTreeNode(
|
|
|
|
// dereference target dictionary - never throws, because we have checked
|
|
// node type
|
|
- shared_ptr<CDict> elementDict_ptr=getCObjectFromRef<CDict>(child);
|
|
+ boost::shared_ptr<CDict> elementDict_ptr=getCObjectFromRef<CDict>(child);
|
|
|
|
// compares elementDict_ptr (kid) with node, if they are same, returns
|
|
// startValue
|
|
@@ -723,7 +723,7 @@ size_t searchTreeNode(
|
|
IndiRef nodeRef=node->getIndiRef();
|
|
for(;i!=children.end(); ++i, ++index)
|
|
{
|
|
- shared_ptr<IProperty> child=*i;
|
|
+ boost::shared_ptr<IProperty> child=*i;
|
|
if(isRef(child) && getValueFromSimple<CRef>(child)==nodeRef)
|
|
{
|
|
utilsPrintDbg(DBG_WARN, "Internode "<<superNode->getIndiRef()<<" is ambiguous. Kids["<<index<<"] duplicates reference to node.");
|
|
@@ -735,7 +735,7 @@ size_t searchTreeNode(
|
|
return position;
|
|
}
|
|
|
|
-size_t getNodePosition(const shared_ptr<CPdf> &pdf, const shared_ptr<IProperty> &node, PageTreeNodeCountCache * cache)
|
|
+size_t getNodePosition(const boost::shared_ptr<CPdf> &pdf, const boost::shared_ptr<IProperty> &node, PageTreeNodeCountCache * cache)
|
|
{
|
|
utilsPrintDbg(DBG_DBG, "");
|
|
// node must be from given pdf
|
|
@@ -746,7 +746,7 @@ size_t getNodePosition(const shared_ptr<
|
|
}
|
|
|
|
// gets page tree root - if not found, then PageNotFoundException is thrown
|
|
- shared_ptr<CDict> rootDict_ptr=getPageTreeRoot(pdf);
|
|
+ boost::shared_ptr<CDict> rootDict_ptr=getPageTreeRoot(pdf);
|
|
if(!rootDict_ptr.get())
|
|
throw PageNotFoundException(0);
|
|
|
|
@@ -760,7 +760,7 @@ size_t getNodePosition(const shared_ptr<
|
|
utilsPrintDbg(DBG_ERR, "Given node is not reference nor dictionary. type="<<nodeType);
|
|
throw ElementBadTypeException("node");
|
|
}
|
|
- shared_ptr<CDict> nodeDict_ptr;
|
|
+ boost::shared_ptr<CDict> nodeDict_ptr;
|
|
if(isRef(node))
|
|
nodeDict_ptr=getCObjectFromRef<CDict>(node);
|
|
else
|
|
@@ -776,7 +776,7 @@ size_t getNodePosition(const shared_ptr<
|
|
throw PageNotFoundException(0);
|
|
}
|
|
|
|
-bool isNodeDescendant(const boost::shared_ptr<CPdf>& pdf, const IndiRef &parent, const shared_ptr<CDict> &child)
|
|
+bool isNodeDescendant(const boost::shared_ptr<CPdf>& pdf, const IndiRef &parent, const boost::shared_ptr<CDict> &child)
|
|
{
|
|
using namespace utils;
|
|
|
|
@@ -787,7 +787,7 @@ using namespace utils;
|
|
}
|
|
|
|
// gets parent property
|
|
- shared_ptr<IProperty> parentProp=child->getProperty("Parent");
|
|
+ boost::shared_ptr<IProperty> parentProp=child->getProperty("Parent");
|
|
if(!isRef(parentProp))
|
|
{
|
|
// parent is incorect
|
|
@@ -804,7 +804,7 @@ using namespace utils;
|
|
// referencies are not same, so gets parent dictionary and checks its parent
|
|
try
|
|
{
|
|
- shared_ptr<CDict> parentDict=getCObjectFromRef<CDict>(parentProp);
|
|
+ boost::shared_ptr<CDict> parentDict=getCObjectFromRef<CDict>(parentProp);
|
|
return isNodeDescendant(pdf, parent, parentDict);
|
|
}catch(CObjectException & )
|
|
{
|
|
@@ -830,7 +830,7 @@ using namespace pdfobjects::utils;
|
|
return;
|
|
|
|
// gets dictionary from given property
|
|
- shared_ptr<CDict> dict_ptr;
|
|
+ boost::shared_ptr<CDict> dict_ptr;
|
|
if(isRef(prop))
|
|
{
|
|
try
|
|
@@ -854,8 +854,8 @@ using namespace pdfobjects::utils;
|
|
if(!dict_ptr->containsProperty("Kids"))
|
|
return;
|
|
|
|
- shared_ptr<IProperty> kidsProp_ptr=dict_ptr->getProperty("Kids");
|
|
- shared_ptr<CArray> kids_ptr;
|
|
+ boost::shared_ptr<IProperty> kidsProp_ptr=dict_ptr->getProperty("Kids");
|
|
+ boost::shared_ptr<CArray> kids_ptr;
|
|
if(isRef(kidsProp_ptr))
|
|
{
|
|
// Kids property is reference - this is not offten but may occure and
|
|
@@ -901,7 +901,7 @@ using namespace pdfobjects::utils;
|
|
kids_ptr->_getAllChildObjects(container);
|
|
for(ChildrenStorage::iterator i=container.begin(); i!=container.end(); ++i)
|
|
{
|
|
- shared_ptr<IProperty> elemProp_ptr=*i;
|
|
+ boost::shared_ptr<IProperty> elemProp_ptr=*i;
|
|
if(isRef(elemProp_ptr))
|
|
{
|
|
REGISTER_SHAREDPTR_OBSERVER(elemProp_ptr, pageTreeKidsObserver);
|
|
@@ -922,7 +922,7 @@ using namespace pdfobjects::utils;
|
|
return;
|
|
|
|
// gets dictionary from given property
|
|
- shared_ptr<CDict> dict_ptr;
|
|
+ boost::shared_ptr<CDict> dict_ptr;
|
|
if(isRef(prop))
|
|
{
|
|
try
|
|
@@ -974,8 +974,8 @@ using namespace pdfobjects::utils;
|
|
if(!dict_ptr->containsProperty("Kids"))
|
|
return;
|
|
|
|
- shared_ptr<IProperty> kidsProp_ptr=dict_ptr->getProperty("Kids");
|
|
- shared_ptr<CArray> kids_ptr;
|
|
+ boost::shared_ptr<IProperty> kidsProp_ptr=dict_ptr->getProperty("Kids");
|
|
+ boost::shared_ptr<CArray> kids_ptr;
|
|
if(isRef(kidsProp_ptr))
|
|
{
|
|
// Kids property is reference - this is not offten but may occure and
|
|
@@ -1021,7 +1021,7 @@ using namespace pdfobjects::utils;
|
|
kids_ptr->_getAllChildObjects(container);
|
|
for(ChildrenStorage::iterator i=container.begin(); i!=container.end(); ++i)
|
|
{
|
|
- shared_ptr<IProperty> elemProp_ptr=*i;
|
|
+ boost::shared_ptr<IProperty> elemProp_ptr=*i;
|
|
if(isRef(elemProp_ptr))
|
|
{
|
|
UNREGISTER_SHAREDPTR_OBSERVER(elemProp_ptr, pageTreeKidsObserver);
|
|
@@ -1042,7 +1042,7 @@ using namespace observer;
|
|
using namespace utils;
|
|
|
|
assert(isActive());
|
|
- shared_ptr<IProperty> oldValue;
|
|
+ boost::shared_ptr<IProperty> oldValue;
|
|
if(!context)
|
|
{
|
|
kernelPrintDbg(DBG_WARN, "No context available. Ignoring calling.");
|
|
@@ -1055,7 +1055,7 @@ using namespace utils;
|
|
case BasicChangeContextType:
|
|
{
|
|
// Pages reference value has changed
|
|
- shared_ptr<const BasicChangeContext<IProperty> > basicContext=
|
|
+ boost::shared_ptr<const BasicChangeContext<IProperty> > basicContext=
|
|
dynamic_pointer_cast<const BasicChangeContext<IProperty>, const IChangeContext<IProperty> >(context);
|
|
oldValue=basicContext->getOriginalValue();
|
|
|
|
@@ -1068,7 +1068,7 @@ using namespace utils;
|
|
{
|
|
// document catalog dictionary has changed. Checks valueId and
|
|
// proceede just if Pages property has changed
|
|
- shared_ptr<const CDict::CDictComplexObserverContext > complexContex=
|
|
+ boost::shared_ptr<const CDict::CDictComplexObserverContext > complexContex=
|
|
dynamic_pointer_cast<const CDict::CDictComplexObserverContext, const IChangeContext<IProperty> >(context);
|
|
if(!complexContex)
|
|
{
|
|
@@ -1115,7 +1115,7 @@ using namespace utils;
|
|
{
|
|
try
|
|
{
|
|
- shared_ptr<IProperty> oldValueDict=getCObjectFromRef<CDict>(oldValue);
|
|
+ boost::shared_ptr<IProperty> oldValueDict=getCObjectFromRef<CDict>(oldValue);
|
|
kernelPrintDbg(DBG_DBG, "unregistering observers from old page tree.");
|
|
pdf->unregisterPageTreeObservers(oldValueDict);
|
|
}catch(CObjectException & e)
|
|
@@ -1136,7 +1136,7 @@ using namespace utils;
|
|
kernelPrintDbg(DBG_DBG, "Invalidating pageList with "<<pdf->pageList.size()<<" elements");
|
|
for(PageList::iterator i=pdf->pageList.begin(); i!=pdf->pageList.end(); ++i)
|
|
{
|
|
- shared_ptr<CPage> page=i->second;
|
|
+ boost::shared_ptr<CPage> page=i->second;
|
|
page->invalidate();
|
|
}
|
|
pdf->pageList.clear();
|
|
@@ -1154,7 +1154,7 @@ using namespace utils;
|
|
return;
|
|
}
|
|
IndiRef newValueRef=utils::getValueFromSimple<CRef>(newValue);
|
|
- shared_ptr<IProperty> newValueProp=pdf->getIndirectProperty(newValueRef);
|
|
+ boost::shared_ptr<IProperty> newValueProp=pdf->getIndirectProperty(newValueRef);
|
|
if(!isDict(newValueProp))
|
|
{
|
|
kernelPrintDbg(DBG_WARN, "Pages property doesn't refer to dictionary. type="<<newValueProp->getType());
|
|
@@ -1183,7 +1183,7 @@ using namespace observer;
|
|
kernelPrintDbg(DBG_WARN, "No context available. Ignoring calling.");
|
|
return;
|
|
}
|
|
- shared_ptr<IProperty> oldValue;
|
|
+ boost::shared_ptr<IProperty> oldValue;
|
|
ChildrenStorage oldValues, newValues;
|
|
kernelPrintDbg(DBG_DBG, "context type="<<context->getType());
|
|
switch(context->getType())
|
|
@@ -1193,7 +1193,7 @@ using namespace observer;
|
|
// this means that node contains Kids array with reference type
|
|
// and this reference has changed its value - both oldValue and
|
|
// newValue has to be referencies
|
|
- shared_ptr<const BasicChangeContext<IProperty> > basicContext=
|
|
+ boost::shared_ptr<const BasicChangeContext<IProperty> > basicContext=
|
|
dynamic_pointer_cast<const BasicChangeContext<IProperty>, const IChangeContext<IProperty> >(context);
|
|
oldValue=basicContext->getOriginalValue();
|
|
assert(isRef(oldValue));
|
|
@@ -1204,7 +1204,7 @@ using namespace observer;
|
|
{
|
|
// this means that inter node dictionary has changed
|
|
// if changed property is not Kids, immediatelly returns
|
|
- shared_ptr<const CDict::CDictComplexObserverContext > complexContex=
|
|
+ boost::shared_ptr<const CDict::CDictComplexObserverContext > complexContex=
|
|
dynamic_pointer_cast<const CDict::CDictComplexObserverContext, const IChangeContext<IProperty> >(context);
|
|
if(!complexContex)
|
|
{
|
|
@@ -1245,7 +1245,7 @@ using namespace observer;
|
|
try
|
|
{
|
|
// collects all children from array
|
|
- shared_ptr<CArray> kidsArray;
|
|
+ boost::shared_ptr<CArray> kidsArray;
|
|
if(isRef(oldValue))
|
|
kidsArray=utils::getCObjectFromRef<CArray>(oldValue);
|
|
else
|
|
@@ -1273,7 +1273,7 @@ using namespace observer;
|
|
try
|
|
{
|
|
// collects all children from array
|
|
- shared_ptr<CArray> kidsArray;
|
|
+ boost::shared_ptr<CArray> kidsArray;
|
|
if(isRef(newValue))
|
|
kidsArray=utils::getCObjectFromRef<CArray>(newValue);
|
|
else
|
|
@@ -1299,10 +1299,10 @@ using namespace observer;
|
|
IndiRef interNodeRef=(!isNull(oldValue))?oldValue->getIndiRef():newValue->getIndiRef();
|
|
try
|
|
{
|
|
- shared_ptr<IProperty> interNodeProp=pdf->getIndirectProperty(interNodeRef);
|
|
+ boost::shared_ptr<IProperty> interNodeProp=pdf->getIndirectProperty(interNodeRef);
|
|
if(isDict(interNodeProp))
|
|
{
|
|
- shared_ptr<CDict> interNode=IProperty::getSmartCObjectPtr<CDict>(interNodeProp);
|
|
+ boost::shared_ptr<CDict> interNode=IProperty::getSmartCObjectPtr<CDict>(interNodeProp);
|
|
// if consolidatePageTree hasn't kept page count numbers, total number
|
|
// of pages must be invalidated
|
|
if(!pdf->consolidatePageTree(interNode, true))
|
|
@@ -1317,12 +1317,12 @@ using namespace observer;
|
|
}
|
|
|
|
// removes all pages from removed array
|
|
- shared_ptr<IProperty> null(CNullFactory::getInstance());
|
|
+ boost::shared_ptr<IProperty> null(CNullFactory::getInstance());
|
|
kernelPrintDbg(DBG_DBG, "Consolidating page list by removing oldValues.");
|
|
size_t index=0;
|
|
for(ChildrenStorage::iterator i=oldValues.begin(); i!=oldValues.end(); ++i, ++index)
|
|
{
|
|
- shared_ptr<IProperty> child=*i;
|
|
+ boost::shared_ptr<IProperty> child=*i;
|
|
// consider just referencies, other elements are just mess in array
|
|
// unregisters observers and consolidates pageList like this node has
|
|
// been removed
|
|
@@ -1341,7 +1341,7 @@ using namespace observer;
|
|
kernelPrintDbg(DBG_DBG, "Consolidating page list by adding newValues.");
|
|
for(ChildrenStorage::iterator i=newValues.begin(); i!=newValues.end(); ++i)
|
|
{
|
|
- shared_ptr<IProperty> child=*i;
|
|
+ boost::shared_ptr<IProperty> child=*i;
|
|
// consider just referencies, other elements are just mess in array
|
|
// registers observers and consolidates pageList like this node has
|
|
// been added
|
|
@@ -1372,7 +1372,7 @@ using namespace utils;
|
|
kernelPrintDbg(DBG_DBG, "contextType="<<contextType);
|
|
// gets original value from given context. It has to at least
|
|
// BasicChangeContext
|
|
- shared_ptr<IProperty> oldValue;
|
|
+ boost::shared_ptr<IProperty> oldValue;
|
|
switch(contextType)
|
|
{
|
|
// This context means that just simple value has been changed and so
|
|
@@ -1381,7 +1381,7 @@ using namespace utils;
|
|
case BasicChangeContextType:
|
|
{
|
|
// this means that reference property has changed its value
|
|
- shared_ptr<const BasicChangeContext<IProperty> > basicContext=
|
|
+ boost::shared_ptr<const BasicChangeContext<IProperty> > basicContext=
|
|
dynamic_pointer_cast<const BasicChangeContext<IProperty>, const IChangeContext<IProperty> >(context);
|
|
oldValue=basicContext->getOriginalValue();
|
|
|
|
@@ -1393,7 +1393,7 @@ using namespace utils;
|
|
case ComplexChangeContextType:
|
|
{
|
|
// this means that array content has changed
|
|
- shared_ptr<const CArray::CArrayComplexObserverContext > complexContex=
|
|
+ boost::shared_ptr<const CArray::CArrayComplexObserverContext > complexContex=
|
|
dynamic_pointer_cast<const CArray::CArrayComplexObserverContext, const IChangeContext<IProperty> >(context);
|
|
if(!complexContex)
|
|
{
|
|
@@ -1455,7 +1455,7 @@ using namespace utils;
|
|
{
|
|
try
|
|
{
|
|
- shared_ptr<IProperty> oldValueDict=getCObjectFromRef<CDict>(oldValue);
|
|
+ boost::shared_ptr<IProperty> oldValueDict=getCObjectFromRef<CDict>(oldValue);
|
|
pdf->unregisterPageTreeObservers(oldValueDict);
|
|
}catch(CObjectException & e)
|
|
{
|
|
@@ -1482,7 +1482,7 @@ using namespace utils;
|
|
IndiRef parentRef=ref;
|
|
if(getCachedValue(ref, parentRef, pdf->pageTreeKidsParentCache))
|
|
kernelPrintDbg(DBG_DBG, "Uses pageTreeKidsParentCache with mapping from"<<ref<<" to "<<parentRef);
|
|
- shared_ptr<IProperty> parentProp_ptr=pdf->getIndirectProperty(parentRef);
|
|
+ boost::shared_ptr<IProperty> parentProp_ptr=pdf->getIndirectProperty(parentRef);
|
|
if(parentProp_ptr->getType()!=pDict)
|
|
{
|
|
// target of the parent reference is not dictionary,
|
|
@@ -1492,7 +1492,7 @@ using namespace utils;
|
|
}
|
|
|
|
// starts consolidation from parent intermediate node
|
|
- shared_ptr<CDict> parentDict_ptr=IProperty::getSmartCObjectPtr<CDict>(parentProp_ptr);
|
|
+ boost::shared_ptr<CDict> parentDict_ptr=IProperty::getSmartCObjectPtr<CDict>(parentProp_ptr);
|
|
try
|
|
{
|
|
// if consolidatePageTree hasn't kept page count numbers, total number
|
|
@@ -1530,7 +1530,7 @@ using namespace utils;
|
|
{
|
|
try
|
|
{
|
|
- shared_ptr<IProperty> newValueDict=getCObjectFromRef<CDict>(newValue);
|
|
+ boost::shared_ptr<IProperty> newValueDict=getCObjectFromRef<CDict>(newValue);
|
|
pdf->registerPageTreeObservers(newValueDict);
|
|
}catch(CObjectException & e)
|
|
{
|
|
@@ -1559,11 +1559,11 @@ using namespace observer;
|
|
}
|
|
if(docCatalog->containsProperty("Pages"))
|
|
{
|
|
- shared_ptr<IProperty> pagesProp=docCatalog->getProperty("Pages");
|
|
+ boost::shared_ptr<IProperty> pagesProp=docCatalog->getProperty("Pages");
|
|
if(isRef(pagesProp))
|
|
{
|
|
UNREGISTER_SHAREDPTR_OBSERVER(pagesProp, pageTreeRootObserver);
|
|
- shared_ptr<IProperty> pageTreeRoot=getPageTreeRoot(_this.lock());
|
|
+ boost::shared_ptr<IProperty> pageTreeRoot=getPageTreeRoot(_this.lock());
|
|
if(pageTreeRoot.get())
|
|
{
|
|
try
|
|
@@ -1623,7 +1623,7 @@ void CPdf::initRevisionSpecific()
|
|
for(IndirectMapping::iterator i=indMap.begin(); i!=indMap.end(); ++i)
|
|
{
|
|
IndiRef ref=i->first;
|
|
- shared_ptr<IProperty> value=i->second;
|
|
+ boost::shared_ptr<IProperty> value=i->second;
|
|
if(!value.unique())
|
|
kernelPrintDbg(debug::DBG_WARN, "Somebody still holds property with with "<<ref);
|
|
}
|
|
@@ -1654,7 +1654,7 @@ void CPdf::initRevisionSpecific()
|
|
// is thrown
|
|
kernelPrintDbg(debug::DBG_DBG, "Getting Root field - document catalog");
|
|
IndiRef rootRef(xref->getRootNum(), xref->getRootGen());
|
|
- shared_ptr<IProperty> prop_ptr=getIndirectProperty(rootRef);
|
|
+ boost::shared_ptr<IProperty> prop_ptr=getIndirectProperty(rootRef);
|
|
if(prop_ptr->getType()!=pDict)
|
|
{
|
|
kernelPrintDbg(debug::DBG_ERR, "Trailer dictionary doesn't point to correct document catalog "
|
|
@@ -1670,7 +1670,7 @@ void CPdf::initRevisionSpecific()
|
|
REGISTER_SHAREDPTR_OBSERVER(docCatalog, pageTreeRootObserver);
|
|
if(docCatalog->containsProperty("Pages"))
|
|
{
|
|
- shared_ptr<IProperty> pagesProp=docCatalog->getProperty("Pages");
|
|
+ boost::shared_ptr<IProperty> pagesProp=docCatalog->getProperty("Pages");
|
|
if(isRef(pagesProp))
|
|
REGISTER_SHAREDPTR_OBSERVER(pagesProp, pageTreeRootObserver);
|
|
else
|
|
@@ -1680,7 +1680,7 @@ void CPdf::initRevisionSpecific()
|
|
|
|
// registers pageTreeNodeObserver and pageTreeKidsObserver to page tree root
|
|
// dictionary which registers these observers to whole page tree structure
|
|
- shared_ptr<IProperty> pageTreeRoot=utils::getPageTreeRoot(_this.lock());
|
|
+ boost::shared_ptr<IProperty> pageTreeRoot=utils::getPageTreeRoot(_this.lock());
|
|
if(pageTreeRoot.get())
|
|
registerPageTreeObservers(pageTreeRoot);
|
|
}
|
|
@@ -1870,7 +1870,7 @@ boost::shared_ptr<IProperty> CPdf::getIn
|
|
|
|
// mapping doesn't exist yet, so tries to create one
|
|
// fetches object according reference
|
|
- shared_ptr< ::Object> obj(XPdfObjectFactory::getInstance(), xpdf::object_deleter());
|
|
+ boost::shared_ptr< ::Object> obj(XPdfObjectFactory::getInstance(), xpdf::object_deleter());
|
|
assert(xref);
|
|
xref->fetch(ref.num, ref.gen, obj.get());
|
|
|
|
@@ -1883,13 +1883,13 @@ boost::shared_ptr<IProperty> CPdf::getIn
|
|
if(obj->getType()!=objNull)
|
|
{
|
|
IProperty * prop=utils::createObjFromXpdfObj(_this.lock(), *obj, ref);
|
|
- prop_ptr=shared_ptr<IProperty>(prop);
|
|
+ prop_ptr=boost::shared_ptr<IProperty>(prop);
|
|
indMap.insert(IndirectMapping::value_type(ref, prop_ptr));
|
|
kernelPrintDbg(DBG_DBG, "Mapping created for "<<ref);
|
|
}else
|
|
{
|
|
kernelPrintDbg(DBG_DBG, ref<<" not available or points to objNull");
|
|
- prop_ptr=shared_ptr<CNull>(CNullFactory::getInstance());
|
|
+ prop_ptr=boost::shared_ptr<CNull>(CNullFactory::getInstance());
|
|
}
|
|
|
|
return prop_ptr;
|
|
@@ -1913,7 +1913,7 @@ using namespace utils;
|
|
// so no type check fails). We have to set this pdf temporarily, because
|
|
// _makeXpdfObject function sets xref to created Object from ip->getPdf().
|
|
// Finally restores original pdf value
|
|
- shared_ptr<CPdf> original=ip->getPdf().lock();
|
|
+ boost::shared_ptr<CPdf> original=ip->getPdf().lock();
|
|
ip->setPdf(_this);
|
|
::Object * obj=ip->_makeXpdfObject();
|
|
ip->setPdf(original);
|
|
@@ -1940,7 +1940,7 @@ IndiRef CPdf::addProperty(const boost::s
|
|
// ip is not from same pdf - may be in different one or stand alone object
|
|
// toSubstitute is deep copy of ip to prevent changes in original data.
|
|
// Also sets same pdf as orignal to cloned to enable dereferencing
|
|
- shared_ptr<IProperty> toSubstitute=ip->clone();
|
|
+ boost::shared_ptr<IProperty> toSubstitute=ip->clone();
|
|
if(hasValidPdf(ip))
|
|
{
|
|
// locks cloned object to prevent making changes (kind of workaround)
|
|
@@ -2060,8 +2060,8 @@ using namespace utils;
|
|
<<refEntry->first);
|
|
// ip is from read pdf and so dereferences target value
|
|
// FIXME check for valid pdf
|
|
- shared_ptr<CPdf> pdf = ip->getPdf().lock();
|
|
- shared_ptr<IProperty> followedIp=pdf->getIndirectProperty(ipRef);
|
|
+ boost::shared_ptr<CPdf> pdf = ip->getPdf().lock();
|
|
+ boost::shared_ptr<IProperty> followedIp=pdf->getIndirectProperty(ipRef);
|
|
|
|
// adds dereferenced value using addProperty with collected
|
|
// container. Current mapping is set to resolving state to
|
|
@@ -2097,7 +2097,7 @@ using namespace utils;
|
|
ChildrenStorage::iterator i;
|
|
for(i=childrenStorage.begin(); i!=childrenStorage.end(); ++i)
|
|
{
|
|
- shared_ptr<IProperty> child=*i;
|
|
+ boost::shared_ptr<IProperty> child=*i;
|
|
if(!isRef(*child) && !isDict(*child) && !isArray(*child) && !isStream(*child))
|
|
{
|
|
// child is none of interesting type which may hold reference
|
|
@@ -2146,7 +2146,7 @@ using namespace boost;
|
|
}
|
|
|
|
// checks whether given ip is from same pdf
|
|
- shared_ptr<CPdf> ipPdf = ip->getPdf().lock();
|
|
+ boost::shared_ptr<CPdf> ipPdf = ip->getPdf().lock();
|
|
if(ipPdf.get()==this)
|
|
{
|
|
// ip is from same pdf and so all possible referencies are already in
|
|
@@ -2245,7 +2245,7 @@ void CPdf::changeIndirectProperty(const
|
|
throw ReadOnlyDocumentException("Document is in read-only mode.");
|
|
}
|
|
|
|
- shared_ptr<CPdf> _thisP = _this.lock();
|
|
+ boost::shared_ptr<CPdf> _thisP = _this.lock();
|
|
if(utils::isEncrypted(_thisP))
|
|
{
|
|
kernelPrintDbg(DBG_WARN, "Changing properties for encrypted documents si not implemented");
|
|
@@ -2272,7 +2272,7 @@ void CPdf::changeIndirectProperty(const
|
|
// changeObject may throw if we are in read only mode or if xrefwriter is
|
|
// in paranoid mode and type check fails - to make it easier for such a case
|
|
// we are using shared_ptr which handles propObject cleanup correctly
|
|
- shared_ptr<Object> propObject(prop->_makeXpdfObject(), xpdf::object_deleter());
|
|
+ boost::shared_ptr<Object> propObject(prop->_makeXpdfObject(), xpdf::object_deleter());
|
|
kernelPrintDbg(DBG_DBG, "Registering change to the XRefWriter");
|
|
xref->changeObject(indiRef.num, indiRef.gen, propObject.get());
|
|
|
|
@@ -2359,10 +2359,10 @@ using namespace std;
|
|
kernelPrintDbg(debug::DBG_DBG,"File stream created");
|
|
|
|
// stream is ready, creates CPdf instance
|
|
- shared_ptr<CPdf> instance;
|
|
+ boost::shared_ptr<CPdf> instance;
|
|
try
|
|
{
|
|
- instance = shared_ptr<CPdf>(new CPdf(stream, mode), PdfFileDeleter(file));
|
|
+ instance = boost::shared_ptr<CPdf>(new CPdf(stream, mode), PdfFileDeleter(file));
|
|
instance->_this = instance;
|
|
|
|
// initializes revision specific data for the newest revision
|
|
@@ -2423,14 +2423,14 @@ using namespace utils;
|
|
// page is not available in pageList, searching has to be done
|
|
// find throws an exception if any problem found, otherwise pageDict_ptr
|
|
// contians Page dictionary at specified position.
|
|
- shared_ptr<CDict> rootPages_ptr=getPageTreeRoot(_this.lock());
|
|
+ boost::shared_ptr<CDict> rootPages_ptr=getPageTreeRoot(_this.lock());
|
|
if(!rootPages_ptr.get())
|
|
throw PageNotFoundException(pos);
|
|
- shared_ptr<CDict> pageDict_ptr=findPageDict(_this.lock(), rootPages_ptr, 1, pos, &nodeCountCache);
|
|
+ boost::shared_ptr<CDict> pageDict_ptr=findPageDict(_this.lock(), rootPages_ptr, 1, pos, &nodeCountCache);
|
|
|
|
// creates CPage instance from page dictionary and stores it to the pageList
|
|
CPage * page=CPageFactory::getInstance(pageDict_ptr);
|
|
- shared_ptr<CPage> page_ptr(page);
|
|
+ boost::shared_ptr<CPage> page_ptr(page);
|
|
pageList.insert(PageList::value_type(pos, page_ptr));
|
|
kernelPrintDbg(DBG_DBG, "New page added to the pageList size="<<pageList.size());
|
|
|
|
@@ -2452,7 +2452,7 @@ using namespace utils;
|
|
return pageCount;
|
|
}
|
|
|
|
- shared_ptr<CDict> rootDict=getPageTreeRoot(_this.lock());
|
|
+ boost::shared_ptr<CDict> rootDict=getPageTreeRoot(_this.lock());
|
|
if(!rootDict.get())
|
|
return 0;
|
|
pageCount=getKidsCount(rootDict, &nodeCountCache);
|
|
@@ -2531,7 +2531,7 @@ size_t CPdf::getPagePosition(const boost
|
|
}
|
|
|
|
|
|
-void CPdf::consolidatePageList(const shared_ptr<IProperty> & oldValue, const shared_ptr<IProperty> & newValue)
|
|
+void CPdf::consolidatePageList(const boost::shared_ptr<IProperty> & oldValue, const boost::shared_ptr<IProperty> & newValue)
|
|
{
|
|
using namespace utils;
|
|
|
|
@@ -2562,12 +2562,12 @@ using namespace utils;
|
|
{
|
|
kernelPrintDbg(DBG_DBG, "oldValue was simple page dictionary");
|
|
difference = -1;
|
|
- shared_ptr<CDict> oldDict_ptr=getCObjectFromRef<CDict>(oldValue);
|
|
+ boost::shared_ptr<CDict> oldDict_ptr=getCObjectFromRef<CDict>(oldValue);
|
|
|
|
for(PageList::iterator i=pageList.begin(); i!=pageList.end(); ++i)
|
|
{
|
|
// checks page's dictionary with old one
|
|
- shared_ptr<CPage> page=i->second;
|
|
+ boost::shared_ptr<CPage> page=i->second;
|
|
if(page->getDictionary() == oldDict_ptr)
|
|
{
|
|
i->second->invalidate();
|
|
@@ -2598,7 +2598,7 @@ using namespace utils;
|
|
bool found=false;
|
|
for(PageList::iterator i=pageList.begin(); i!=pageList.end();)
|
|
{
|
|
- shared_ptr<CPage> page=i->second;
|
|
+ boost::shared_ptr<CPage> page=i->second;
|
|
// checks page's dictionary whether it is in oldDict_ptr sub
|
|
// tree and if so removes it from pageList
|
|
if(isNodeDescendant(_this.lock(), ref, page->getDictionary()))
|
|
@@ -2698,7 +2698,7 @@ using namespace utils;
|
|
for(i=pageList.begin(); i!=pageList.end();)
|
|
{
|
|
size_t pos=i->first;
|
|
- shared_ptr<CPage> page=i->second;
|
|
+ boost::shared_ptr<CPage> page=i->second;
|
|
|
|
if(pos>=minPos)
|
|
{
|
|
@@ -2782,8 +2782,8 @@ using namespace utils;
|
|
bool countChanged=false;
|
|
if(interNode->containsProperty("Count"))
|
|
{
|
|
- shared_ptr<IProperty> countProp=interNode->getProperty("Count");
|
|
- shared_ptr<CInt> countInt;
|
|
+ boost::shared_ptr<IProperty> countProp=interNode->getProperty("Count");
|
|
+ boost::shared_ptr<CInt> countInt;
|
|
if(isRef(countProp))
|
|
{
|
|
try
|
|
@@ -2803,7 +2803,7 @@ using namespace utils;
|
|
interNode->delProperty("Count");
|
|
|
|
// adds new Count property with correct value
|
|
- countInt=shared_ptr<CInt>(CIntFactory::getInstance((int)count));
|
|
+ countInt=boost::shared_ptr<CInt>(CIntFactory::getInstance((int)count));
|
|
kernelPrintDbg(DBG_DBG, "replacing old Count property with new property value="<<count);
|
|
interNode->addProperty("Count", *countInt);
|
|
countChanged=true;
|
|
@@ -2842,7 +2842,7 @@ using namespace utils;
|
|
size_t index=0;
|
|
for(i=kids.begin(); i!=kids.end(); ++i, ++index)
|
|
{
|
|
- shared_ptr<IProperty> child=*i;
|
|
+ boost::shared_ptr<IProperty> child=*i;
|
|
if(!isRef(child))
|
|
{
|
|
// element is not reference, so we print warning and skip it
|
|
@@ -2861,16 +2861,16 @@ using namespace utils;
|
|
|
|
// gets target dictionary to check and consolidate - this doesn't throw
|
|
// because it is leaf or intermediate node
|
|
- shared_ptr<CDict> childDict=getCObjectFromRef<CDict>(child);
|
|
+ boost::shared_ptr<CDict> childDict=getCObjectFromRef<CDict>(child);
|
|
|
|
// each leaf and inter node has to have Parent property with refernce to
|
|
// this node (which is indirect object and so we can use its
|
|
// NOTE that change in Parent property doesn't require also interNode
|
|
// parent consolidation
|
|
- shared_ptr<CRef> parentRef;
|
|
+ boost::shared_ptr<CRef> parentRef;
|
|
if(childDict->containsProperty("Parent"))
|
|
{
|
|
- shared_ptr<IProperty> parentProp=childDict->getProperty("Parent");
|
|
+ boost::shared_ptr<IProperty> parentProp=childDict->getProperty("Parent");
|
|
if(isRef(parentProp))
|
|
parentRef=IProperty::getSmartCObjectPtr<CRef>(parentProp);
|
|
|
|
@@ -2881,7 +2881,7 @@ using namespace utils;
|
|
childDict->delProperty("Parent");
|
|
|
|
// adds new Parent property with correct value
|
|
- parentRef=shared_ptr<CRef>(CRefFactory::getInstance(interNodeRef));
|
|
+ parentRef=boost::shared_ptr<CRef>(CRefFactory::getInstance(interNodeRef));
|
|
kernelPrintDbg(DBG_DBG, "replacing old Parent property with new");
|
|
childDict->addProperty("Parent", *parentRef);
|
|
}else
|
|
@@ -2920,12 +2920,12 @@ using namespace utils;
|
|
// just prints warning messages and stops recursion
|
|
if(interNode->containsProperty("Parent"))
|
|
{
|
|
- shared_ptr<IProperty> parentProp=interNode->getProperty("Parent");
|
|
+ boost::shared_ptr<IProperty> parentProp=interNode->getProperty("Parent");
|
|
if(isRef(parentProp))
|
|
{
|
|
try
|
|
{
|
|
- shared_ptr<CDict> parentDict=getCObjectFromRef<CDict>(parentProp);
|
|
+ boost::shared_ptr<CDict> parentDict=getCObjectFromRef<CDict>(parentProp);
|
|
return consolidatePageTree(parentDict, true);
|
|
}catch(CObjectException & e)
|
|
{
|
|
@@ -2977,8 +2977,8 @@ using namespace utils;
|
|
// gets intermediate node where to insert new page
|
|
// in degenerated case, when there are no pages in the tree, we have to
|
|
// handle it special way
|
|
- shared_ptr<CDict> interNode_ptr;
|
|
- shared_ptr<CRef> currRef;
|
|
+ boost::shared_ptr<CDict> interNode_ptr;
|
|
+ boost::shared_ptr<CRef> currRef;
|
|
// by default it is root of page tree
|
|
interNode_ptr=getPageTreeRoot(_this.lock());
|
|
if(!interNode_ptr.get())
|
|
@@ -2993,23 +2993,23 @@ using namespace utils;
|
|
// searches for page at storePosition and gets its reference
|
|
// page dictionary has to be an indirect object, so getIndiRef returns
|
|
// dictionary reference
|
|
- shared_ptr<CDict> currentPage_ptr=findPageDict(_this.lock(), interNode_ptr, 1, storePostion, &nodeCountCache);
|
|
- currRef=shared_ptr<CRef>(CRefFactory::getInstance(currentPage_ptr->getIndiRef()));
|
|
+ boost::shared_ptr<CDict> currentPage_ptr=findPageDict(_this.lock(), interNode_ptr, 1, storePostion, &nodeCountCache);
|
|
+ currRef=boost::shared_ptr<CRef>(CRefFactory::getInstance(currentPage_ptr->getIndiRef()));
|
|
|
|
// gets parent of found dictionary which maintains
|
|
- shared_ptr<IProperty> parentRef_ptr=currentPage_ptr->getProperty("Parent");
|
|
+ boost::shared_ptr<IProperty> parentRef_ptr=currentPage_ptr->getProperty("Parent");
|
|
interNode_ptr=getCObjectFromRef<CDict>(parentRef_ptr);
|
|
}
|
|
|
|
// gets Kids array where to insert new page dictionary
|
|
- shared_ptr<IProperty> kidsProp_ptr=interNode_ptr->getProperty("Kids");
|
|
+ boost::shared_ptr<IProperty> kidsProp_ptr=interNode_ptr->getProperty("Kids");
|
|
if(kidsProp_ptr->getType()!=pArray)
|
|
{
|
|
kernelPrintDbg(DBG_ERR, "Pages Kids field is not an array type="<<kidsProp_ptr->getType());
|
|
// Kids is not array - malformed intermediate node
|
|
throw MalformedFormatExeption("Intermediate node Kids field is not an array.");
|
|
}
|
|
- shared_ptr<CArray> kids_ptr=IProperty::getSmartCObjectPtr<CArray>(kidsProp_ptr);
|
|
+ boost::shared_ptr<CArray> kids_ptr=IProperty::getSmartCObjectPtr<CArray>(kidsProp_ptr);
|
|
|
|
// gets index in Kids array where to store.
|
|
// by default insert at 1st position (index is 0)
|
|
@@ -3032,8 +3032,8 @@ using namespace utils;
|
|
|
|
// Now it is safe to add indirect object, because there is nothing that can
|
|
// fail
|
|
- shared_ptr<CDict> pageDict=page->getDictionary();
|
|
- shared_ptr<CPdf> pageDictPdf = pageDict->getPdf().lock();
|
|
+ boost::shared_ptr<CDict> pageDict=page->getDictionary();
|
|
+ boost::shared_ptr<CPdf> pageDictPdf = pageDict->getPdf().lock();
|
|
if(pageDictPdf && pageDictPdf !=_this.lock())
|
|
{
|
|
// page comes from different valid pdf - we have to create clone and
|
|
@@ -3085,8 +3085,8 @@ using namespace utils;
|
|
// page dictionary is stored in the tree, consolidation is also done at this
|
|
// moment
|
|
// CPage can be created and inserted to the pageList
|
|
- shared_ptr<CDict> newPageDict_ptr=IProperty::getSmartCObjectPtr<CDict>(getIndirectProperty(pageRef));
|
|
- shared_ptr<CPage> newPage_ptr(CPageFactory::getInstance(newPageDict_ptr));
|
|
+ boost::shared_ptr<CDict> newPageDict_ptr=IProperty::getSmartCObjectPtr<CDict>(getIndirectProperty(pageRef));
|
|
+ boost::shared_ptr<CPage> newPage_ptr(CPageFactory::getInstance(newPageDict_ptr));
|
|
pageList.insert(PageList::value_type(storePostion+append, newPage_ptr));
|
|
kernelPrintDbg(DBG_DBG, "New page added to the pageList size="<<pageList.size());
|
|
return newPage_ptr;
|
|
@@ -3113,21 +3113,21 @@ using namespace utils;
|
|
// Searches for page dictionary at given pos and gets its reference.
|
|
// getPageTreeRoot doesn't fail, because we are in page range and so it has
|
|
// to exist
|
|
- shared_ptr<CDict> rootDict=getPageTreeRoot(_this.lock());
|
|
- shared_ptr<CDict> currentPage_ptr=findPageDict(_this.lock(), rootDict, 1, pos, &nodeCountCache);
|
|
- shared_ptr<CRef> currRef(CRefFactory::getInstance(currentPage_ptr->getIndiRef()));
|
|
+ boost::shared_ptr<CDict> rootDict=getPageTreeRoot(_this.lock());
|
|
+ boost::shared_ptr<CDict> currentPage_ptr=findPageDict(_this.lock(), rootDict, 1, pos, &nodeCountCache);
|
|
+ boost::shared_ptr<CRef> currRef(CRefFactory::getInstance(currentPage_ptr->getIndiRef()));
|
|
|
|
// Gets parent field from found page dictionary and gets its Kids array
|
|
- shared_ptr<IProperty> parentRef_ptr=currentPage_ptr->getProperty("Parent");
|
|
- shared_ptr<CDict> interNode_ptr=getCObjectFromRef<CDict>(parentRef_ptr);
|
|
- shared_ptr<IProperty> kidsProp_ptr=interNode_ptr->getProperty("Kids");
|
|
+ boost::shared_ptr<IProperty> parentRef_ptr=currentPage_ptr->getProperty("Parent");
|
|
+ boost::shared_ptr<CDict> interNode_ptr=getCObjectFromRef<CDict>(parentRef_ptr);
|
|
+ boost::shared_ptr<IProperty> kidsProp_ptr=interNode_ptr->getProperty("Kids");
|
|
if(kidsProp_ptr->getType()!=pArray)
|
|
{
|
|
kernelPrintDbg(DBG_ERR, "Pages Kids field is not an array type="<<kidsProp_ptr->getType());
|
|
// Kids is not array - malformed intermediate node
|
|
throw MalformedFormatExeption("Intermediate node Kids field is not an array.");
|
|
}
|
|
- shared_ptr<CArray> kids_ptr=IProperty::getSmartCObjectPtr<CArray>(kidsProp_ptr);
|
|
+ boost::shared_ptr<CArray> kids_ptr=IProperty::getSmartCObjectPtr<CArray>(kidsProp_ptr);
|
|
|
|
// gets index of searched node in Kids array and removes element from found
|
|
// position - if position can't be determined unambiguously (getPropertyId
|