* an IMPORTANT hint:
	 the order of return values isnt equal to the order of arguments:
	"sc -get_radius -get_class" may return "Scene 3.4" and not "3.4 Scene"
	thus dont use more than one method when inquring:
	"sc -get_radius" -> "3.4" 
	"sc -get_class" -> "Scene" 
	but, of course, you can call more than one method when setting args:
	"sc -radius 2.3 -father sc2 -translate { 1 0 0}" will work correct

* Do not use members in subclasses:

	BAD:						RIGHT:
	
	class RT_Light {				class RT_Light {
	  public:					   int xon;
	    int xon;					  public:	    
	};						   int get_on() { return xon; }
							};	
	
	class RT_AmbientLight:public RT_Light {		class RT_AmbientLight:public RT_Light {
	    ...;   					  ...;	
	    if (xon) ...				if (get_on()) ...
	};						};

*Naming conventions:
	Class:  		RT_AaaaBbbbb
	Method:			aaaBbbbb
	global Function:	RT_aaaBbbbb
	Macro:			RTM_aaaBbbb
	Tcl/C++-Method: 	aaaBbbbb and get_aaaBbbbb
	global Variable:	rt_AaaaBbbbb
	Defines:		RTD_AAA_BBBB		

	C++:                    Tcl:
 	RTN_LIN_GRAY_SCALE_MAP  LinGrayScaleMap

#commentar:
if the comment describes something that follows I use ":" :

//set x to 4:
x = 4;

if the comment describes something that already happened I write :

x = 4;
// x set to 4

o.k. its trivial, but it gives you some orientation

* supported parameter types for user interface coupling:
	String (_List)
	Object (_List)
	Double
	Vector (_List)
	Matrix
	File
	Surface (_List)
	Integer
	Callback
	Attribute - an attribute class name
	Class - a class name of a primitive (TCL/C++-Class)
	Mapping - a texture or bump mapping object
	Facet (_List) - an integer list
	Font

* parameter - name - attachment:
	{ARG 2 Radius}  -> 2cnd arg called "Radius"
	only one word can be used, sorry about.

* enumeration list:
	{ENUM 2 "Empty Solid Filled"} -> 2nd arg is an enum and has three possible values: Empty Solid Filed -> 0 = Empty, 1 = Solid, 2 = Filled

* parameter range:
	{RANGE 2 "0.1 4"} -> 2nd arg (int or double) can be 0.1 <= arg <= 4

* when programming the C++-API use only methods, that are in the Tcl-API, too!!!!
	Thus dont call a vt_point(1,2, ...) method of SPHERE! (Sphere inherits this method from
	quadmesh, but it is senseles to use it. If you need an editable sphere, take a quadmesh
	and initialize it like a sphere. Then yuo can easily edit every point of the sphere.)

*Convention:
	 assume the attribute name is "Resolution"
	 then the overall method to set such an attribute is: "-resolution"

* is_a and inheritance
	Object of class A "is_a" Object of class B if
	A inherits from B
	AND! A has all B_Methods

	THUS a Sphere isn_t A Quadmesh, because the point-by-
	point access isn't allowed for Sphere

* filenames:
	PLEASE use DOS compatible filenames

* parse table variables:
	* to set/get a font name you should use for the table:

	set:
		static int fnF; - this flag if a font was specified
		static char *fnV; - the specified value, a string in that case

	get:
		static int fnG; - this flag if the font should be inquired

	* to set/get a rotate vector you should use for the table:


	set:
		static int rtF; - this flag if a valid vector for rotation was specified
		static char *rtV; - the specified value, a vector in that case

	get:
		static int rtG; - this flag if the current vector should be inquired

* Usage of RTD_CPP_INCLUDES for C include files:
	#ifndef RTD_CPP_INCLUDES
	extern "C" {
	#endif
	
	#include <tcl.h>

	#ifndef RTD_CPP_INCLUDES
	}
	#endif
