PoDoFo  0.9.4
Public Member Functions | Protected Member Functions | List of all members
PoDoFo::PdfVariant Class Reference

#include <PdfVariant.h>

Inheritance diagram for PoDoFo::PdfVariant:
PoDoFo::PdfObject PoDoFo::PdfParserObject PoDoFo::PdfXRefStreamParserObject

Public Member Functions

 PdfVariant ()
 
 PdfVariant (bool b)
 
 PdfVariant (pdf_int64 l)
 
 PdfVariant (double d)
 
 PdfVariant (const PdfString &rsString)
 
 PdfVariant (const PdfName &rName)
 
 PdfVariant (const PdfReference &rRef)
 
 PdfVariant (const PdfArray &tList)
 
 PdfVariant (const PdfDictionary &rDict)
 
 PdfVariant (const PdfData &rData)
 
 PdfVariant (const PdfVariant &rhs)
 
bool IsEmpty () const
 
void Clear ()
 
EPdfDataType GetDataType () const
 
const char * GetDataTypeString () const
 
bool IsBool () const
 
bool IsNumber () const
 
bool IsReal () const
 
bool IsString () const
 
bool IsHexString () const
 
bool IsName () const
 
bool IsArray () const
 
bool IsDictionary () const
 
bool IsRawData () const
 
bool IsNull () const
 
bool IsReference () const
 
void Write (PdfOutputDevice *pDevice, EPdfWriteMode eWriteMode, const PdfEncrypt *pEncrypt=NULL) const
 
virtual void Write (PdfOutputDevice *pDevice, EPdfWriteMode eWriteMode, const PdfEncrypt *pEncrypt, const PdfName &keyStop) const
 
void ToString (std::string &rsData, EPdfWriteMode eWriteMode=ePdfWriteMode_Clean) const
 
void SetBool (bool b)
 
bool GetBool () const
 
void SetNumber (long l)
 
pdf_int64 GetNumber () const
 
void SetReal (double d)
 
double GetReal () const
 
const PdfStringGetString () const
 
const PdfNameGetName () const
 
const PdfArrayGetArray () const
 
PdfArrayGetArray ()
 
const PdfDictionaryGetDictionary () const
 
PdfDictionaryGetDictionary ()
 
const PdfReferenceGetReference () const
 
const PdfDataGetRawData () const
 
PdfDataGetRawData ()
 
const PdfVariantoperator= (const PdfVariant &rhs)
 
bool operator== (const PdfVariant &rhs) const
 
bool operator!= (const PdfVariant &rhs) const
 
bool IsDirty () const
 
void SetImmutable (bool bImmutable)
 
bool GetImmutable () const
 

Protected Member Functions

void AssertMutable () const
 
void SetDirty (bool bDirty)
 
void DelayedLoad () const
 
void EnableDelayedLoading ()
 
virtual void DelayedLoadImpl ()
 
PODOFO_NOTHROW bool DelayedLoadDone () const
 
const PdfDictionaryGetDictionary_NoDL () const
 
PdfDictionaryGetDictionary_NoDL ()
 
const PdfArrayGetArray_NoDL () const
 
PdfArrayGetArray_NoDL ()
 

Detailed Description

A variant data type which supports all data types supported by the PDF standard. The data can be parsed directly from a string or set by one of the members. One can also convert the variant back to a string after setting the values.

Warning
All methods not marked otherwise may trigger a deferred load. This means that they are unsafe to call while a deferred load is already in progress (as recursion will occurr).

TODO: domseichter: Make this class implicitly shared

Constructor & Destructor Documentation

PoDoFo::PdfVariant::PdfVariant ( )

Construct an empty variant type IsNull() will return true.

PoDoFo::PdfVariant::PdfVariant ( bool  b)

Construct a PdfVariant that is a bool.

Parameters
bthe boolean value of this PdfVariant
PoDoFo::PdfVariant::PdfVariant ( pdf_int64  l)

