The Machine Perception Toolbox

[Introduction]- [News]- [Download]- [Screenshots]- [Manual (pdf)]- [Forums]- [API Reference]- [Repository ]

 

Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

class.h File Reference

#include "lists.h"
#include "frames.h"

Include dependency graph for class.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Functions

char * make_class_module (LIST *xname, LIST *bases, FRAME *frame)


Function Documentation

char* make_class_module LIST xname,
LIST bases,
FRAME frame
 

Definition at line 92 of file class.c.

References bindmodule(), check_defined(), class_module_name(), classes, enter_module(), exit_module(), FRAME, hashcheck, HASHDATA, hashenter, hashinit(), import_base_rules(), LIST, frame::module, _list::next, _list::string, VAR_SET, and var_set().

Referenced by compile_class().

00093 {
00094     char* name = class_module_name(xname->string);
00095     char** pp = &xname->string;
00096     module_t* class_module = 0;
00097     module_t* outer_module = frame->module;    
00098 
00099     if (!classes)
00100         classes = hashinit(sizeof(char*), "classes");
00101 
00102     
00103     if (hashcheck(classes, (HASHDATA**)&pp)) {        
00104         printf("Class %s already defined\n", xname->string);
00105         abort();
00106     } else {
00107         hashenter(classes, (HASHDATA**)&pp);
00108     }
00109     check_defined(bases);
00110     
00111     class_module = bindmodule(name);
00112 
00113     exit_module( outer_module );
00114     enter_module( class_module );
00115 
00116     var_set("__name__", xname, VAR_SET);
00117     var_set("__bases__", bases, VAR_SET);
00118     
00119     exit_module( class_module );
00120     enter_module( outer_module );
00121     
00122     for(; bases; bases = bases->next)
00123         import_base_rules(class_module, bases->string);
00124 
00125 
00126 
00127     return name;
00128 }

Here is the call graph for this function:


Generated on Mon Nov 8 17:07:56 2004 for MPT by  doxygen 1.3.9.1