Giter Club home page Giter Club logo

ticpp's People

Contributors

gyrosgeier avatar jhasse avatar mister-meeseeks avatar orbitcowboy avatar patlkli avatar redtide avatar rjpcomputing avatar ryanjmulder avatar sodevel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ticpp's Issues

response to rpusztai

rpusztai regarding my post that you deleted: 
I e-mailed the exact same msg to Lee and he did not respond rudely.  

 Below is what I posted to back to Lee.  Just FYI.

Hello Lee -

I am sorry too as I like to get work done, not figure out what is wrong
with a tool.  Your website invites feedback, bad or good, so I gave it.  I
believe that TOO MANY high IQ software engineers fall short when it comes
to making things simple, and thinking about the next guy.   I saw you
worked for Adobe, and I would be surprised if they don't require excellence
in every aspect.  I realize that TinyXML++ is free software, but does that
mean expectations should be lowered?  It is a rhetorical question as I only
wish software engineers would realize that simple is hard and try to strive
for it. Try to think like a Steve Jobs.

Best,

BTW, I posted my comment on the website and received a RUDE response from a
rpusztai.  I am not in any way affiliated with CodeSynthesis.  I posted on
the website so that google etc. could index my comments.   I think that
comments and feedback are important  and help to guide decisions.  I am
starting to work with CodeSynthesis and thus far I think it is a much more
mature and complete solution than TinyXML++, but overkill for my needs.  As
I think you can relate to, something simpler would have been preferred.

Original issue reported on code.google.com by [email protected] on 24 Apr 2009 at 8:02

i think there is a memoryleak in LinkEndChild(..)

A code like:

ticpp::Element* pElem=...doesnt matter..
ticpp::Element* element=new ticpp::Element(name);
ticpp::Text* elementtext=new ticpp::Text(text);
element->LinkEndChild(elementtext);
pElem->LinkEndChild(element);

doesnt free the memory when pElem is destroyed.

My english isnt well enough to descripe the problem any further so
i wrote a little testprogramm to show you the problem.
Its just a little function in a loop which adds some Elements to a
document. if you look on the memory the programm needs, you can see it growing.

I hope you understand what im trying to tell you :) if you have any
questions or i made a mistake just mail me...


Original issue reported on code.google.com by [email protected] on 5 Mar 2009 at 10:51

Attachments:

TinyXML++ experience poor, will now try CodeSynthesis XSD


I thought that I would write here (since there is no forum) and mention
that my experience with TinyXML++ was very poor.  I was looking for a quick
and easy solution for reading/writing C++ object configuration files.  As
such I came across TinyXML++ and CodeSynthesis XSD.  The latter being a XML
Data binder for C++.  I read on both and decided upon TinyXML++ simply
because I thought CodeSynthesis required more configuration, making my
project as a whole less portable and more hassle to work with at future
dates if there are interruptions...i.e. I hate working with something and
then coming back to it months later and having to figure out again how to
run a separate compiler.   I strive for simplicity in configuration, and
use.   So I tried TinyXML++ and now have decided to abandon it.  Here is my
brief assesment of TinyXML++:

Documentation is very poor.  Premake instructions are not up to date, and
examples in the tutorial are incomplete.
Source commenting is almost non existent.
Was able to build lib file with MSVS but then got exception, in my program,
when trying to load a test XML file.
Tried to build TinyXML as part of my program but ran into numerous errors.

To sum up, way too much difficulty involved to mess further with,
especially for something that is supposed to be minimalistic.   As a
programmer I forgive a lack of good documentation etc. only if they just
work and have zero defects.



Original issue reported on code.google.com by [email protected] on 23 Apr 2009 at 10:13

Memory leaks using Node::InsertEndChild()

# What steps will reproduce the problem?

    Document doc;
    Element elem("Element");
    doc.InsertEndChild(elem);

# What is the expected output? What do you see instead?

I would expect, that no memory leaks are occuring. Instead I see two
objects created at ticpp.cpp(1084, TiCppRC::TiCppRC()) and one created at
ticpp.cpp(881, Element::Element()).

# What version of the product are you using? On what operating system?

Version 2.5.3. Windows XP, VS2005.

# Please provide any additional information below.

I think the reference count of addThis in Node::InsertEndChild() must not
be incremented (remove "addThis.m_impRC->IncRef();"). As far as I
understand, an independend copy is created in TiXmlNode::InsertEndChild()
with TiXmlNode* node = addThis.Clone(); ?

At least in my project it helped ;-)

Original issue reported on code.google.com by [email protected] on 24 Feb 2008 at 8:30

Patch for more detailed error messages

Hi,
i replaced lines 1749 and 1781 in File ticpp.h from revision 98 through
this line:

TICPPTHROW("Attribute '" << name << "' does not exist in node '" << Value()
<<"'");

(so i added the information about the attribute name and an name from the
node).

Original issue reported on code.google.com by [email protected] on 7 Nov 2008 at 12:03

Creating XML with ticpp can be very verbose

The current TinyXML++ API requires that each XML node is created, and added
to a parent, explicitly.  As such, it can quickly become verbose.  Consider
the following example:

    Element measurements("measurements");
    Element tbr("TotalBytesReceived");
    tbr.SetAttribute("displayName", "Total Bytes Received");
    tbr.SetText(12);
    Element tbp("TotalBytesProcessed");
    tbp.SetAttribute("displayName", "Total Bytes Processed");
    tbp.SetText(14);
    Element teb("TotalErroredBytes");
    teb.SetAttribute("displayName", "Total Errored Bytes");
    teb.SetText(42);
    measurements.InsertEndChild(tbr);
    measurements.InsertEndChild(tbp);
    measurements.InsertEndChild(teb);
    root->InsertEndChild(measurements);

That produces the following XML snippet:

    <measurements>
        <TotalBytesReceived displayName="Total Bytes
Received">12</TotalBytesReceived>
        <TotalBytesProcessed displayName="Total Bytes
Processed">14</TotalBytesProcessed>
        <TotalErroredBytes displayName="Total Errored
Bytes">42</TotalErroredBytes>
    </measurements>