Construct a PdfVariant that is a number.

Parameters
lthe value of the number.
PoDoFo::PdfVariant::PdfVariant ( double  d)

Construct a PdfVariant that is a real number.

Parameters
dthe value of the real number.
PoDoFo::PdfVariant::PdfVariant ( const PdfString rsString)

Construct a PdfVariant that is a string. The argument string will be escaped where necessary, so it should be passed in unescaped form.

Parameters
rsStringthe value of the string
PoDoFo::PdfVariant::PdfVariant ( const PdfName rName)

Construct a PdfVariant that is a name.

Parameters
rNamethe value of the name
PoDoFo::PdfVariant::PdfVariant ( const PdfReference rRef)

Construct a PdfVariant that is a name.

Parameters
rRefthe value of the name
PoDoFo::PdfVariant::PdfVariant ( const PdfArray tList)

Construct a PdfVariant object with array data. The variant will automatically get the datatype ePdfDataType_Array. This constructor is the fastest way to create a new PdfVariant that is an array.

Parameters
tLista list of variants
PoDoFo::PdfVariant::PdfVariant ( const PdfDictionary rDict)

Construct a PdfVariant that is a dictionary.

Parameters
rDictthe value of the dictionary.
PoDoFo::PdfVariant::PdfVariant ( const PdfData rData)

Construct a PdfVariant that contains raw PDF data.

Parameters
rDataraw and valid PDF data.
PoDoFo::PdfVariant::PdfVariant ( const PdfVariant rhs)

Constructs a new PdfVariant which has the same contents as rhs.

Parameters
rhsan existing variant which is copied.

Member Function Documentation

void PoDoFo::PdfVariant::AssertMutable ( ) const
inlineprotected

Will throw an exception if called on an immutable object, so this should be called before actually changing a value!

void PoDoFo::PdfVariant::Clear ( )

Clear all internal member variables and free the memory they have allocated. Sets the datatype to ePdfDataType_Null

This will reset the dirty flag of this object to be clean.

See also
IsDirty
void PoDoFo::PdfVariant::DelayedLoad ( ) const
inlineprotected

Dynamically load the contents of this object from a PDF file by calling the virtual method DelayedLoadImpl() if the object is not already loaded.

For objects complete created in memory and those that do not support deferred loading this function does nothing, since deferred loading will not be enabled.

bool PoDoFo::PdfVariant::DelayedLoadDone ( ) const
inlineprotected

Returns true if delayed loading is disabled, or if it is enabled and loading has completed. External callers should never need to see this, it's an internal state flag only.

void PoDoFo::PdfVariant::DelayedLoadImpl ( )
inlineprotectedvirtual

Load all data of the object if delayed loading is enabled.

Never call this method directly; use DelayedLoad() instead.

You should override this to control deferred loading in your subclass. Note that this method should not load any associated streams, just the base object.

The default implementation throws. It should never be called, since objects that do not support delayed loading should not enable it.

