\input texinfo   @c -*-texinfo-*-
@c %**start of header
@setfilename gnucash-design.info
@settitle GnuCash Design Document
@c %**end of header

@comment 'version.texi' is a magic filename that, when included,
@comment will be auto-generated courtesy of automake.
@include version.texi

@ifinfo
@format

@dircategory Programming

@direntry
* gnucash: (gnucash-design).       Design of the GnuCash program
@end direntry

@end format
@end ifinfo

@ifinfo
This file documents the design of the GnuCash program.

Copyright 2000 Gnumatic Incorporated

This is Edition @value{EDITION}, last updated @value{UPDATED},
of the @cite{GnuCash Design Document}, version @value{VERSION}.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
A copy of the license is included in the section entitled "GNU
Free Documentation License".

@ignore
Permission is granted to process this file through TeX
and print the results, provided the printed document
carries a copying permission notice identical to this
one except for the removal of this paragraph (this
paragraph not being relevant to the printed manual).
@end ignore

@end ifinfo

@titlepage
@title GnuCash Design Document
@subtitle Edition @value{EDITION} for Version @value{VERSION}
@author Rob Browning
@author Bill Gribble
@author Robert Merkel
@author Dave Peticolas
@author Linas Vepstas
@page
@vskip 0pt plus 1filll
@copyright{} 2000 Gnumatic Incorporated
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
@end titlepage

@ifnottex
@node Top, GNU Free Documentation License, (dir), (dir)
@top GnuCash Design Document
This is Edition @value{EDITION}, last updated @value{UPDATED},
of the @cite{GnuCash Design Document}, version @value{VERSION}.
@end ifnottex

@menu
* GNU Free Documentation License::  
* Introduction::                
* Top Level::                   
* Engine::                      
* Component Manager::           
* Register::                    
* Reports::                     
* User Preferences::            
* Function Index::              
* Data Type Index::             
* Concept Index::               


@detailmenu
 --- The Detailed Node Listing ---

Engine

* Engine Introduction::         
* Using and Extending the Engine API::  
* Globally Unique Identifiers::  
* Numeric Library::             
* Key-Value Pair Frames::       
* Events::                      
* Commodities::                 
* Commodity Tables::            
* Prices::                      
* Price Databases::             
* Splits::                      
* Transactions::                
* Accounts::                    
* Account Groups::              
* GNCBooks::                    
* Scrub::                       

Globally Unique Identifiers

* When to use GUIDs::           
* GUID Types::                  
* How to use GUIDs::            
* GUIDs and GnuCash Entities::  
* The GUID Generator::          

Numeric Library

* Standard Numeric Arguments::  
* Creating Numeric Objects::    
* Basic Arithmetic Operations::  
* Numeric Comparisons and Predicates::  
* Numeric Denominator Conversion::  
* Numeric Floating Point Conversion::  
* Numeric String Conversion::   
* Numeric Error Handling ::     
* Numeric Example::             

Key-Value Pair Frames

* Key-Value Policy::            
* kvp_frame::                   
* KvpValue::                   
* kvp_list::                    

Events

* Event API::                   

Commodities

* General Commodity API::       
* Commodity Getters::           
* Commodity Setters::           

Commodity Tables

* General Commodity Table API::  
* Commodity Table Access API::  
* Commodity Table Modification API::  

Prices

* Price Implementation Details::  
* General Price API::           
* Price Getters::               
* Price Setters::               

Price Databases

* Price Lists::                 
* General Price Database API::  

Splits

* General Split API::           
* Split Getters::               
* Split Setters::               

Transactions

* General Transaction API::     
* Transaction Getters::         
* Transaction Setters::         

Accounts

* Account Types::               
* General Account API::         
* Account Type API::            
* Account Getters::             

Account Groups

* General Account Group API::   
* Account Group Account API::   

GNCBooks

* GNCBook API::                 

Component Manager

* Component Manager Introduction::  

Register

* Cells::                       
* Cellblocks::                  
* Table::                       
* Split Register::              

Cells

* BasicCell::                   

Reports

* Creating a Report::

User Preferences

* Option Databases::            
* Option Types::                
* Option Creation::             
* Option Values::               

@end detailmenu
@end menu

@include fdl.texi
@include intro.texi
@include top-level.texi
@include engine.texi
@include component-manager.texi
@include register.texi
@include reports.texi
@include user-preferences.texi
@include function-index.texi
@include type-index.texi
@include concept-index.texi

@summarycontents
@contents

@bye