Through the use of judicious operator overloading we could have syntax like
the following:

    *root <<
        (Element("measurements")
            << (Element("TotalBytesReceived")("displayName", "Total Bytes
Received") = 12)
            << (Element("TotalBytesProcessed")("displayName", "Total Bytes
Processed") = 14)
            << (Element("TotalErroredBytes")("displayName", "Total Errored
Bytes") = 42));

(I've attached a trivial patch that allows this.)

For me this is a significant improvement.  In particular I the SetAttribute
(operator()()) and SetText (operator=) changes fit well IMO.  I'm less
happy with operator<< inserting a node...I'm still experimenting.

So, generally, the issue is that ticpp is quite verbose and we could
possibly make improvements.  What do you think?

[Also, is it possible to start a discussion board?  This isn't really the
right place to discuss improvements but there doesn't seem to be anywhere
else to communicate!  We intend to use ticpp a fair bit within our company
and I'd like to try and help where I can.]

Original issue reported on code.google.com by [email protected] on 7 Apr 2009 at 2:26

Attachments:

Official download page contains no download

Hi,

the official download page on http://code.google.com/p/ticpp/downloads/list
contains no downloads. The only version of ticpp available from
code.google.com is therefore the snapshot from
http://code.google.com/p/ticpp/source/checkout

Is this the intent?

Ciao,
Mark Roberts

Original issue reported on code.google.com by [email protected] on 17 Oct 2008 at 2:28

More detailed exception types

I am curious why the design of ticpp is such that there is only one main
ticpp::Exception class and that every member call that might throw an
exception, just throws this? Why not have a parent ticpp exception class,
that can still derive from std::exception, but then have a much more
detailed hierarchy of exception classes underneath that are more specific
to the error that results? This is a much better approach than one class
type with each just setting the text of what occurred.


Original issue reported on code.google.com by [email protected] on 19 May 2008 at 2:07

Not an issue - suggested merging

First, thx for your work. It helps me a lot ;-)

Just a little suggestion:

What about merging the projects around tinyXML: tinyXML, tinyXML++,
tinyXPath, tinyBind in one complete toolkit with tinyXML in the middle and
additional modules around ?
 At least, tinyXML and tinyXML++... This would avoid cross patching to get
a functional, up to date version (for example, tinyXML++ added support in
tinyXML sources for StyleSheetReferences that tinyXML "legacy code" has not) 

This morning, I merged manually the 4 projects with up to date sources for
each one (for tinyBind, I don't know if it's really alive...)

So I had to make some diff between the redistributed tinyXML in each
project and the original version to get changes added by each team. Then I
made a diff between tinyXML 2.5.3 and SVN HEAD. Finally, I took 2.5.3 and
applied all patches in sequence...

So I get tinyXML + tinyXML++ + tinyXPath + tinyBind in 4 small libs
interacting correctly. Fine.

But cross patching makes errors more probable. As projects are separated,
this merging done today will be probably very hard to maintain tomorrow.

Feel free to contact me for discussion...


Original issue reported on code.google.com by [email protected] on 8 Nov 2007 at 9:57

Rebuild Documentation

Hi
i was searching for about 30 Minutes for a way to determine whether an
Attribut exists or not. I didn't find one, so i decided to write it myself.
Then i saw the Function HasAttribute, which doesn't occur in the documentation.
You are using Doxygen, so it should'nt be to hard, to make a rebuild from
the documentation.

Original issue reported on code.google.com by [email protected] on 7 Nov 2008 at 8:40

Memory leak

SVN revision 99

~TiCppRC() does not destroy correctly m_tiRC.

Here is the code

TiCppRC::~TiCppRC()
{   
    DeleteSpawnedWrappers();

    // Set pointer held by reference counter to NULL
    this->m_tiRC->Nullify();

    // Decrement reference - so reference counter will delete itself if necessary
    this->m_tiRC->DecRef();
}

The problem is TiCppRCImp(). Nullify() will put ref count to zero, then
DecRef() will decrement it once more, becoming negative, then test "if ( 0
== m_count )" will fail and object will never be destructed.

Simple solution is to replace == by >=

void TiCppRCImp::DecRef()
{
    --m_count;
    if ( 0 >= m_count )
    {
        delete m_tiCppRC;
        delete this;
    }
}


There seems to be another leak. Chasing it

Original issue reported on code.google.com by [email protected] on 5 May 2009 at 1:29

Improve Exceptions for Linux

If an Exception inherits from std::exception, Linux will print the name and
what() when there is an uncaught exception.  This is much more meaningful
than a core dump.

Original issue reported on code.google.com by [email protected] on 13 Feb 2007 at 7:32

the VC2005 project does not create stub lib for the DLL build (--shared)

What steps will reproduce the problem?
1. premake --target vs2005 --unicode --shared
2. build using vs2005
3. DLL are created but no stub lib files 

What is the expected output? What do you see instead?
stub .lib files must exists

What version of the product are you using? On what operating system?
-

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 20 Jan 2008 at 8:59

error in Document::Load

Visual Studio reports buffer overrun in Document::LoadFile method. Code 
from revision 78 works ok.

Original issue reported on code.google.com by [email protected] on 24 Nov 2008 at 8:56

Suggested improvements (patch supplied)

Here is a patch which does the following:

- Adds support for ticpp::Document::Parse(), wrapping the functionality of
TiXmlDocument::Parse()

- Adds support to ticpp::Node for std::stream << and >> operators, wrapping
the functionality of TiXmlNode's friendly streaming operators.

- Adds an template Element() constructor that allws you to also specify
element text (any variable). This is especially useful, as you can now in
one line go:
node.LinkEndChild( &ticpp::Element( "some-tag", some_val ) );

- Improves THROW() macro (now called TICPPTHROW) so it doesn't clash with
MFC macro of the same name and now creates a {block}, so that funny-named
variable can be dispensed with!

- Bases ticpp::Exception on std::exception (as previously requested). This
also means you can now catch all STL and TICPP exceptions in one catch
statement if you want, or two if you want to distinguish.

- Fixes bug (unnecessary cleanup) in ticpp::NodeImp's copy constructor

If you want to apply the patch (for those that dont know), type the following:
  cd tinyxml++
  patch -p1 < tinyxml++.patch
if you're using windows, you might need to install gnu patch (or cygwin).

Original issue reported on code.google.com by [email protected] on 14 Mar 2007 at 6:35

Attachments:

ticpp::Iterator<T>.begin( Doc.FirstChildElement() ) does not return the same pointer value

What steps will reproduce the problem?

This is a code snippet:

    ticpp::Document Doc( XmlFilePath );
    Doc.LoadFile();
    ticpp::Element* RootElem = Doc.FirstChildElement();

    ticpp::Iterator< Element > Child;
    Child = Child.begin(RootElem);

    ticpp::Element* Begin2 = Child.begin(RootElem);

    if( Child == Begin2 ) {
        //We should always go in this block !!!
        //<code />
    }


What is the expected output? What do you see instead?
The comparison should return true, but it returns false instead.
I believe the begin method returns a different T pointer for the same Node*
parent parameter.

___

What version of the product are you using? On what operating system?

ticpp 2.5.3, windows XP SP2, vs2005, lib build /MDd /Od

___

Please provide any additional information below.

Thanks for your job! Best regards

Pierre 

Original issue reported on code.google.com by [email protected] on 22 Feb 2008 at 11:29

Base::FromString() introduces problems when converting string to values

With a xml element that looks like the following:
<MyElement value="10-">

and a code to parse the element:
int value = 0;
MyElement.GetAttribute();


One would usually expect the above code to produce an exception because the
value is incorrectly given, but the first two digits are converted into
integer value, and no exception is produced.

I suggest that there be additional mechanism that checks if the full string
is converted, in FromString() function

Original issue reported on code.google.com by [email protected] on 29 Oct 2008 at 11:01

Broken iterator usage example in TiXml++ tutorial

in "Use STL style iterators to move through nodes and attributes":

// Only iterates through Element nodes
ticpp::Iterator< ticpp::Element > child;
for ( child = parent->FirstChild(); child != child.end(); child++ )

but it should be 

// Only iterates through Element nodes
ticpp::Iterator< ticpp::Element > child;
for ( child = parent->FirstChildElement(); child != child.end(); child++ )

Comments iterator example may also be broken.

P.S. Windows XP SP2, MSVC 2003 SP1


Original issue reported on code.google.com by [email protected] on 27 Feb 2007 at 6:02

Conversion to TiXML types

This is not really a defect but rather a suggestion.

Why not add a conversion function to get default TinyXML type e.g from 
ticpp::Element to TiXMLElement. To interface with legacy code, sometimes I 
need to get back the TinyXML type. Currently it is using the Node::To 
function, which uses a "evil" dynamic_cast.

Original issue reported on code.google.com by [email protected] on 30 Mar 2009 at 4:38

Link error when build tinyxml++ in VS2008

I got the source from the trunk 
Used premake4 --ticpp-shared vs2008
Opened the resulting TinyXML++.sln with VS2008
Set the preprocessor definition TIXML_USE_STL
Build
get this output 

1>------ Build started: Project: TiCPP, Configuration: Debug Win32 ------
1>Compiling...
1>ticpp.cpp
1>tinystr.cpp
1>tinyxmlerror.cpp
1>tinyxmlparser.cpp
1>tynyxml.cpp
1>Generating Code...
1>Linking...
1>tinyxmlparser.obj : error LNK2019: unresolved external symbol "public:
static void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo
*,class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> > const &)"
(?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@ABV?$basic_string@DU?$char_traits@D@std@@
V?$allocator@D@2@@2@@Z)
referenced in function "public: __thiscall std::_Locinfo::_Locinfo(class
std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> > const &)"
(??0_Locinfo@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@
@1@@Z)
1>tynyxml.obj : error LNK2001: unresolved external symbol "public: static
void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,class
std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> > const &)"
(?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@ABV?$basic_string@DU?$char_traits@D@std@@
V?$allocator@D@2@@2@@Z)
1>lib\ticppd.dll : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at
"file://d:\data\btj\Berthing\tinyxml\obj\Debug\BuildLog.htm"
1>TiCPP - 3 error(s), 0 warning(s)

=========================
Any help is appreciated thanks



Original issue reported on code.google.com by [email protected] on 15 Feb 2009 at 10:44

Addes Clear() to TiXmlPrinter

Am I doing something wrong? I could not manage  a way to serialize elements 
with << operator. 
Considereing I'm doing this task a lot, i found necessary to add a function
TiXmlPrinter::Clear() because of my needs. It just clear the buffer string and 
allow to reuse the 
object.

void Clear() {buffer.clear();}

Original issue reported on code.google.com by [email protected] on 15 Jan 2009 at 8:58

memory leak ??

What steps will reproduce the problem?
1. see code below

What is the expected output? What do you see instead?
memory consumption increasing !! 

What version of the product are you using? On what operating system?
last one checkout done for here and also on 2.5.3

Please provide any additional information below.

(see valgrind output below)

[source lang="cpp"]
#include <ticpp.h>
#include <ostream>

using namespace std;

int main() {
    ticpp::Document   xml;
    string topName;

    ticpp::Node * _top;

    xml.LoadFile("test.xml");
    _top    = xml.FirstChild(false); // throwIfNoChildren=false
    topName = ((ticpp::Element*)_top)->GetAttribute("atom");

    cout << topName << endl;

    while (1) {
        ticpp::Element * pElem = _top->FirstChildElement();
        cout << pElem << endl;
    };
}


test.xml:
[source lang="cpp"]
<params atom="unit_2ddfba91" name="top">
        <atom name="base_22475976">
                <step value="0">
                        <param name="enRead" type="Boolean" value="True"/>
                        <param name="enWrite" type="Boolean" value="True"/>
                </step>
        </atom>
        <atom name="base_22111976">
                <step value="0">
                        <param name="enRead" type="Boolean" value="False"/>
                        <param name="enWrite" type="Boolean" value="True"/>
                </step>
        </atom>
</params>



[/source]

valgrind output:
valgrind --log-file=val --leak-resolution=high --leak-check=full
--show-reachable=yes test.out

...
==28684== 624 bytes in 12 blocks are still reachable in loss record 38 of 40
==28684==    at 0x4004790: operator new(unsigned) (vg_replace_malloc.c:164)
==28684==    by 0x80665A5: TiXmlElement::Parse(char const*,
TiXmlParsingData*, TiXmlEncoding) (in test.out)
==28684==    by 0x806623D: TiXmlElement::ReadValue(char const*,
TiXmlParsingData*, TiXmlEncoding) (in test.out)
==28684==    by 0x806670D: TiXmlElement::Parse(char const*,
TiXmlParsingData*, TiXmlEncoding) (in test.out)
==28684==    by 0x806623D: TiXmlElement::ReadValue(char const*,
TiXmlParsingData*, TiXmlEncoding) (in test.out)
==28684==    by 0x806670D: TiXmlElement::Parse(char const*,
TiXmlParsingData*, TiXmlEncoding) (in test.out)
==28684==    by 0x806623D: TiXmlElement::ReadValue(char const*,
TiXmlParsingData*, TiXmlEncoding) (in test.out)
==28684==    by 0x806670D: TiXmlElement::Parse(char const*,
TiXmlParsingData*, TiXmlEncoding) (in test.out)
==28684==    by 0x8066B6A: TiXmlDocument::Parse(char const*,
TiXmlParsingData*, TiXmlEncoding) (in test.out)
==28684==    by 0x8063333: TiXmlDocument::LoadFile(_IO_FILE*,
TiXmlEncoding) (in test.out)
==28684==    by 0x80634E9: TiXmlDocument::LoadFile(char const*,
TiXmlEncoding) (in test.out)
==28684==    by 0x804DFB4: ticpp::Document::LoadFile(char const*,
TiXmlEncoding) (in test.out)
==28684==
==28684==
==28684== 8,388,608 bytes in 1 blocks are still reachable in loss record 39
of 40
==28684==    at 0x4004790: operator new(unsigned) (vg_replace_malloc.c:164)
==28684==    by 0x805C5BB: std::vector<ticpp::Base*,
std::allocator<ticpp::Base*>
>::_M_insert_aux(__gnu_cxx::__normal_iterator<ticpp::Base**,
std::vector<ticpp::Base*, std::allocator<ticpp::Base*> > >, ticpp::Base*
const&) (in test.out)
==28684==    by 0x8054304: ticpp::Node::FirstChildElement(char const*,
bool) const (in test.out)
==28684==    by 0x805443E: ticpp::Node::FirstChildElement(bool) const (in
test.out)
==28684==    by 0x804AD95: main (params.cc:97)
==28684==
==28684==
==28684== 12,748,332 bytes in 1,062,361 blocks are still reachable in loss
record 40 of 40
==28684==    at 0x4004790: operator new(unsigned) (vg_replace_malloc.c:164)
==28684==    by 0x8053EC5: ticpp::Node::FirstChildElement(char const*,
bool) const (in test.out)
==28684==    by 0x805443E: ticpp::Node::FirstChildElement(bool) const (in
test.out)
==28684==    by 0x804AD95: main (params.cc:97)


Original issue reported on code.google.com by [email protected] on 25 Mar 2009 at 11:57

ticpp parses not conforming documents with more then one root element

What steps will reproduce the problem?
1. Load document with more than one root element.
2.
3.

What is the expected output? What do you see instead?
Going throw an exception.

What version of the product are you using? On what operating system?
latest at 2009 Jan 14th.

Please provide any additional information below.
According to the w3c specifications about a well formed document, one can see 
that:

"[Definition: There is exactly one element, called the root, or document 
element, no part of which 
appears in the content of any other element.] For all other elements, if the 
start-tag is in the 
content of another element, the end-tag is in the content of the same element. 
More simply 
stated, the elements, delimited by start- and end-tags, nest properly within 
each other.

[Definition: As a consequence of this, for each non-root element C in the 
document, there is one 
other element P in the document such that C is in the content of P, but is not 
in the content of 
any other element that is in the content of P. P is referred to as the parent 
of C, and C as a child 
of P.]"

It's clear that the root element must be unique. The current version of ticpp 
is parsing 
documents that have more than one root element.


Original issue reported on code.google.com by [email protected] on 15 Jan 2009 at 3:56

Trying to link against ticpp and seeing some weirdness

I am trying to link again ticpp with a very simple example of a program
(it's not meant to do anything, just a proof of linking with ticpp
successfully). The source of the program is the following:

#define TIXML_USE_TICPP

#include "ticpp.h"

int main()
{
    ticpp::Document xmldoc;

    return 0;
}

To compile, I issued this at my command line: g++ main.cpp -L/usr/lib -lticpp

libticpp.a is definitely located in /usr/lib/

To create the libticpp.a static library, I did a premake with the command
flag of: premake --target gnu

I'm not exactly sure why, but I get linking errors as follows:

drew@schumi:~/Projects/test_ticpp$ g++ main.cpp -L/usr/lib -lticpp
/tmp/ccRYFUpH.o: In function `main':
main.cpp:(.text+0x195): undefined reference to `ticpp::Document::Document()'
/tmp/ccRYFUpH.o: In function
`ticpp::NodeImp<TiXmlDocument>::operator=(ticpp::NodeImp<TiXmlDocument>
const&)':
main.cpp:(.text._ZN5ticpp7NodeImpI13TiXmlDocumentEaSERKS2_[ticpp::NodeImp<TiXmlD
ocument>::operator=(ticpp::NodeImp<TiXmlDocument>
const&)]+0x1b): undefined reference to `TiCppRCImp::DecRef()'
main.cpp:(.text._ZN5ticpp7NodeImpI13TiXmlDocumentEaSERKS2_[ticpp::NodeImp<TiXmlD
ocument>::operator=(ticpp::NodeImp<TiXmlDocument>
const&)]+0x3e): undefined reference to `TiCppRCImp::IncRef()'
/tmp/ccRYFUpH.o: In function `ticpp::NodeImp<TiXmlDocument>::~NodeImp()':
main.cpp:(.text._ZN5ticpp7NodeImpI13TiXmlDocumentED2Ev[ticpp::NodeImp<TiXmlDocum
ent>::~NodeImp()]+0x26):
undefined reference to `TiCppRCImp::DecRef()'
/tmp/ccRYFUpH.o: In function `ticpp::NodeImp<TiXmlDocument>::~NodeImp()':
main.cpp:(.text._ZN5ticpp7NodeImpI13TiXmlDocumentED0Ev[ticpp::NodeImp<TiXmlDocum
ent>::~NodeImp()]+0x26):
undefined reference to `TiCppRCImp::DecRef()'
/tmp/ccRYFUpH.o: In function `ticpp::NodeImp<TiXmlDocument>::~NodeImp()':
main.cpp:(.text._ZN5ticpp7NodeImpI13TiXmlDocumentED1Ev[ticpp::NodeImp<TiXmlDocum
ent>::~NodeImp()]+0x26):
undefined reference to `TiCppRCImp::DecRef()'
/tmp/ccRYFUpH.o: In function `ticpp::Base::ValidatePointer() const':
main.cpp:(.text._ZNK5ticpp4Base15ValidatePointerEv[ticpp::Base::ValidatePointer(
)
const]+0x14): undefined reference to `TiCppRCImp::IsNull()'
main.cpp:(.text._ZNK5ticpp4Base15ValidatePointerEv[ticpp::Base::ValidatePointer(
)
const]+0x1b8): undefined reference to
`ticpp::Exception::Exception(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'
main.cpp:(.text._ZNK5ticpp4Base15ValidatePointerEv[ticpp::Base::ValidatePointer(
)
const]+0x22e): undefined reference to `ticpp::Exception::~Exception()'
main.cpp:(.text._ZNK5ticpp4Base15ValidatePointerEv[ticpp::Base::ValidatePointer(
)
const]+0x236): undefined reference to `typeinfo for ticpp::Exception'
/tmp/ccRYFUpH.o: In function
`ticpp::Node::IterateFirst(std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, ticpp::Attribute**) const':
main.cpp:(.text._ZNK5ticpp4Node12IterateFirstERKSsPPNS_9AttributeE[ticpp::Node::
IterateFirst(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, ticpp::Attribute**)
const]+0x1a2): undefined reference to
`ticpp::Exception::Exception(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'
main.cpp:(.text._ZNK5ticpp4Node12IterateFirstERKSsPPNS_9AttributeE[ticpp::Node::
IterateFirst(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, ticpp::Attribute**)
const]+0x218): undefined reference to `ticpp::Exception::~Exception()'
main.cpp:(.text._ZNK5ticpp4Node12IterateFirstERKSsPPNS_9AttributeE[ticpp::Node::
IterateFirst(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&, ticpp::Attribute**)
const]+0x220): undefined reference to `typeinfo for ticpp::Exception'
collect2: ld returned 1 exit status


Original issue reported on code.google.com by [email protected] on 11 Jun 2008 at 4:58

Enter one-line summary

What steps will reproduce the problem?
1. Call Document::LoadFile(filename) with the file missing
2. Catch a std::exception (instead of the ticpp::Exception)
3. Check the what() - it's null

What is the expected output? What do you see instead?
- Exception::what() and Exception::~Exception() should be virtual

What version of the product are you using? On what operating system?
- Latest on trunk

Best regards,

Peter Welzien

Original issue reported on code.google.com by [email protected] on 25 Feb 2009 at 7:22

problem on Sun solaris 9 for SPARC

when compiling the .cpp file which including ticpp.h and configuring -
D "TIXML_USE_TICPP" option in compile command line, a error message would 
be display, for example "ticpp.h", line 1138: Error: Cannot return 
ticpp::Iterator<ticpp::Element> from a function that should return 
ticpp::Iterator<ticpp::Node>&.
I've tried compiling the same project in RedHat Linux, but not any error 
be shown. So, I'm wondering if those would be relate to compiler type?


What steps will reproduce the problem?
1. including ticpp.h in .cpp file
2. configure the -d "TIXML_USE_TICPP" option in compile command line
3.

What is the expected output? What do you see instead?


What version of the product are you using? On what operating system?
Sun solaris 9 for SPARC

Please provide any additional information below.

"ticpp.h", line 1138: Error: Cannot return ticpp::Iterator<ticpp::Element> 
from a function that should return ticpp::Iterator<ticpp::Node>&.


Original issue reported on code.google.com by [email protected] on 6 Feb 2009 at 8:28

linker errors with vs2008

What steps will reproduce the problem?
1. console app in vs2008

This is the first error during a link.
error LNK2019: unresolved external symbol "public: __thiscall 
ticpp::Document::Document(char const *)" (??0Document@ticpp@@QAE@PBD@Z) 
referenced in function _main

Everything works with vs2005 and the tinyxml.lib links fine in vs2008 but 
when I try to do a in a vs 2008 console app:

   ticpp::Document doc1( "demo.xml" );

I get linker errors.  I tried unicode and mbcs, made sure the runtime 
stuff matches, linking debug/debug builds etc...

Any help would be appreciated.  I will try to simplify the issue if this 
isn't an easy fix.  

Original issue reported on code.google.com by [email protected] on 11 Jan 2009 at 11:16

VS2003 project file containing intermediate dir with "." does not build

premake targeting vs2003 generates a project file (.vcproj) with
IntermediateDirectory values containing "." (i.e. ".objs"). Resulting
project file compiles, but VCLibrarianTool never runs.

It appears the Visual Studio doesn't support intermediate directories
starting with "."

To reproduce:
1. premake --target vs2003 --unicode
2. devenv TiCPP.vcproj /BUILD Release

Expected output:
  Compiling...
  tinyxmlparser.cpp
  tinyxmlerror.cpp
  etc...
  Creating library...     <=========== I don't get this
  TiCPP - 0 error(s), 10 warning(s)
  ---------------------- Done ----------------------
  Build: 1 succeeded, 0 failed, 0 skipped

What I see:
  Compiling...
  tinyxmlparser.cpp
  tinyxmlerror.cpp
  etc...
  TiCPP - 0 error(s), 10 warning(s)
  ---------------------- Done ----------------------
  Build: 1 succeeded, 0 failed, 0 skipped

Environment:
  MSVC 2003 (no SP), Windows XP SP2

Original issue reported on code.google.com by [email protected] on 13 Mar 2007 at 11:08

Broken XMLs could processed without any error warning...

What steps will reproduce the problem?
1. Send some arbitrary broken xml to the TiXmlDocument::Parse method.
It was tried with several broken xmls and it's not up to the broken xml 
itself so probably it's a sort of inside error.

What is the expected output? What do you see instead?
It has to warn me about the error. Usually it says there's some error but 
in couple of cases it says everything is OK.

What version of the product are you using? On what operating system?


Please provide any additional information below.



Original issue reported on code.google.com by [email protected] on 28 Jan 2009 at 3:30

Problems on getting started with ticpp

Hi,
I have big problems with parsing xml files with ticpp.
The problem is, I'm not very familiar with xml parsers and therefore I
don't now how to parse a xml file properly, since there are no ticpp tutorials.

How should I parse such a xml file:

<?xml version="1.0" encoding="UTF-8" ?>
<Fruits>
    <Apple colour="green" price="1.1" amount="10" />
    <Banana colour="yellow" price="1.5" amount="10" />
    <Cherry colour="red" price="2.5" amount="1" />
</Fruits>

Here my attempt. The problem is that the values and names are not parsed
properly.

[code]
#include <iostream>
#include <ticpp.h>

void Read(const char* pFilename);

int main()
{
    try
    {
        Read("fruits.xml");
    }
    catch(ticpp::Exception& ex)
    {
        std::cout << ex.what();
    }

    return -1;
}

void Read(const char* pFilename)
{
    ticpp::Document doc(pFilename);
    doc.LoadFile();

    ticpp::Iterator<ticpp::Element> child;
    for(child = child.begin(doc.FirstChildElement()); child != child.end();
child++)
    {

        char acName[256];
        char acValue[256];
        child->GetValue(acName);
        std::cout << "Die Frucht: " << acName << std::endl;

        ticpp::Iterator< ticpp::Attribute > attribute;
        for(attribute = attribute.begin(child.Get()); attribute !=
attribute.end(); attribute++)
        {
            attribute->GetName(acName);
            attribute->GetValue(acValue);
            std::cout << acName << ": " << acValue << std::endl << std::endl;
        }
    }
}
[/code]

Original issue reported on code.google.com by [email protected] on 1 May 2009 at 8:16

Problem compiling my program against TinyXML++

What steps will reproduce the problem?

#include<ticpp.h>

using namespace ticpp;

Then try and compile my program (specifically the particular source file in
my program that includes ticpp.h) using g++ v4.2.3 via the line:

g++ -o src/channellisthandler.o -c -O0 -Wall -g -Isrc -Iinclude
-I/usr/local/include -I/usr/local/lib -I/usr/include/ace
src/channellisthandler.cpp

What is the expected output? What do you see instead?

The expected result is for my program to compile successfully by g++
recognizing the ticpp namespace. Instead, I see:

src/channellisthandler.cpp: In member function ‘void
mcm::ChannelListHandler::loadChannelList()’:

src/channellisthandler.cpp:128: error: ‘ticpp’ has not been declared

src/channellisthandler.cpp:128: error: expected `;' before ‘xmldoc’

src/channellisthandler.cpp:129: error: ‘xmldoc’ was not declared in this 
scope

src/channellisthandler.cpp:131: error: expected type-specifier before 
‘ticpp’

src/channellisthandler.cpp:131: error: expected `)' before ‘:’ token

src/channellisthandler.cpp:131: error: expected `{' before ‘:’ token

src/channellisthandler.cpp:131: error: expected primary-expression before
‘:’ token

src/channellisthandler.cpp:131: error: expected `;' before ‘:’ token

src/channellisthandler.cpp:157: error: ‘ticpp’ has not been declared

src/channellisthandler.cpp:157: error: ‘pChannel’ was not declared in this
scope

src/channellisthandler.cpp:157: error: ‘xmldoc’ was not declared in this 
scope

src/channellisthandler.cpp:159: error: ‘ticpp’ has not been declared

src/channellisthandler.cpp:159: error: ‘ticpp’ has not been declared

src/channellisthandler.cpp:159: error: ‘childIt’ was not declared in this 
scope

src/channellisthandler.cpp:164: error: ‘ticpp’ has not been declared

src/channellisthandler.cpp:164: error: ‘pNumberElem’ was not declared in
this scope

src/channellisthandler.cpp:166: error: expected type-specifier before 
‘ticpp’

src/channellisthandler.cpp:166: error: expected `)' before ‘:’ token

src/channellisthandler.cpp:166: error: expected `{' before ‘:’ token

src/channellisthandler.cpp:166: error: expected primary-expression before
‘:’ token

src/channellisthandler.cpp:166: error: expected `;' before ‘:’ token

src/channellisthandler.cpp:172: error: ‘ticpp’ has not been declared

src/channellisthandler.cpp:172: error: ‘pNameElem’ was not declared in this
scope

src/channellisthandler.cpp:174: error: expected type-specifier before 
‘ticpp’

src/channellisthandler.cpp:174: error: expected `)' before ‘::’ token

src/channellisthandler.cpp:174: error: expected `{' before ‘::’ token

src/channellisthandler.cpp:174: error: ‘::Exception’ has not been declared

src/channellisthandler.cpp:174: error: ‘e’ was not declared in this scope

src/channellisthandler.cpp:174: error: expected `;' before ‘)’ token

src/channellisthandler.cpp:179: error: ‘pNumberElem’ was not declared in
this scope

src/channellisthandler.cpp:180: error: ‘pNameElem’ was not declared in this
scope



What version of the product are you using? On what operating system?

TinyXML++ v2.5.3 on Ubuntu Linux Hardy v8.04


Please provide any additional information below.

This problem seems to be baffling me. I have ticpp.h in /usr/include and it
definitely has the "namespace ticpp {}" definition in it. I'm not quite
sure why g++ won't recognize the ticpp namespace.

Original issue reported on code.google.com by [email protected] on 16 May 2008 at 8:53

Concern regarding memory usage

Sorry for putting this as an issue but i've found no information regarding
how the XML files are parsed/loaded.

How it does work if I have a very-big XML file? (10Mb, 100Mb,?)

Original issue reported on code.google.com by [email protected] on 3 Feb 2008 at 7:02

GetAttribute with return Value

Hi, i would like to have a funtion like this in ticpp::element

    /**
        Returns an attribute of @a name from an element.
        Uses FromString to convert the string to the type of choice.

        @param name             The name of the attribute you are querying.
        @param throwIfNotFound  [DEF]   If true, will throw an exception if the
attribute doesn't exist
        @throws Exception When the attribute doesn't exist and throwIfNotFound is
true

        @see GetAttributeOrDefault
        */
        template< class T >
            T GetAttribute( const std::string& name, bool throwIfNotFound = true ) const
        {
            // Get the attribute's value as a std::string
            std::string temp;
            T value;
            if ( !GetAttributeImp( name, &temp ) )
            {
                if ( throwIfNotFound )
                {
                    TICPPTHROW( "Attribute does not exist" );
                }
            }
            else
            {
                // Stream the value from the string to T
                FromString( temp, &value );
            }

            return value;
        }

I some Situations, this is quite useful, so i think it should be added to
ticpp. Maybe with a better note in the documentation, that the Object has
to be copied, and you should prefer the "old" version, where you can.

But if you want to call a function with a Parameter from a Attribute, this
little function is very useful.

Original issue reported on code.google.com by [email protected] on 21 Jun 2008 at 6:48

Document.LoadFromString fails if not Administrator

Calling Document.LoadFromString fails if the user account does not have
Administrator privileges. I believe this is due to the call to tmpfile()
which attempts to create a temporary file in the root directory. Running
the application with Administrator rights fixes the problem.

This is on Vista / Visual Studio 2005.

Original issue reported on code.google.com by [email protected] on 3 May 2007 at 11:14

Whitespace is collapsed by default (violates XML spec)

According to XML 1.0 Recommendation, section 2.10
(http://www.w3.org/TR/xml/#sec-white-space), "An XML processor MUST always
pass all characters in a document that are not markup through to the
application."

TinyXML++ follows TinyXML's way to do things: collapse whitespace by
default, and allow changing that setting with SetCondenseWhiteSpace,
because "the world hasn't agreed on whether whitespace should be kept" (?).

No spec-compliant XML parser should be collapsing whitespace. Some may have
convenience methods to collapse whitespace, or remove whitespace from
beginning and end; but that's just convenience that doesn't break anything.

Not even HTML collapses whitespace when parsing. It's done at the final
layout step, before rendering: if the element doesn't have the white-space
CSS attribute set to pre, multiple space elements are shown as one.

Original issue reported on code.google.com by [email protected] on 4 Dec 2008 at 3:17

Stylesheet reference is not saved to stream

What steps will reproduce the problem?
1. Create a ticpp::Document containing a stylesheet:

    ticpp::Document document;
    ticpp::Declaration *decl = new ticpp::Declaration ("1.0", "UTF-8", "");
    document.LinkEndChild (decl);

    ticpp::StylesheetReference *style = new
ticpp::StylesheetReference("text/xsl", "stylesheet.xsl");
    document.LinkEndChild (style);

    ticpp::Element *root = new ticpp::Element("root ");
    document.LinkEndChild(root);

2. When saving this to a file, the stylesheet reference is in the document:

document.SaveFile ("temp.xml");

this generates:

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl" ?>
<page />

3. When saving the document to a stringstream, the reference is gone

    std::stringstream output_stream;
    output_stream << document << std::endl;
    std::cout << output_stream.str () << std::endl;

results in:

<?xml version="1.0" encoding="UTF-8" ?><page />



What version of the product are you using? On what operating system?

I think it was a svn source from 22/04, on win xp, compiled using the
codeblocks generated project

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 16 May 2009 at 8:30

Unable to move a node from one doc to another using LinkEndChild()

The RemoveChild() method deletes the underlying m_tiXmlPointer so is
unusable. So currently we need to make a clone which is too expensive. I
guess we need a UnlinkChild method like this:

Document* from_doc = ...;
Document* to_doc = ...;
Element* elt = from_doc.FirstChildElement()->FirstChildElement();
from_doc.FirstChildElement()->UnlinkChild(elt);  // Does not exist!
to_doc.FirstChildElement()->LinkEndChild(host);

Greets,
Andrej




Original issue reported on code.google.com by [email protected] on 11 Jul 2008 at 2:18

unreachable code

I'm getting a lot of unreachable code warnings as well as "unreferenced
formal parameter" for 'depth' and 'stream'. Is this normal or have I done
something wrong?

I'm using version 1.0.1 and i've defined "TIXML_USE_TICPP" in my project.

Thanks,
Iñigo

Original issue reported on code.google.com by [email protected] on 16 Apr 2007 at 3:12

compile and linking issues on cygwin

What steps will reproduce the problem?
1. follow instructions in wiki for install
2. use windows gnu make
3. dont change any defaults

What is the expected output? What do you see instead?
using the follwing example program to quickly test if the linking works:

#define TIXML_USE_TICPP

#include <iostream>
#include <string>
#include "ticpp.h"

using namespace std;

int main ()
{
  cout << "Hello World!";
  ticpp::Document xmldoc;
  return 0;
}

Received a number of compilation errors using built code.  Then switched to
classes referenced by http://www.uwplatt.edu/csse/tools/visual-studio/ticpp/
and everything links in normally.

I'm sure i just didnt set certain values properly, but it was nice to be
able to just grab some classes and have it run.

Thought it might be usefull to include the edits made by RWH in a
quickstartup option.




What version of the product are you using? On what operating system?
svn checkout; windows xp prof

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 29 Jul 2008 at 2:34

iterator's ++/-- operators wrong return value.

What steps will reproduce the problem?
Consider this source code:

#include <iostream>
#include <string>

#define TIXML_USE_STL
#define TIXML_USE_TICPP
#include "ticpp/ticpp.h"

using namespace std;
using namespace ticpp;

int main()
{
    string xml = "<foo><child1/><child2/><child3/></foo>";
    Document doc;
    doc.Parse( xml );
    Element *root = doc.FirstChildElement();
    cout << "Root: " << root->Value() << endl;
    Iterator< Element > child;
    child = child.begin( root );
    cout << "First child: " << child->Value() << endl;
    cout << "Still first child: " << (child++)->Value() << endl;
    cout << "Second child: " << child->Value() << endl;
    cout << "Third child: " << (++child)->Value() << endl;
}




What is the expected output?

Root: foo
First child: child1
Still first child: child1
Second child: child2
Third child: child3

What do you see instead?

Root: foo
First child: child1
Still first child: child2
Second child: child2
Third child: child3


What version of the product are you using? On what operating system?

Revision 86, Ubuntu Linux, gcc version 4.1.3 20070929 (prerelease) (Ubuntu
4.1.2-16ubuntu2)

Please provide any additional information below.

Operator++(int) defined in ticpp.h line 1119 and operator--(int) defined on
line 1132 should be reimplemented to something like this:

Iterator operator++(int)
{
    Iterator tmp( this );
    ++(*this);
    return tmp;
}


Original issue reported on code.google.com by [email protected] on 19 Feb 2008 at 1:54

Change Node stream operator to use const Node

I have a function that aceppts a const Element, and I want to stream it to
an std::ostringstream.  But I can't.  

Can we change the stream output operator to this:

friend std::ostream& operator <<( std::ostream& out, const Node& base )
{
  out << *base.GetTiXmlPointer();
  return out;
}

Original issue reported on code.google.com by [email protected] on 18 Oct 2008 at 6:00

Stack overflow with large XML Documents in VS2008

What steps will reproduce the problem?
1. Create ticpp::Document with ~30000 elements with subelements
2. wait for the destructor to call void DeleteSpawnedWrappers()
3.

What is the expected output? What do you see instead?
expected: no problems
instead:
stack overflow, apparently deletespawnedwrappers is called recursively?

What version of the product are you using? On what operating system?
SVN commit 81. Visual Studio 2008

Please provide any additional information below.
my Xml document is composed of several thousand elements (~20k) with each 
subnodes (problem exists with both subelements and attributes). Resulting 
XML document is 6mb of size after dump to disk using ostream. Reading the 
same file with istream results in 80mb memory usage (some real stream 
based nodereader is appreciated). It still properly reads the xml 
document, but on destruction VS2008 crashes with a stack overflow.


Original issue reported on code.google.com by [email protected] on 5 Jan 2008 at 7:59

TinyXML++ on the PSP.

What steps will reproduce the problem?

psp-g++ -I. -I/usr/local/pspdev/psp/sdk/include -G4 -Wall -O2  -I. -
I/usr/local/pspdev/psp/sdk/include -G4 -Wall -O2  -fno-exceptions -fno-rtti -
D_PSP_FW_VERSION=150   -c -o main.o main.cpp

What is the expected output? What do you see instead?
I expected the program to compile properly. Instead, I see:

/usr/local/pspdev/psp/sdk/include/ticpp.h: In member function 'T* 
ticpp::Node::To() const':
/usr/local/pspdev/psp/sdk/include/ticpp.h:886: error: cannot use typeid with 
-fno-rtti
/usr/local/pspdev/psp/sdk/include/ticpp.h:887: error: cannot use typeid with 
-fno-rtti
/usr/local/pspdev/psp/sdk/include/ticpp.h:888: error: cannot use typeid with 
-fno-rtti
/usr/local/pspdev/psp/sdk/include/ticpp.h: In constructor 
'ticpp::NodeImp<T>::NodeImp(T*)':
/usr/local/pspdev/psp/sdk/include/ticpp.h:1217: error: cannot use typeid with 
-fno-rtti
main.cpp: In function 'int main(int, char**)':
main.cpp:38: error: invalid conversion from 'ticpp::Node*' to 'ticpp::Element*'
make: *** [main.o] Error 1

What version of the product are you using? On what operating system?
TinyXML++ 2.5.3 on Mac OSX 10.5 ( Leopard )

Please provide any additional information below.

Makefile.psp

# Makefile.psp by Giancarlo Canales ([email protected])

TICPP= .

PSPSDK = $(shell psp-config --pspsdk-path)
PSPDIR = $(shell psp-config --psp-prefix)

CFLAGS = -O2 -G0 -I$(LUA)/include

OBJS = ticpp.o tinystr.o tinyxml.o tinyxmlerror.o tinyxmlparser.o 
TARGET_LIB = libticpp.a

include $(PSPSDK)/lib/build.mak

install: all
    mkdir -p $(PSPDIR)/include $(PSPDIR)/lib
    cp ticpprc.h tinyxml.h tinystr.h ticpp.h $(PSPDIR)/include
    cp libticpp.a $(PSPDIR)/lib


Original issue reported on code.google.com by [email protected] on 24 Jun 2008 at 5:30

RemoveAttribute && HasAttribute

Hi, i would like to have these functions:

bool HasAttribute(std::string const & name)
{
  ValidatePointer();
  return m_tiXmlPointer->Attribute( name.c_str() );
}

Default-value-way isn't enough, because any value can be in attribute-
value, and it's expensive to use exceptions to check only existence.

And second function:
void RemoveAttribute(std::string const & name)
{
  ValidatePointer();
  m_tiXmlPointer->RemoveAttribute()
}

For now i don't see any way to do this, so i added this function.

Thanks.

Original issue reported on code.google.com by [email protected] on 5 Jul 2008 at 11:11

Howto convert a document or an element to a string?

What version of the product are you using? On what operating system?
Between revision 65 and 81 the function GetAsString has been removed from
tinyxml.

I was hoping that the following would work:
ostringstream s;
s << doc;

Please provide any additional information below.
I really like this library it is really easy to use and is just a great C++
interface.

However I really do need to be able to read and write strings rather than
files as they go into a database as a compressed blob.

Original issue reported on code.google.com by [email protected] on 27 Nov 2007 at 1:30

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.