While this method is not `const' it may be called from a const context, so be careful what you mess with.

Reimplemented in PoDoFo::PdfParserObject.

void PoDoFo::PdfVariant::EnableDelayedLoading ( )
inlineprotected

Flag the object incompletely loaded. DelayedLoad() will be called when any method that requires more information than is currently available is loaded.

All constructors initialize a PdfVariant with delayed loading disabled . If you want delayed loading you must ask for it. If you do so, call this method early in your ctor and be sure to override DelayedLoadImpl().

const PdfArray & PoDoFo::PdfVariant::GetArray ( ) const
inline

Returns the value of the object as array

Returns
a array
PdfArray & PoDoFo::PdfVariant::GetArray ( )
inline

Returns the value of the object as array

Returns
a array
const PdfArray & PoDoFo::PdfVariant::GetArray_NoDL ( ) const
inlineprotected

Version of GetArray() that doesn't trigger a delayed load

Returns
a PdfArray
PdfArray & PoDoFo::PdfVariant::GetArray_NoDL ( )
inlineprotected

Version of GetArray() that doesn't trigger a delayed load.

Returns
a PdfArray
bool PoDoFo::PdfVariant::GetBool ( ) const
inline

Get the value if this object is a bool.

Returns
the bool value.
EPdfDataType PoDoFo::PdfVariant::GetDataType ( ) const
inline
Returns
the datatype of this object or ePdfDataType_Unknown if it does not have a value.
const char * PoDoFo::PdfVariant::GetDataTypeString ( ) const
Returns
a human readable string representation of GetDataType() The returned string must not be free'd.
const PdfDictionary & PoDoFo::PdfVariant::GetDictionary ( ) const
inline

Returns the dictionary value of this object

Returns
a PdfDictionary
PdfDictionary & PoDoFo::PdfVariant::GetDictionary ( )
inline

Returns the dictionary value of this object

Returns
a PdfDictionary
const PdfDictionary & PoDoFo::PdfVariant::GetDictionary_NoDL ( ) const
inlineprotected

Version of GetDictionary() that doesn't trigger a delayed load

Returns
a PdfDictionary
PdfDictionary & PoDoFo::PdfVariant::GetDictionary_NoDL ( )
inlineprotected

Version of GetDictionary() that doesn't trigger a delayed load

Returns
a PdfDictionary
bool PoDoFo::PdfVariant::GetImmutable ( ) const
inline

Retrieve if an object is immutable.

This is used by PdfImmediateWriter and PdfStreamedDocument so that no keys can be added to an object after setting stream data on it.

Returns
true if the object is immutable
const PdfName & PoDoFo::PdfVariant::GetName ( ) const
inline
Returns
the value of the object as name
pdf_int64 PoDoFo::PdfVariant::GetNumber ( ) const
inline

Get the value of the object as long.

Returns
the value of the number
const PdfData & PoDoFo::PdfVariant::GetRawData ( ) const
inline

Get the reference values of this object.

Returns
a reference to the PdfData instance.
PdfData & PoDoFo::PdfVariant::GetRawData ( )
inline

Get the reference values of this object.

Returns
a reference to the PdfData instance.
double PoDoFo::PdfVariant::GetReal ( ) const
inline

Get the value of the object as double.

Returns
the value of the number
const PdfReference & PoDoFo::PdfVariant::GetReference ( ) const
inline

Get the reference values of this object.

Returns
a PdfReference
const PdfString & PoDoFo::PdfVariant::GetString ( ) const
inline
Returns
the value of the object as string.
bool PoDoFo::PdfVariant::IsArray ( ) const
inline
Returns
true if this variant is an array (i.e. GetDataType() == ePdfDataType_Array)
bool PoDoFo::PdfVariant::IsBool ( ) const
inline
Returns
true if this variant is a bool (i.e. GetDataType() == ePdfDataType_Bool)
bool PoDoFo::PdfVariant::IsDictionary ( ) const
inline
Returns
true if this variant is a dictionary (i.e. GetDataType() == ePdfDataType_Dictionary)
bool PoDoFo::PdfVariant::IsDirty ( ) const
inline

The dirty flag is set if this variant has been modified after construction.

Usually the dirty flag is also set if you call any non-const member function (e.g. GetDictionary()) as PdfVariant cannot determine if you actually changed the dictionary or not.

Returns
true if the value is dirty and has been modified since construction
bool PoDoFo::PdfVariant::IsEmpty ( ) const
inline
Returns
true if this PdfVariant is empty. i.e. m_eDataType == ePdfDataType_Null
bool PoDoFo::PdfVariant::IsHexString ( ) const
inline
Returns
true if this variant is a hex-string (i.e. GetDataType() == ePdfDataType_HexString)
bool PoDoFo::PdfVariant::IsName ( ) const
inline
Returns
true if this variant is a name (i.e. GetDataType() == ePdfDataType_Name)
bool PoDoFo::PdfVariant::IsNull ( ) const
inline
Returns
true if this variant is null (i.e. GetDataType() == ePdfDataType_Null)
bool PoDoFo::PdfVariant::IsNumber ( ) const
inline
Returns
true if this variant is a number (i.e. GetDataType() == ePdfDataType_Number)
bool PoDoFo::PdfVariant::IsRawData ( ) const
inline
Returns
true if this variant is raw data (i.e. GetDataType() == ePdfDataType_RawData
bool PoDoFo::PdfVariant::IsReal ( ) const
inline
Returns
true if this variant is a real (i.e. GetDataType() == ePdfDataType_Real)
bool PoDoFo::PdfVariant::IsReference ( ) const
inline
Returns
true if this variant is a reference (i.e. GetDataType() == ePdfDataType_Reference)
bool PoDoFo::PdfVariant::IsString ( ) const
inline
Returns
true if this variant is a string (i.e. GetDataType() == ePdfDataType_String)
bool PoDoFo::PdfVariant::operator!= ( const PdfVariant rhs) const
inline
See also
operator==
const PdfVariant & PoDoFo::PdfVariant::operator= ( const PdfVariant rhs)

Assign the values of another PdfVariant to this one.

Parameters
rhsan existing variant which is copied.

This will set the dirty flag of this object.

See also
IsDirty
bool PoDoFo::PdfVariant::operator== ( const PdfVariant rhs) const

Test to see if the value contained by this variant is the same as the value of the other variant.

void PoDoFo::PdfVariant::SetBool ( bool  b)
inline

Set the value of this object as bool

Parameters
bthe value as bool.

This will set the dirty flag of this object.

See also
IsDirty
void PoDoFo::PdfVariant::SetDirty ( bool  bDirty)
inlineprotected

Sets the dirty flag of this PdfVariant

Parameters
bDirtytrue if this PdfVariant has been modified from the outside
See also
IsDirty
void PoDoFo::PdfVariant::SetImmutable ( bool  bImmutable)
inline

Sets this object to immutable, so that no keys can be edited or changed.

Parameters
bImmutableif true set the object to be immutable

This is used by PdfImmediateWriter and PdfStreamedDocument so that no keys can be added to an object after setting stream data on it.

void PoDoFo::PdfVariant::SetNumber ( long  l)
inline

Set the value of this object as long

Parameters
lthe value as long.

This will set the dirty flag of this object.

See also
IsDirty
void PoDoFo::PdfVariant::SetReal ( double  d)
inline

Set the value of this object as double

Parameters
dthe value as double.

This will set the dirty flag of this object.

See also
IsDirty
void PoDoFo::PdfVariant::ToString ( std::string &  rsData,
EPdfWriteMode  eWriteMode = ePdfWriteMode_Clean 
) const

Converts the current object into a string representation which can be written directly to a PDF file on disc.

Parameters
rsDatathe object string is returned in this object.
eWriteModeadditional options for writing to a string
void PoDoFo::PdfVariant::Write ( PdfOutputDevice pDevice,
EPdfWriteMode  eWriteMode,
const PdfEncrypt pEncrypt = NULL 
) const

Write the complete variant to an output device. This is an overloaded member function.

Parameters
pDevicewrite the object to this device
eWriteModeadditional options for writing this object
pEncryptan encryption object which is used to encrypt this object or NULL to not encrypt this object
void PoDoFo::PdfVariant::Write ( PdfOutputDevice pDevice,
EPdfWriteMode  eWriteMode,
const PdfEncrypt pEncrypt,
const PdfName keyStop 
) const
virtual

Write the complete variant to an output device.

Parameters
pDevicewrite the object to this device
eWriteModeadditional options for writing this object
pEncryptan encryption object which is used to encrypt this object or NULL to not encrypt this object
keyStopif not KeyNull and a key == keyStop is found writing will stop right before this key! if IsDictionary returns true.