Squashed 'third_party/ctemplate/' content from commit 6742f62

Change-Id: I828e4e4c906f13ba19944d78a8a78652b62949af
git-subtree-dir: third_party/ctemplate
git-subtree-split: 6742f6233db12f545e90baa8f34f5c29c4eb396a
diff --git a/doc/index.html b/doc/index.html
new file mode 100644
index 0000000..13da75e
--- /dev/null
+++ b/doc/index.html
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+  <title>Ctemplate (formerly Google Template) System</title>
+
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <link href="designstyle.css" type="text/css" rel="stylesheet">
+  <style type="text/css">
+  ol.bluelist li {
+    color: #3366ff;
+    font-family: sans-serif;
+  }
+  ol.bluelist li p {
+    color: #000;
+    font-family: "Times Roman", times, serif;
+  }
+  ul.blacklist li {  
+    color: #000;
+    font-family: "Times Roman", times, serif;
+  }
+  </style>
+</head>
+<body>
+
+<h1> <a name="Ctemplate_System"></a>Ctemplate System </h1>
+<center><strong>Status: Current</strong> &nbsp;
+<small>(as of 25 April 2008)</small></center>
+<br>
+
+<p>Welcome to the C++ CTemplate system!  (This project was originally
+called Google Templates, due to its origin as the template system used
+for Google search result pages, but now has a more general name
+matching its community-owned nature.)</p>
+
+<p>As a quick start, here's a small but complete program that uses this
+template library.  For more details see, the links below.</p>
+
+<h3>Template file <code>example.tpl</code></h3>
+<pre>
+   Hello {{NAME}},
+   You have just won ${{VALUE}}!
+   {{#IN_CA}}Well, ${{TAXED_VALUE}}, after taxes.{{/IN_CA}}
+</pre>
+
+<h3>C++ program <code>example.cc</code></h3>
+<pre>
+   #include &lt;stdlib.h>
+   #include &lt;string>
+   #include &lt;iostream>
+   #include &lt;ctemplate/template.h>
+   int main(int argc, char** argv) {
+      ctemplate::TemplateDictionary dict("example");
+      dict.SetValue("NAME", "John Smith");
+      int winnings = rand() % 100000;
+      dict.SetIntValue("VALUE", winnings);
+      dict.SetFormattedValue("TAXED_VALUE", "%.2f", winnings * 0.83);
+      // For now, assume everyone lives in CA.
+      // (Try running the program with a 0 here instead!)
+      if (1) {
+        dict.ShowSection("IN_CA");
+      }
+      std::string output;
+      ctemplate::ExpandTemplate("example.tpl", ctemplate::DO_NOT_STRIP, &dict, &output);
+      std::cout &lt;&lt; output;
+      return 0;
+   }
+</pre>
+
+<h3>Compiling and linking (using gcc)</h3>
+<pre>
+   gcc -o example example.cc -lctemplate_nothreads
+</pre>
+
+<p>I can use the "nothreads" library because <code>example.cc</code>
+doesn't use threads.  If <code>example.cc</code> were threaded, I
+would do something like this instead:</p>
+<pre>
+   gcc -o example example.cc -lctemplate -pthread
+</pre>
+
+<p>See the README for more details about the two different ctemplate
+libraries.</p>
+
+
+<h2>In-depth Documentation</h2>
+
+<ol>
+  <li> <A HREF="howto.html">Howto</A>: Introduction to the
+       Ctemplate system, and a tutorial for using it. </li>
+
+  <li> <A HREF="auto_escape.html">Auto Escape</A>: Guide to using
+       the optional Auto Escape mode to protect your web application
+       better against XSS.</li>
+
+  <li> <A HREF="tips.html">Tips</A>: Advice, tips, and recommendations
+       for best practices with templates, to make them easier to write
+       and maintain, and to avoid common template mistakes. </li>
+
+  <li> <A HREF="example.html">Examples</A>: Some example templates and
+       application code that uses them.  These are taken from actual
+       Google applications. </li>
+</ol>
+
+<hr>
+<address>
+Craig Silverstein<br>
+Last modified: Mon Feb 22 10:59:03 PST 2010
+</address>
+
+</body>
+</html>