summaryrefslogtreecommitdiff
path: root/docs/samples
diff options
context:
space:
mode:
authorarseny.kapoulkine <arseny.kapoulkine@99668b35-9821-0410-8761-19e4c4f06640>2010-06-24 12:28:17 +0000
committerarseny.kapoulkine <arseny.kapoulkine@99668b35-9821-0410-8761-19e4c4f06640>2010-06-24 12:28:17 +0000
commit3117219e7c343645d7cb3d3c19fbc6a126522695 (patch)
tree274e9a5508aae06e72602b663f08b1cae720c5cc /docs/samples
parent8d6177ebd8d7cc54839d80525936aa76746e4d33 (diff)
docs: Extracted sample code in a separate file, added stream loading sample prototype
git-svn-id: http://pugixml.googlecode.com/svn/trunk@534 99668b35-9821-0410-8761-19e4c4f06640
Diffstat (limited to 'docs/samples')
-rw-r--r--docs/samples/custom_memory_management.cpp25
-rw-r--r--docs/samples/load_stream.cpp68
-rw-r--r--docs/samples/weekly-shift_jis.xml78
-rw-r--r--docs/samples/weekly-utf-16.xmlbin0 -> 3186 bytes
-rw-r--r--docs/samples/weekly-utf-8.xml78
5 files changed, 249 insertions, 0 deletions
diff --git a/docs/samples/custom_memory_management.cpp b/docs/samples/custom_memory_management.cpp
new file mode 100644
index 0000000..01a2acf
--- /dev/null
+++ b/docs/samples/custom_memory_management.cpp
@@ -0,0 +1,25 @@
+#include "pugixml.hpp"
+
+#include <new>
+
+//[code_custom_memory_management_decl
+void* custom_allocate(size_t size)
+{
+ return new (std::nothrow) char[size];
+}
+
+void custom_deallocate(void* ptr)
+{
+ delete[] static_cast<char*>(ptr);
+}
+//]
+
+int main()
+{
+//[code_custom_memory_management_call
+ pugi::set_memory_management_functions(custom_allocate, custom_deallocate);
+//]
+
+ pugi::xml_document doc;
+ doc.load("<node/>");
+}
diff --git a/docs/samples/load_stream.cpp b/docs/samples/load_stream.cpp
new file mode 100644
index 0000000..4aba8bd
--- /dev/null
+++ b/docs/samples/load_stream.cpp
@@ -0,0 +1,68 @@
+#include "pugixml.hpp"
+
+#include <fstream>
+#include <iomanip>
+#include <iostream>
+
+void print_doc(const char* message, const pugi::xml_document& doc, const pugi::xml_parse_result& result)
+{
+ std::cout
+ << message
+ << "\t: load result '" << result.description() << "'"
+ << ", first character of root name: U+" << std::hex << std::uppercase << std::setw(4) << std::setfill('0') << pugi::as_wide(doc.first_child().name())[0]
+ << ", year: " << doc.first_child().first_child().first_child().child_value()
+ << std::endl;
+}
+
+int main()
+{
+ pugi::xml_document doc;
+
+ {
+ std::ifstream stream("weekly-utf-8.xml");
+ pugi::xml_parse_result result = doc.load(stream);
+
+ // first character of root name: U+9031, year: 1997
+ print_doc("UTF8 file from narrow stream", doc, result);
+ }
+
+ {
+ std::ifstream stream("weekly-utf-16.xml");
+ pugi::xml_parse_result result = doc.load(stream);
+
+ // first character of root name: U+9031, year: 1997
+ print_doc("UTF16 file from narrow stream", doc, result);
+ }
+
+ {
+ // Since wide streams are treated as UTF-16/32 ones, you can't load the UTF-8 file from a wide stream
+ // directly if you have localized characters; you'll have to provide a UTF8 locale (there is no
+ // standard one; you can use utf8_codecvt_facet from Boost (WHAT?))
+ std::wifstream stream("weekly-utf-8.xml");
+ pugi::xml_parse_result result = doc.load(stream);
+
+ // first character of root name: U+00E9, year: 1997
+ print_doc("UTF8 file from wide stream", doc, result);
+ }
+
+ {
+ // Since wide streams are treated as UTF-16/32 ones, you can't load the UTF-16 file from a wide stream
+ // at all; you'll have to provide a UTF16 locale (WHAT??)
+ std::wifstream stream("weekly-utf-16.xml");
+ pugi::xml_parse_result result = doc.load(stream);
+
+ // first character of root name: U+0000, year:
+ print_doc("UTF16 file from wide stream", doc, result);
+ }
+
+ {
+ // Since encoding names are non-standard, you can't load the Shift-JIS (or any other non-ASCII) file
+ // from a wide stream portably; this code assumes Microsoft C Runtime Libraries (WHAT???)
+ std::wifstream stream("weekly-shift_jis.xml");
+ stream.imbue(std::locale(".932"));
+ pugi::xml_parse_result result = doc.load(stream);
+
+ // first character of root name: U+9031, year: 1997
+ print_doc("Shift-JIS file from wide stream", doc, result);
+ }
+}
diff --git a/docs/samples/weekly-shift_jis.xml b/docs/samples/weekly-shift_jis.xml
new file mode 100644
index 0000000..7421455
--- /dev/null
+++ b/docs/samples/weekly-shift_jis.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<!DOCTYPE 週報 SYSTEM "weekly-shift_jis.dtd">
+<!-- 週報サンプル -->
+<週報>
+ <年月週>
+ <年度>1997</年度>
+ <月度>1</月度>
+ <週>1</週>
+ </年月週>
+
+ <氏名>
+ <氏>山田</氏>
+ <名>太郎</名>
+ </氏名>
+
+ <業務報告リスト>
+ <業務報告>
+ <業務名>XMLエディターの作成</業務名>
+ <業務コード>X3355-23</業務コード>
+ <工数管理>
+ <見積もり工数>1600</見積もり工数>
+ <実績工数>320</実績工数>
+ <当月見積もり工数>160</当月見積もり工数>
+ <当月実績工数>24</当月実績工数>
+ </工数管理>
+ <予定項目リスト>
+ <予定項目>
+ <P>XMLエディターの基本仕様の作成</P>
+ </予定項目>
+ </予定項目リスト>
+ <実施事項リスト>
+ <実施事項>
+ <P>XMLエディターの基本仕様の作成</P>
+ </実施事項>
+ <実施事項>
+ <P>競合他社製品の機能調査</P>
+ </実施事項>
+ </実施事項リスト>
+ <上長への要請事項リスト>
+ <上長への要請事項>
+ <P>特になし</P>
+ </上長への要請事項>
+ </上長への要請事項リスト>
+ <問題点対策>
+ <P>XMLとは何かわからない。</P>
+ </問題点対策>
+ </業務報告>
+
+ <業務報告>
+ <業務名>検索エンジンの開発</業務名>
+ <業務コード>S8821-76</業務コード>
+ <工数管理>
+ <見積もり工数>120</見積もり工数>
+ <実績工数>6</実績工数>
+ <当月見積もり工数>32</当月見積もり工数>
+ <当月実績工数>2</当月実績工数>
+ </工数管理>
+ <予定項目リスト>
+ <予定項目>
+ <P><A href="http://www.goo.ne.jp">goo</A>の機能を調べてみる</P>
+ </予定項目>
+ </予定項目リスト>
+ <実施事項リスト>
+ <実施事項>
+ <P>更に、どういう検索エンジンがあるか調査する</P>
+ </実施事項>
+ </実施事項リスト>
+ <上長への要請事項リスト>
+ <上長への要請事項>
+ <P>開発をするのはめんどうなので、Yahoo!を買収して下さい。</P>
+ </上長への要請事項>
+ </上長への要請事項リスト>
+ <問題点対策>
+ <P>検索エンジンで車を走らせることができない。(要調査)</P>
+ </問題点対策>
+ </業務報告>
+ </業務報告リスト>
+</週報>
diff --git a/docs/samples/weekly-utf-16.xml b/docs/samples/weekly-utf-16.xml
new file mode 100644
index 0000000..6c8622a
--- /dev/null
+++ b/docs/samples/weekly-utf-16.xml
Binary files differ
diff --git a/docs/samples/weekly-utf-8.xml b/docs/samples/weekly-utf-8.xml
new file mode 100644
index 0000000..497f572
--- /dev/null
+++ b/docs/samples/weekly-utf-8.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<!DOCTYPE 騾ア蝣ア SYSTEM "weekly-utf-8.dtd">
+<!-- 騾ア蝣ア繧オ繝ウ繝励Ν -->
+<騾ア蝣ア>
+ <蟷エ譛磯ア>
+ <蟷エ蠎ヲ>1997</蟷エ蠎ヲ>
+ <譛亥コヲ>1</譛亥コヲ>
+ <騾ア>1</騾ア>
+ </蟷エ譛磯ア>
+
+ <豌丞錐>
+ <豌>螻ア逕ー</豌>
+ <蜷>螟ェ驛</蜷>
+ </豌丞錐>
+
+ <讌ュ蜍吝ア蜻翫Μ繧ケ繝>
+ <讌ュ蜍吝ア蜻>
+ <讌ュ蜍吝錐>XML繧ィ繝繧」繧ソ繝シ縺ョ菴懈</讌ュ蜍吝錐>
+ <讌ュ蜍吶さ繝シ繝>X3355-23</讌ュ蜍吶さ繝シ繝>
+ <蟾・謨ー邂。逅>
+ <隕狗ゥ阪b繧雁キ・謨ー>1600</隕狗ゥ阪b繧雁キ・謨ー>
+ <螳溽クセ蟾・謨ー>320</螳溽クセ蟾・謨ー>
+ <蠖捺怦隕狗ゥ阪b繧雁キ・謨ー>160</蠖捺怦隕狗ゥ阪b繧雁キ・謨ー>
+ <蠖捺怦螳溽クセ蟾・謨ー>24</蠖捺怦螳溽クセ蟾・謨ー>
+ </蟾・謨ー邂。逅>
+ <莠亥ョ夐逶ョ繝ェ繧ケ繝>
+ <莠亥ョ夐逶ョ>
+ <P>XML繧ィ繝繧」繧ソ繝シ縺ョ蝓コ譛ャ莉墓ァ倥ョ菴懈</P>
+ </莠亥ョ夐逶ョ>
+ </莠亥ョ夐逶ョ繝ェ繧ケ繝>
+ <螳滓命莠矩繝ェ繧ケ繝>
+ <螳滓命莠矩>
+ <P>XML繧ィ繝繧」繧ソ繝シ縺ョ蝓コ譛ャ莉墓ァ倥ョ菴懈</P>
+ </螳滓命莠矩>
+ <螳滓命莠矩>
+ <P>遶カ蜷井サ也、セ陬ス蜩√ョ讖溯ス隱ソ譟サ</P>
+ </螳滓命莠矩>
+ </螳滓命莠矩繝ェ繧ケ繝>
+ <荳企聞縺ク縺ョ隕∬ォ倶コ矩繝ェ繧ケ繝>
+ <荳企聞縺ク縺ョ隕∬ォ倶コ矩>
+ <P>迚ケ縺ォ縺ェ縺</P>
+ </荳企聞縺ク縺ョ隕∬ォ倶コ矩>
+ </荳企聞縺ク縺ョ隕∬ォ倶コ矩繝ェ繧ケ繝>
+ <蝠城。檎せ蟇セ遲>
+ <P>XML縺ィ縺ッ菴輔°繧上°繧峨↑縺縲</P>
+ </蝠城。檎せ蟇セ遲>
+ </讌ュ蜍吝ア蜻>
+
+ <讌ュ蜍吝ア蜻>
+ <讌ュ蜍吝錐>讀懃エ「繧ィ繝ウ繧ク繝ウ縺ョ髢狗匱</讌ュ蜍吝錐>
+ <讌ュ蜍吶さ繝シ繝>S8821-76</讌ュ蜍吶さ繝シ繝>
+ <蟾・謨ー邂。逅>
+ <隕狗ゥ阪b繧雁キ・謨ー>120</隕狗ゥ阪b繧雁キ・謨ー>
+ <螳溽クセ蟾・謨ー>6</螳溽クセ蟾・謨ー>
+ <蠖捺怦隕狗ゥ阪b繧雁キ・謨ー>32</蠖捺怦隕狗ゥ阪b繧雁キ・謨ー>
+ <蠖捺怦螳溽クセ蟾・謨ー>2</蠖捺怦螳溽クセ蟾・謨ー>
+ </蟾・謨ー邂。逅>
+ <莠亥ョ夐逶ョ繝ェ繧ケ繝>
+ <莠亥ョ夐逶ョ>
+ <P><A href="http://www.goo.ne.jp">goo</A>縺ョ讖溯ス繧定ェソ縺ケ縺ヲ縺ソ繧</P>
+ </莠亥ョ夐逶ョ>
+ </莠亥ョ夐逶ョ繝ェ繧ケ繝>
+ <螳滓命莠矩繝ェ繧ケ繝>
+ <螳滓命莠矩>
+ <P>譖エ縺ォ縲√←縺縺縺讀懃エ「繧ィ繝ウ繧ク繝ウ縺後≠繧九°隱ソ譟サ縺吶k</P>
+ </螳滓命莠矩>
+ </螳滓命莠矩繝ェ繧ケ繝>
+ <荳企聞縺ク縺ョ隕∬ォ倶コ矩繝ェ繧ケ繝>
+ <荳企聞縺ク縺ョ隕∬ォ倶コ矩>
+ <P>髢狗匱繧偵☆繧九ョ縺ッ繧√s縺ゥ縺縺ェ縺ョ縺ァ縲〆ahoo!繧定イキ蜿弱@縺ヲ荳九&縺縲</P>
+ </荳企聞縺ク縺ョ隕∬ォ倶コ矩>
+ </荳企聞縺ク縺ョ隕∬ォ倶コ矩繝ェ繧ケ繝>
+ <蝠城。檎せ蟇セ遲>
+ <P>讀懃エ「繧ィ繝ウ繧ク繝ウ縺ァ霆翫r襍ー繧峨○繧九%縺ィ縺後〒縺阪↑縺縲ゑシ郁ヲ∬ェソ譟サシ</P>
+ </蝠城。檎せ蟇セ遲>
+ </讌ュ蜍吝ア蜻>
+ </讌ュ蜍吝ア蜻翫Μ繧ケ繝>
+</騾ア蝣ア>