lucy-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mar...@apache.org
Subject svn commit: r926337 - in /lucene/lucy/trunk/core/Lucy/Docs: ./ DevGuide.bp
Date Mon, 22 Mar 2010 21:08:24 GMT
Author: marvin
Date: Mon Mar 22 21:08:24 2010
New Revision: 926337

URL: http://svn.apache.org/viewvc?rev=926337&view=rev
Log:
Add Lucy::Docs::DevGuide, which explains the layering of the Lucy code base.

Added:
    lucene/lucy/trunk/core/Lucy/Docs/
    lucene/lucy/trunk/core/Lucy/Docs/DevGuide.bp   (with props)

Added: lucene/lucy/trunk/core/Lucy/Docs/DevGuide.bp
URL: http://svn.apache.org/viewvc/lucene/lucy/trunk/core/Lucy/Docs/DevGuide.bp?rev=926337&view=auto
==============================================================================
--- lucene/lucy/trunk/core/Lucy/Docs/DevGuide.bp (added)
+++ lucene/lucy/trunk/core/Lucy/Docs/DevGuide.bp Mon Mar 22 21:08:24 2010
@@ -0,0 +1,57 @@
+parcel Lucy;
+
+/** Quick-start guide to hacking on Lucy.
+ *
+ * The Lucy code base is organized into roughly four layers:
+ *  
+ *    * Charmonizer - compiler and OS configuration probing.
+ *    * Clownfish - header files.
+ *    * C - implementation files.
+ *    * Host - binding language.
+ * 
+ * Charmonizer is a configuration prober which writes a single header file,
+ * "charmony.h", describing the build environment and facilitating
+ * cross-platform development.  It's similar to Autoconf or Metaconfig, but
+ * written in pure C.
+ *
+ * The ".cfh" (or historically, ".bp") files within the Lucy core are
+ * Clownfish header files.  Clownfish is a purpose-built, declaration-only
+ * language which superimposes a single-inheritance object model on top of C
+ * which is specifically designed to co-exist happily with variety of "host"
+ * languages and to allow limited run-time dynamic subclassing.  For more
+ * information see the Clownfish docs, but if there's one thing you should
+ * know about Clownfish OO before you start hacking, it's that method calls
+ * are differentiated from functions by capitalization:
+ *
+ *     Indexer_Add_Doc   <-- Method, typically uses dynamic dispatch.
+ *     Indexer_add_doc   <-- Function, always a direct invocation.
+ * 
+ * The C files within the Lucy core are where most of Lucy's low-level
+ * functionality lies.  They implement the interface defined by the Clownfish
+ * header files.
+ *
+ * The C core is intentionally left incomplete, however; to be usable, it must
+ * be bound to a "host" language.  (In this context, even C is considered a
+ * "host" which must implement the missing pieces and be "bound" to the core.)
+ * Some of the binding code is autogenerated by Clownfish on a spec customized
+ * for each language.  Other pieces are hand-coded in either C (using the
+ * host's C API) or the host language itself.
+ */
+
+inert class Lucy::Docs::DevGuide { }
+
+/* Copyright 2009 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+

Propchange: lucene/lucy/trunk/core/Lucy/Docs/DevGuide.bp
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message