Difference between revisions of "BRL-CAD's core C++ interface"

From BRL-CAD
(Application Domain)
m (The interface should be self-contained)
 
(7 intermediate revisions by 2 users not shown)
Line 4: Line 4:
  
 
The C++ interface is a object oriented API to BRL-CAD's core libraries around librt.
 
The C++ interface is a object oriented API to BRL-CAD's core libraries around librt.
The target group are developers of applications which use BRL-CAD as module.
+
The target users are developers of applications which use BRL-CAD libraries.
  
Furthermore, this interface should be a good reference to the use of BRL-CAD's standard C interface.
+
Furthermore, this interface should be a good reference to the use of BRL-CAD's standard C interface, although a higher level interface should also be available.
 +
 
 +
= Requirements =
 +
 
 +
== The interface should be self-contained ==
 +
I.e., source code using this interface should not need to include any other BRL-CAD header file (nor TCL, openNURBS, ...).
 +
 
 +
As a consequence, the interface will hide implementation details.
 +
Therefore the implementation can be changed without affecting an application using this interface.
 +
 
 +
= Main Classes =
 +
 
 +
== ConstDatabase ==
 +
The '''ConstDatabase''' class provides a handle to read-only database content.
 +
 
 +
If it is associated with a file the file will be opened read-only.
 +
I.e. multiple instances of this class can refer to the same file.
 +
 
 +
== Database ==
 +
The '''Database''' class is a virtual class which declares a handle to a writable database.
 +
It is derived from '''ConstDatabase''' and expanded by methods to modify the database's content.
 +
 
 +
== FileDatabase ==
 +
The '''FileDatabase''' class provides a handle to writable file-based database derived from '''Database'''.
 +
 
 +
== MemoryDatabase ==
 +
The '''MemoryDatabase''' class provides a handle to writable in-memory database derived from '''Database'''.
 +
 
 +
== Object ==
 +
The '''Object''' class is the base class of all database objects (e.g. primitives etc.).
 +
 
 +
 
 +
= Examples =
 +
* [[coreInterface Hallo World Example|A kind of a "Hallo World" program]]
 +
* [[coreInterface PrintTitle Example|PrintTitle]]
 +
* [[coreInterface Tree Walker Example|Tree walker]]

Latest revision as of 10:31, 22 June 2009

Design icon.png This page contains the design document for an enhancement or feature. The design should be considered a work in progress and may not represent the final design. As this is a collaborative design, contributions and participation from other developers and users is encouraged. Use the discussion page for providing comments and suggestions.


Application Domain[edit]

The C++ interface is a object oriented API to BRL-CAD's core libraries around librt. The target users are developers of applications which use BRL-CAD libraries.

Furthermore, this interface should be a good reference to the use of BRL-CAD's standard C interface, although a higher level interface should also be available.

Requirements[edit]

The interface should be self-contained[edit]

I.e., source code using this interface should not need to include any other BRL-CAD header file (nor TCL, openNURBS, ...).

As a consequence, the interface will hide implementation details. Therefore the implementation can be changed without affecting an application using this interface.

Main Classes[edit]

ConstDatabase[edit]

The ConstDatabase class provides a handle to read-only database content.

If it is associated with a file the file will be opened read-only. I.e. multiple instances of this class can refer to the same file.

Database[edit]

The Database class is a virtual class which declares a handle to a writable database. It is derived from ConstDatabase and expanded by methods to modify the database's content.

FileDatabase[edit]

The FileDatabase class provides a handle to writable file-based database derived from Database.

MemoryDatabase[edit]

The MemoryDatabase class provides a handle to writable in-memory database derived from Database.

Object[edit]

The Object class is the base class of all database objects (e.g. primitives etc.).


Examples[edit]