2 SuperCollider real time audio synthesis system
3 Copyright (c) 2002 James McCartney. All rights reserved.
4 http://www.audiosynth.com
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 #ifndef _PYRKERNELPROTO_H_
23 #define _PYRKERNELPROTO_H_
25 PyrClass
* newClassObj(PyrClass
*classObjSuperClass
,
26 PyrSymbol
* className
, PyrSymbol
* superClassName
,
27 int numInstVars
, int numClassVars
, int numConsts
, int numInstMethods
,
28 int instFormat
, int instFlags
);
30 void reallocClassObj(PyrClass
* classobj
,
31 int numInstVars
, int numClassVars
, int numConsts
, int numMethods
,
32 int instFormat
, int instFlags
);
34 int numInstVars(PyrClass
* classobj
);
35 int numClassVars(PyrClass
* classobj
);
36 int numSuperInstVars(PyrClass
*superclassobj
);
37 bool classFindInstVar(PyrClass
* classobj
, PyrSymbol
*name
, int *index
);
38 bool classFindClassVar(PyrClass
** classobj
, PyrSymbol
*name
, int *index
);
39 bool classFindConst(PyrClass
** classobj
, PyrSymbol
*name
, int *index
);
41 void buildClassTree();
42 void indexClassTree(PyrClass
*classobj
, int numSuperMethods
);
43 void postClassTree(PyrClass
*classobj
, int level
);
44 void setSelectorFlags();
45 void buildBigMethodMatrix();
47 bool funcFindArg(PyrBlock
* func
, PyrSymbol
*name
, int *index
);
48 bool funcFindVar(PyrBlock
* func
, PyrSymbol
*name
, int *index
);
49 void addMethod(PyrClass
*classobj
, PyrMethod
*method
);
52 PyrMethod
* classFindDirectMethod(PyrClass
* classobj
, PyrSymbol
*name
);
54 PyrBlock
* newPyrBlock(int flags
);
55 PyrMethod
* newPyrMethod();
56 PyrClass
* makeIntrinsicClass(PyrSymbol
*className
, PyrSymbol
*superClassName
,
57 int numInstVars
, int numClassVars
);
58 void addIntrinsicVar(PyrClass
*classobj
, const char *varName
, PyrSlot
*slot
);