general
begintemplate init objref
endtemplate new public
external objectvar unref
See Object Oriented Programming in the
reference manual.
ObjectOrientedProgramming
SYNTAX
begintemplate
DESCRIPTION
Declare a new class or data structure. Any HOC code may appear between the
begintemplate
and endtemplate
declarations. Classes are instantiated with
the new statement.
EXAMPLES
begintemplate String
public s
strdef s
proc init() {
if (numarg()) {
s = $s1
}
}
endtemplate String
objref s
s = new String("Hello")
print s.s
will print "Hello" to the screen.
ObjectOrientedProgramming
SYNTAX
endtemplate
DESCRIPTION
Closes the class declaration
SEE ALSO
begintemplate
ObjectOrientedProgramming
SYNTAX
objectvar
DESCRIPTION
Synonym for objref .
ObjectOrientedProgramming
SYNTAX
objref
DESCRIPTION
A comma separated list declarations of object variables. Object
variables are labels (pointers, references) to the actual objects. Thus o1 = o2
merely states that o1 and o2 are labels for the same object. Objects are
created with the new
statement. When there are no labels for an object
the object is deleted. The keywords objectvar
and objref
are synonyms.
An object has a unique name that can be determined with the print obj
statement
and consists of the template name followed by an index number in brackets.
This name can be used in place of an objref.
EXAMPLES
objref vec, g
vec = new Vector(20)
g = new Graph()
creates a vector object and a graph object with pointers named vec and g, respectively.
SEE ALSO
new , begintemplate , List , pointprocesses , SectionList
ObjectOrientedProgramming
SYNTAX
public
DESCRIPTION
A comma separated list of all the names in a class that are available
outside the class.
SEE ALSO
begintemplate
ObjectOrientedProgramming
SYNTAX
external
DESCRIPTION
A comma separated list of functions, procedures, iterators, objects,
strings, or variables defined at the top
level that can be executed within this class. This statement is
optional but if it exists must follow the begintemplate or public line.
This allows an object to get information from the outside and can
be used as information shared by all instances. External iterators
can only use local variables and arguments.
EXAMPLES
global_ra = 100
func ra_value() {return global_ra}
begintemplate Cell
external ra_value
create axon
proc init() {
forall Ra = ra_value() /* just the axon */
}
endtemplate Cell
execute1 can be used to obtain external information as well.
ObjectOrientedProgramming
SYNTAX
objectvariable = new Object(args)
DESCRIPTION
Creates a new object/instance of type/class Object and makes
objectvariable label/point to it.
When the object no longer is pointed to, it no longer exists.
EXAMPLES
objref vec
vec = new Vector(30)
creates a vector of size 30 with its pointer named vec
.
ObjectOrientedProgramming
SYNTAX
proc init() { ... }
DESCRIPTION
If an init procedure is defined in a template, then it is called whenever
an instance of the template is created.
SEE ALSO
new
ObjectOrientedProgramming
SYNTAX
proc unref() { print this, " refcount=", $1 }
DESCRIPTION
If an unref procedure is defined in a template, then it is called whenever
the reference count of an object of that type is decremented. The reference
count is passed as the argument. When the count is 0, the object will be
destroyed on return from unref. This is useful in properly managing
objects which mutually reference each other. Note that unref may be
called recursively.
neuron/general/oop.hel : 3412 Feb 7