# 1 "cl_cosmic.c"
 









 



# 1 "/usr/include/stdio.h" 1
 




















extern	struct	_iobuf {
	int	_cnt;
	char	*_ptr;		 
	char	*_base;		 
	int	_bufsiz;
	short	_flag;

	unsigned char	_file;	 



	char	_smallbuf;	 
} _iob[];


















extern char *bsd_sprintf();
extern char *bsd_vsprintf();


extern struct _iobuf  *fopen();
extern struct _iobuf  *freopen();
extern long int ftell();
extern char *fgets();
extern char *gets();
# 117 "/usr/include/stdio.h"





















 
extern int fileno(struct _iobuf  *stream);



struct _iobuf 	*fdopen();
struct _iobuf 	*popen();
extern int pclose();







# 15 "cl_cosmic.c" 2

# 1 "/usr/include/sys/file.h" 1
 





 








 
 







 
# 1 "/usr/include/sys/fcntl.h" 1
 
 















 


















 






 

 


 











 





 
 





 





 
struct flock {
        short   l_type;		 
        short   l_whence;	 
        long    l_start;	 
        long    l_len;           
        short   l_pid;		 
        short   l_xxx;		 
};


# 26 "/usr/include/sys/file.h" 2





# 58 "/usr/include/sys/file.h"


 










 



 




 







 






# 113 "/usr/include/sys/file.h"






# 16 "cl_cosmic.c" 2

# 1 "mystrings.h" 1
 




 



 

typedef struct strNIntPair {
	int  i;
	char *s;
} strNIntPair;

 




extern char buff[];
extern int buffi;




 


 










int cmp_str();
int cmp_int();

char *trimFrontSpaces();

 


char *trimEdgeSpaces();

void SkipBlanks();

 


int noCaseCharCmp();
int noCaseStrCmp();

 








int NextWord();

 








int SkipNextWord();

 


int GetNextPhrase();

char *NextLines();

 







char *GetLine();

 





int AllBlank();

 






int SearchChar();

 






int CutTailSpace();

 
int strToVal();

 
char *valToStr();

 


int anyCommonChar();

 



int charIsInStr();

int numOfChar();

 


char *trimQuote();

 
char *append();

 
char *appendLine();

char *saveString ();

int eqStr();

char *listSum2Str();

void insertChar();
int shiftStr();

char *getLines();
char *enQuote();
char *enBracket();
char *deBracket();
char *listItem();
# 17 "cl_cosmic.c" 2

# 1 "error.h" 1
enum {
	MESSAGE_DEBUG,
	MESSAGE_ERROR,
	MESSAGE_HISTORY,
	MESSAGE_PROMPT,
	MESSAGE_WARNING,
};

enum {
	ERR_NONE = 0,	
	ERR,		
	ERR_MALLOC,	
	ERR_DIVZERO,	
	ERR_FLOW,	
	ERR_INDEX,	
	ERR_FOPEN,	
	ERR_FWRITE,	
	ERR_SYNTAX,	
	ERR_UNKFUNC,	
	ERR_UNKOBJ,	
	ERR_PRGUNKNOWN,	
	ERR_FILENENGH,	
	ERR_NOTDIR,	
	ERR_FILEEXIST,	
	ERR_OBJNOEXIST,	
	ERR_FILERO,	
	ERR_ARGCOVER,	
	ERR_ARGCUNDER,	
	ERR_CONNCLOSE,	
	ERR_CONNREFUSE,	
	ERR_CONNTOUT,	
	ERR_NETUNREACH,	
	ERR_FNTOOLONG,	
	ERR_DIRNOTEMPTY,
};




char *messageToUserWithObj();
extern int errc;
extern void clearErrors();
extern char *messageToUser();


# 18 "cl_cosmic.c" 2

# 1 "hash.h" 1
 



typedef struct HashEntry {
	struct HashEntry 	*next;
	long			label;
	long			val;
} HashEntry;

typedef struct HashTable {
	HashEntry	*entries;
	int 		size;
	long		(*func_hash)();
	long		(*func_cmp)();
} HashTable;

int hash_int();
int hash_str();
HashTable *initHashTable();
HashEntry *putHashEntry();
HashEntry *addHashEntry();
HashEntry *getHashEntry();
void dumpHashTable();
# 19 "cl_cosmic.c" 2

# 1 "ident.h" 1
 



enum {
	STR_BCard = 1,
	STR_BCardList,
	STR_BDColor,
	STR_BGColor,
	STR_FCard,
	STR_FCardList,
	STR_FGColor,
	STR_GIF,
	STR_HTML,
	STR_HTMLAddress,
	STR_HTMLAnchor,
	STR_HTMLIsIndex,
	STR_HTMLSource,
	STR_HTMLStyle,
	STR_HTMLTitle,
	STR_ID,
	STR_ONHash,
	STR_ONList,
	STR_PS,
	STR_TTY,
	STR_XBM,
	STR_XBMButton,
	STR_XPM,
	STR_XPMButton,
	STR__BCardList,
	STR__FCardList,
	STR__HTMLSrc,
	STR__TFStruct,
	STR__children,
	STR__classInfo,
	STR__classScript,
	STR__classScriptSize,
	STR__colorInfo,
	STR__content,
	STR__content2,
	STR__currentCard,
	STR__eventMask,
	STR__font,
	STR__getSelection,
	STR__isField,
	STR__label,
	STR__menu,
	STR__menuEntries,
	STR__paneConfig,
	STR__parent,
	STR__projectIcon,
	STR__script,
	STR__scriptSize,
	STR__shownDepend,
	STR__shownNotify,
	STR__startClient,
	STR__varList,
	STR_access,
	STR_accessible,
	STR_active,
	STR_address,
	STR_after,
	STR_alarm,
	STR_anyCard,
	STR_append,
	STR_appendStr,
	STR_args,
	STR_argument,
	STR_ascii,
	STR_asciiVal,
	STR_attrDump,
	STR_back,
	STR_backTrack,
	STR_bell,
	STR_bellVolume,
	STR_border,
	STR_building_maxFontDescent,
	STR_building_maxFontHeight,
	STR_building_vspan,
	STR_canvalize,
	STR_card,
	STR_cardList,
	STR_cardNameList,
	STR_cardNum,
	STR_char,
	STR_charButtonMask,
	STR_charHeight,
	STR_charHighLiteMask,
	STR_charMask,
	STR_charStringMask,
	STR_charUnderlineMask,
	STR_charWidth,
	STR_child,
	STR_childn,
	STR_children,
	STR_class,
	STR_classObj,
	STR_classScript,
	STR_clean,
	STR_clear,
	STR_clearArea,
	STR_clearSelection,
	STR_clearWindow,
	STR_cli,
	STR_client,
	STR_clientFD,
	STR_clientFP,
	STR_clientList,
	STR_clone,
	STR_clone2,
	STR_color,
	STR_comm,
	STR_concatenate,
	STR_config,
	STR_content,
	STR_content2,
	STR_copyArea,
	STR_cos,
	STR_cosmic,
	STR_countBCards,
	STR_countChars,
	STR_countChildren,
	STR_countFCards,
	STR_countItems,
	STR_countLines,
	STR_countWords,
	STR_create,
	STR_cursorColumn,
	STR_cursorRow,
	STR_cursorShape,
	STR_currentCard,
	STR_currentChar,
	STR_currentLine,
	STR_currentTag,
	STR_currentWord,
	STR_cursor,
	STR_cursorBlink,
	STR_cursorBlinkDelay,
	STR_cursorPosition,
	STR_cycleColors,
	STR_darkerColor,
	STR_date,
	STR_debug,
	STR_deHighLight,
	STR_delay,
	STR_depth,
	STR_destroy,
	STR_destroyVariable,
	STR_detach,
	STR_dial,
	STR_direction,
	STR_drawCursor,
	STR_drawFillOval,
	STR_drawFillRect,
	STR_drawLine,
	STR_drawOval,
	STR_drawRect,
	STR_drawText,
	STR_dumpAll,
	STR_dumpHierarchy,
	STR_dumpMethods,
	STR_dumpObject,
	STR_endClient,
	STR_enter,
	STR_environVar,
	STR_eraseCursor,
	STR_eraseFillOval,
	STR_eraseFillRect,
	STR_eraseLine,
	STR_eraseOval,
	STR_eraseRect,
	STR_eraseText,
	STR_error,
	STR_event,
	STR_eventMask,
	STR_exist,
	STR_exit,
	STR_expose,
	STR_fd,
	STR_field,
	STR_fieldList,
	STR_filePath,
	STR_filter,
	STR_filter2,
	STR_filter3,
	STR_find,
	STR_findPattern,
	STR_first,
	STR_firstCard,
	STR_float,	
	STR_float2int,	
	STR_float2str,	
	STR_font,
	STR_format,
	STR_fp,
	STR_freeSelf,
	STR_gapH,
	STR_gapV,
	STR_generic,
	STR_get,
	STR_getCurrentCard,
	STR_getSelection,
	STR_getVariable,
	STR_glass,
	STR_goto,
	STR_gravity,
	STR_height,
	STR_highLight,
	STR_host,
	STR_hpane,
	STR_inDelimStat,
	STR_inDelimStr1,
	STR_inDelimStr2,
	STR_info,
	STR_initialize,
	STR_input,
	STR_inputn,
	STR_insert,
	STR_insertLine,
	STR_int,
	STR_int2float,
	STR_int2str,	
	STR_interpret,
	STR_invertCursor,
	STR_invertFillOval,
	STR_invertFillRect,
	STR_invertLine,
	STR_invertOval,
	STR_invertRect,
	STR_invertText,
	STR_isBlank,
	STR_item,
	STR_key,
	STR_keyWords,
	STR_label,
	STR_last,
	STR_lastCard,
	STR_leave,
	STR_lighterColor,
	STR_lineRowOffset,
	STR_list,
	STR_listAllObjects,
	STR_load,
	STR_loadFile,
	STR_lock,
	STR_lower,
	STR_makeTempFile,
	STR_mark,
	STR_maxWidth,
	STR_maxHeight,
	STR_menu,
	STR_menuConfig,
	STR_message,
	STR_minWidth,
	STR_minHeight,
	STR_mirage,
	STR_mouse,
	STR_mouseLocal,
	STR_mouseX,
	STR_mouseXY,
	STR_mouseY,
	STR_mouseButton,
	STR_mouseButtonState,
	STR_move,
	STR_muddle,
	STR_name,
	STR_next,
	STR_nextTag,
	STR_nextCard,
	STR_not,
	STR_nthChar,
	STR_nthChild,
	STR_nthItem,
	STR_nthObjectInList,
	STR_nthLine,
	STR_nthSibling,
	STR_nthWord,
	STR_numberOfLinesDisplayed,
	STR_object,
	STR_objectListAppend,
	STR_objectListCount,
	STR_objectListDelete,
	STR_objectListPrepend,
	STR_objectListSend,
	STR_objectPosition,
	STR_offset,
	STR_outDelimStr,
	STR_output,
	STR_page,
	STR_pane,
	STR_paneConfig,
	STR_param,
	STR_parent,
	STR_path,
	STR_pathSimplify,
	STR_purgeCache,
	STR_pid,
	STR_pop,
	STR_port,
	STR_position,
	STR_prependStr,
	STR_previous,
	STR_previousTag,
	STR_previousCard,
	STR_print,
	STR_printf,
	STR_processInput,
	STR_processKeyInput,
	STR_processMouseInput,
	STR_project,
	STR_projectIcon,
	STR_protocol,
	STR_push,
	STR_quit,
	STR_random,
	STR_randomizeArea,
	STR_raise,
	STR_recall,
	STR_recentCard,
	STR_render,
	STR_reparent,
	STR_resize,
	STR_retrieve,
	STR_rubber,
	STR_save,
	STR_saveAs,
	STR_saveFile,
	STR_scan,
	STR_scanf,
	STR_script,
	STR_scrollBar,
	STR_search,
	STR_send,
	STR_serverList,
	STR_set,
	STR_setCurrentCard,
	STR_setMouse,
	STR_setSelection,
	STR_setVariable,
	STR_shownDepend,
	STR_shownNotify,
	STR_shownPositionH,
	STR_shownPositionSizeH,
	STR_shownPositionSizeV,
	STR_shownPositionV,
	STR_shownSizeH,
	STR_shownSizeV,
	STR_sin,
	STR_size,
	STR_sleep,
	STR_slider,
	STR_smudge,
	STR_socket,
	STR_speed,
	STR_specialEffect,
	STR_startClient,
	STR_stack,
	STR_store,
	STR_str,
	STR_strlen,
	STR_str2float,
	STR_str2int,
	STR_style,
	STR_styles,
	STR_substitute,
	STR_system,
	STR_radio,
	STR_table,
	STR_target,
	STR_test1,
	STR_test2,
	STR_test3,
	STR_test4,
	STR_time,
	STR_toggle,
	STR_toggleState,
	STR_toggleStyle,
	STR_tool,
	STR_totalLineCount,
	STR_tray,
	STR_tweak,
	STR_txt,
	STR_txtButton,
	STR_txtDisp,
	STR_txtEdit,
	STR_txtLabel,
	STR_usual,
	STR_verbatim,
	STR_version,
	STR_violaArgs,
	STR_violaPath,
	STR_visible,
	STR_vpane,
	STR_watch,
	STR_width,
	STR_window,
	STR_windowName,
	STR_windowPosition,
	STR_word,
	STR_wrap,
	STR_write,
	STR_writeln,
	STR_x,
	STR_y,
	STR_LAST_OF_THE_PREDEFINED
};

extern HashTable *symStr2ID, *symID2Str;

extern int init_ident();
# 20 "cl_cosmic.c" 2

# 1 "obj.h" 1
typedef int VObj;

typedef struct ObjList {
	struct ObjList *next;	 
	VObj *o;		 
} VObjList;

extern HashTable *objID2Obj;

extern VObj *VResourceObj;	 
extern VObj *VFontResourceObj;   
extern VObj *VCurrentObj;	 
extern VObj *VTargetObj;	 
extern VObj *VPrevObj;		 

 





 





 







VObj *findObject();
VObjList *appendObjToList();

# 21 "cl_cosmic.c" 2

# 1 "vlist.h" 1
typedef struct VList {
	struct VList *next;
	long id;
} VList;

# 22 "cl_cosmic.c" 2

# 1 "attr.h" 1
 


typedef struct Attr {
	struct Attr *next;	 
	long id;		 
	long val;
} Attr;

Attr *makeAttr();

 





 





 





# 23 "cl_cosmic.c" 2

# 1 "packet.h" 1
 


 






enum {
	PKT_INT,  
	PKT_CHR,  
	PKT_FLT,  
	PKT_STR,  
	PKT_OBJ,  
	PKT_PKT,  
	PKT_ATR,  
	PKT_VLT,  
	PKT_ARY,  
};

 



typedef struct Packet {
	union {
		VObj	*o;
		int	i;
		float	f;
		char	c;
		char	*s;
		struct _iobuf 	*fp;
		struct Packet *p;
		struct Attr *a;
		struct Array *y;
		struct VList *l;
	} info;
	short	type;
} Packet;

typedef struct Array {
	int size;
	int *info;
} Array;



extern int init_packet();
extern Packet *makePacket();
extern Packet *borrowPacket();
extern Packet *clearPacket();
extern Packet *copyPacket();
extern void returnPacket();
extern void returnPackets();
extern void dumpPacket();



# 24 "cl_cosmic.c" 2

# 1 "class.h" 1
 



 

























 

typedef struct SlotInfo {
	long	id;		 
	int	flags;		 
	long	val;		 
	int	offset;		 
	int	section;	 
	long	tmp;		 
} SlotInfo;

 


typedef struct MethodInfo {
	int	id;
	int	(*method)();
} MethodInfo;

 


typedef struct ClassInfo {
	SlotInfo	**slots;
	MethodInfo	*methods;
	int		id;
	struct ClassInfo *superClass;

	 
	SlotInfo	**slookup;
	int 		newcount;	 
	int 		totalcount;	 

	 
	VObj		*common; 	 
	SlotInfo	**common_slookup;
	int		common_newcount;    
	int		common_totalcount;
} ClassInfo;

extern int init_class();
extern ClassInfo *getClassInfoByID();
extern ClassInfo *getClassInfoByName();
extern VObj *buildObjWithLoadedSlots();
extern VObj *instantiateObj();
extern long *searchSlot();
extern int saveSelfAndChildren();
extern int dumpObj();
extern VObj *clone();



# 25 "cl_cosmic.c" 2

# 1 "classlist.h" 1
 


extern ClassInfo *classList[];

extern ClassInfo class_cosmic;		
extern ClassInfo class_field;		
extern ClassInfo class_glass;		
extern ClassInfo class_PS;
extern ClassInfo class_project;		
extern ClassInfo class_generic;		
extern ClassInfo class_pane;		
extern ClassInfo class_vpane;		
extern ClassInfo class_hpane;		
extern ClassInfo class_rubber;		
extern ClassInfo class_tray;		
extern ClassInfo class_txt;		
extern ClassInfo class_txtButton;	
extern ClassInfo class_txtLabel;	
extern ClassInfo class_txtDisp;		
extern ClassInfo class_txtEdit;		
extern ClassInfo class_HTML;
extern ClassInfo class_slider;		
extern ClassInfo class_XBM;		
extern ClassInfo class_XBMButton;	
extern ClassInfo class_XPM;		
extern ClassInfo class_XPMButton;	
extern ClassInfo class_GIF;		
extern ClassInfo class_dial;		
extern ClassInfo class_menu;		
extern ClassInfo class_toggle;		
extern ClassInfo class_radio;		
extern ClassInfo class_BCard;		
extern ClassInfo class_FCard;		
extern ClassInfo class_stack;		
extern ClassInfo class_client;		
extern ClassInfo class_TTY;		
extern ClassInfo class_socket;		
# 26 "cl_cosmic.c" 2

# 1 "cl_cosmic.h" 1
 




extern ClassInfo class_cosmic;

int meth_cosmic_clone();
int meth_cosmic_clone2();
int meth_cosmic_create();
int meth_cosmic_debug();
int meth_cosmic_destroy();
int meth_cosmic_detach();
int meth_cosmic_exist();
int meth_cosmic_exit();
int meth_cosmic_freeSelf();
int meth_cosmic_info();
int meth_cosmic_interpret();
int meth_cosmic_object();
int meth_cosmic_pop();
int meth_cosmic_push();
int meth_cosmic_quit();
int meth_cosmic_save();
int meth_cosmic_saveAs();
int meth_cosmic_send();
int meth_cosmic_test1();
int meth_cosmic_test2();
int meth_cosmic_test3();
int meth_cosmic_test4();
int meth_cosmic_tweak();
int meth_cosmic_usual();

void sendInitToChildren();

# 27 "cl_cosmic.c" 2

# 1 "slotaccess.h" 1
 





 






 


























 


 

















 




 


 
 
































































































































 


 
 












































 


 
 
























 














 


 
 








 


 
 



 


 
 












 






















 


 
 








 


 
 
















 


 
 

 


 
 

 


 
 




 


 
 








 


 
 








 


 
 












# 28 "cl_cosmic.c" 2

# 1 "cexec.h" 1
extern Packet *codeExec();
extern Packet *execObjScript();
extern Packet *execObjClassScript();
extern Packet *execScript();
extern void dumpVarList();

extern int sendMessagePackets();
extern int sendMessageAndInts();
extern int sendMessage1();
extern int sendMessage1N1int();
extern int sendMessage1N2int();
extern int sendMessage1N4int();

extern int flag_printExec;
extern char *passthru_argument;
extern int getVariable();
extern int setVariable();
extern int destroyVariable();
# 29 "cl_cosmic.c" 2

# 1 "misc.h" 1
extern int cmd_history;
extern int verbose;

int transferNumList2Array();
int argNumsToInt();
VObjList *strOListToOList();
char *OListToStr();
char *OListToStrPlusSuffix();

 



int makeArgv();

char *PkInfos2Str();

char *PkInfo2Str();
char PkInfo2Chr();
int PkInfo2Int();
float PkInfo2Flt();
VObj *PkInfo2Obj();
char *extractWord();
# 30 "cl_cosmic.c" 2


SlotInfo cl_cosmic_NCSlots[] = {
{
	STR_class,
		5 	 | 	0x0030 ,
	(long)"cosmic"
},{
	STR_classScript,
		5 	,
	(long)"\n		switch (arg[0]) {\n		case \"config\":\n			config(arg[1], arg[2], arg[3], arg[4]);\n		break;\n		case \"expose\":\n		case \"render\":\n			expose(arg[1], arg[2], arg[3], arg[4]);\n			render();\n		break;\n		case \"init\":\n			initialize();\n		break;\n		default:\n			print(\"unknown message, clsss = cosmic: args: \");\n			for (i =0; i < arg[]; i++) print(arg[i], \", \");\n			print(\"\\n\");\n			break;\n		}\n	",
# 60 "cl_cosmic.c"
},{
	STR__classScript,
		11	,
	0 ,
},{
	STR__classScriptSize,
			1	,
	0,
},{
	0 
}
};
SlotInfo cl_cosmic_NPSlots[] = {
{
	STR__classInfo,
		10	,
	(long)&class_cosmic
},{
	0 
}
};
SlotInfo cl_cosmic_CSlots[] = {
	0 
};
SlotInfo cl_cosmic_PSlots[] = {
	0 
};

SlotInfo *slots_cosmic[] = {
	(SlotInfo*)cl_cosmic_NCSlots,
	(SlotInfo*)cl_cosmic_NPSlots,
	(SlotInfo*)cl_cosmic_CSlots,
	(SlotInfo*)cl_cosmic_PSlots
};

MethodInfo meths_cosmic[] = {
{
	STR_clone,
	meth_cosmic_clone
},{
	STR_clone2,
	meth_cosmic_clone2
},{
	STR_create,
	meth_cosmic_create
},{
	STR_debug,
	meth_cosmic_debug
},{
	STR_detach,
	meth_cosmic_detach
},{
	STR_destroy,
	meth_cosmic_destroy
},{
	STR_exit,
	meth_cosmic_exit
},{
	STR_exist,
	meth_cosmic_exist
},{
	STR_freeSelf,
	meth_cosmic_freeSelf
},{
	STR_info,
	meth_cosmic_info
},{
	STR_interpret,
	meth_cosmic_interpret
},{
	STR_object,
	meth_cosmic_object
},{
	STR_pop,
	meth_cosmic_pop
},{
	STR_push,
	meth_cosmic_push
},{
	STR_quit,
	meth_cosmic_quit
},{
	STR_save,
	meth_cosmic_save
},{
	STR_saveAs,
	meth_cosmic_saveAs
},{
	STR_send,
	meth_cosmic_send
},{
	STR_test1,
	meth_cosmic_test1
},{
	STR_test2,
	meth_cosmic_test2
},{
	STR_test3,
	meth_cosmic_test3
},{
	STR_test4,
	meth_cosmic_test4
},{
	STR_tweak,
	meth_cosmic_tweak
},{
	STR_usual,
	meth_cosmic_usual
},{
	0 
}
};

ClassInfo class_cosmic = {
	slots_cosmic,		 
	meths_cosmic,		 
	STR_cosmic,		 
	0 ,			 
};

void sendInitToChildren(self) 
	VObj *self;
{
	Packet result;
	VObjList *olist;

	if (!callMeth(self, &result, 0, 0 , STR_initialize)) {
		fprintf((&_iob[2]) , "clone ``%s''not properly initialized\n", 
			((char*)((self)[1])) );
		 
	}
	for (olist = ((VObjList*)((self)[5])) ; olist; olist = olist->next)
		if (olist->o) sendInitToChildren(olist->o);
}

 







int meth_cosmic_clone(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	VObj *cloneObj;

	if (!meth_cosmic_clone2(self, result, argc, argv)) return 0;
	cloneObj = result->info.o;
	if (cloneObj) {
		sendInitToChildren(cloneObj);
		result->type = PKT_OBJ;
		result->info.o = cloneObj;
		return 1;
	}
	result->type = PKT_OBJ;
	result->info.o = 0 ;
	return 0;
}

int meth_cosmic_clone2(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	char *suffix;
	VObj *cloneObj;
	char newName[255];

	cloneObj = clone(self);
	suffix = PkInfo2Str(&argv[0]);
	if (!cloneObj || !suffix) {
		result->type = PKT_OBJ;
		result->info.o = 0 ;
		return 0;
	}
	bsd_sprintf (newName, "%s%s", ((char*)((cloneObj)[1])) , suffix);
	((char*)((cloneObj)[1]=(long)( saveString(newName)))) ;
	putHashEntry(objID2Obj, storeIdent(((char*)((cloneObj)[1])) ), (int)cloneObj);

	result->type = PKT_OBJ;
	result->info.o = cloneObj;
	return 1;
}

 





int meth_cosmic_create(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	int slotv[100][2], slotc = 0, i;
	char *cp;
	HashEntry *entry;
	VObj *obj;

	result->type = PKT_OBJ;
	result->info.o = 0 ;

	for (slotc = 0, i = 0; i < argc; slotc++, i += 2) {
		cp = PkInfo2Str(&argv[i]);
		if (!cp) {
			printf("create(): unknown attribute:");
			dumpPacket(&argv[i]);
			printf("\n");
			return 0;
		}
		entry = getHashEntry(symStr2ID, (int)cp);
		if (!entry) {
			printf("create(): unknown attribute: \"%s\"\n", cp);
			return 0;
		}
		slotv[slotc][0] = (int)(entry->val);
		slotv[slotc][1] = (int)saveString(PkInfo2Str(&argv[i + 1]));
	}
	if (slotc <= 0) return 0;

	if (obj = instantiateObj(slotv, &slotc)) {
		putHashEntry(objID2Obj, storeIdent(((char*)((obj)[1])) ), (int)obj);
		sendMessage1(obj, "init");
		result->type = PKT_OBJ;
		result->info.o = obj;
		return 1;
	} else {
		fprintf((&_iob[2]) , "create(): failed to create object.\n");
		return 0;
	}
}

 






int meth_cosmic_detach(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	clearPacket(result);
	return 0;
}

 







int meth_cosmic_debug(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	clearPacket(result);
	if (!((*PkInfo2Str(&argv[0]) == * "pa") ? ((*(PkInfo2Str(&argv[0])+1) == *( "pa"+1)) ? (strcmp(PkInfo2Str(&argv[0]), "pa")) : 1) : 1) ) {
		extern int flag_printAST;
		flag_printAST = PkInfo2Int(&argv[1]);
	} else if (!((*PkInfo2Str(&argv[0]) == * "pc") ? ((*(PkInfo2Str(&argv[0])+1) == *( "pc"+1)) ? (strcmp(PkInfo2Str(&argv[0]), "pc")) : 1) : 1) ) {
		extern int flag_printPCode;
		flag_printPCode = PkInfo2Int(&argv[1]);
	} else if (!((*PkInfo2Str(&argv[0]) == * "pe") ? ((*(PkInfo2Str(&argv[0])+1) == *( "pe"+1)) ? (strcmp(PkInfo2Str(&argv[0]), "pe")) : 1) : 1) ) {
		extern int flag_printExec;
		flag_printExec = PkInfo2Int(&argv[1]);
	} else if (!((*PkInfo2Str(&argv[0]) == * "dumpPCode") ? ((*(PkInfo2Str(&argv[0])+1) == *( "dumpPCode"+1)) ? (strcmp(PkInfo2Str(&argv[0]), "dumpPCode")) : 1) : 1) ) {
		int pc = 0;
	        union PCode *pcode = ((union PCode*)((self)[8])) ;
		int pc_limit = ((long)((self)[9])) ;
		printPCode(pcode, &pc, pc_limit);
	}
	return 1;
}

 







int meth_cosmic_destroy(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	clearPacket(result);
	return 0;
}

 







int meth_cosmic_exit(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	fprintf((&_iob[2]) , "exit...\n");
	exit(PkInfo2Int(&argv[0]));
}

 







int meth_cosmic_exist(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	HashEntry *entry;

	result->type = PKT_INT;
	if (entry = getHashEntry(symStr2ID, (int)PkInfo2Str(&argv[0]))) {
		if (findObject(entry->val)) {
			result->info.i = 1;
			return 1;
		}
	}
	result->info.i = 1;
	return 1;
}

 






int meth_cosmic_freeSelf(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	clearPacket(result);
	free(self);
	 
	return 1;
}

 




















int meth_cosmic_info(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	char *cp;

	clearPacket(result);
	if (argc == 0) {
		return dumpObj(self, fprintf, (&_iob[1]) , 0, 0);
	}
	cp = PkInfo2Str(&argv[0]);
	if (!((*cp == * "listMethods") ? ((*(cp+1) == *( "listMethods"+1)) ? (strcmp(cp, "listMethods")) : 1) : 1) ) {
		extern HashTable *symID2Str;
		ClassInfo *cip;
		MethodInfo *mip;
		struct _iobuf  *fp;

		if (argc >= 2) {
			cip = getClassInfoByName(PkInfo2Str(&argv[1]));
		} else {
			cip = (ClassInfo*)((char*)(((ClassInfo*)((self)[0]))->common[0])) ;
		}
		if (argc == 3) {
			fp = fopen(PkInfo2Str(&argv[2]), "w");
			if (!fp) return 0;
			for (mip = cip->methods; mip->id; mip++)
				fprintf(fp, "%s\n", 
					(char*)getHashEntry(symID2Str,
								mip->id)->val);
			fclose(fp);
		} else {
			char sbuff[255];

			buff[0] ='\0';
			for (mip = cip->methods; mip->id; mip++) {
				bsd_sprintf (sbuff, "%s\n", 
					(char*)getHashEntry(symID2Str,
							mip->id)->val);
				strcat(buff, " ");
				strcat(buff, sbuff);
			}
			result->info.s = saveString(buff);
			result->type = PKT_STR;
		}

	} else if (!((*cp == * "listNPSlots") ? ((*(cp+1) == *( "listNPSlots"+1)) ? (strcmp(cp, "listNPSlots")) : 1) : 1) ) {
		ClassInfo *cip;
		SlotInfo *sip;
		int i;

		if (argc >= 2) {
			cip = getClassInfoByName(PkInfo2Str(&argv[1]));
		} else {
			cip = (ClassInfo*)((char*)(((ClassInfo*)((self)[0]))->common[0])) ;
		}
		buff[0] = '\0';
		sip = cip->slots[1];  
		for (i = 0; sip[i].id; i++) {
			if (!(sip[i].flags & 	0x0030 )) continue;
			strcat(buff, 
				(char*)getHashEntry(symID2Str, 
					sip[i].id)->val);
			strcat(buff, "\n");
		}	
		result->info.s = saveString(buff);
		result->type = PKT_STR;

	} else if (!((*cp == * "listNCSlots") ? ((*(cp+1) == *( "listNCSlots"+1)) ? (strcmp(cp, "listNCSlots")) : 1) : 1) ) {
		ClassInfo *cip;
		SlotInfo *sip;
		int i;

		if (argc >= 2) {
			cip = getClassInfoByName(PkInfo2Str(&argv[1]));
		} else {
			cip = (ClassInfo*)((char*)(((ClassInfo*)((self)[0]))->common[0])) ;
		}
		buff[0] = '\0';
		sip = cip->slots[0];  
		for (i = 0; sip[i].id; i++) {
			strcat(buff, 
				(char*)getHashEntry(symID2Str, 
					sip[i].id)->val);
			strcat(buff, "\n");
		}	
		result->info.s = saveString(buff);
		result->type = PKT_STR;

	} else if (!((*cp == * "listSlotsRW") ? ((*(cp+1) == *( "listSlotsRW"+1)) ? (strcmp(cp, "listSlotsRW")) : 1) : 1) ) {
		return dumpObj(self, fprintf, (&_iob[1]) , 	0x0030 , 0);
	} else if (!((*cp == * "listSlotsR") ? ((*(cp+1) == *( "listSlotsR"+1)) ? (strcmp(cp, "listSlotsR")) : 1) : 1) ) {
		return dumpObj(self, fprintf, (&_iob[1]) , 	0x0010 , 0);
	} else if (!((*cp == * "listSlotsW") ? ((*(cp+1) == *( "listSlotsW"+1)) ? (strcmp(cp, "listSlotsW")) : 1) : 1) ) {
		return dumpObj(self, fprintf, (&_iob[1]) , 	0x0020 , 0);
	} else if (!((*cp == * "listAllObjects") ? ((*(cp+1) == *( "listAllObjects"+1)) ? (strcmp(cp, "listAllObjects")) : 1) : 1) ) {

	} else if (!((*cp == * "listAllMethods") ? ((*(cp+1) == *( "listAllMethods"+1)) ? (strcmp(cp, "listAllMethods")) : 1) : 1) ) {
		extern HashTable *symStr2ID, *symID2Str;
		ClassInfo *cip, *cip2;
		MethodInfo *mip;
		int i;

		for (i = 0; cip = classList[i]; i++) {
			printf("\n%s :\n", 
				(char*)getHashEntry(symID2Str, cip->id)->val);
			for (cip2 = cip; cip2; cip2 = cip2->superClass) {
				for (mip = cip2->methods; mip->id; mip++) {
					printf("%s\n", 
						(char*)getHashEntry(symID2Str,
							mip->id)->val);
				}
			}
			printf("\n");
		}
	}
	return 1;
}

 







int meth_cosmic_interpret(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	int i;
	extern Packet reg1;  

	clearPacket(result);
	for (i = 0; i < argc; i++) execScript(self, result, argv[i].info.s);
	result->info = reg1.info;
	result->type = reg1.type;

	return 1;
}

 







int meth_cosmic_object(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	HashEntry *entry;
	VObj *obj;
	char *cp;

	result->info.o = PkInfo2Obj(&argv[0]);
	result->type = PKT_OBJ;
	return 1;
}

 






int meth_cosmic_pop(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	clearPacket(result);
	return 0;
}

 






int meth_cosmic_push(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	clearPacket(result);
	return 0;
}

 







int meth_cosmic_quit(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	fprintf((&_iob[2]) , "exit...\n");
	exit(0);
}

 








int meth_cosmic_save(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	VObj *parent, *obj = self;
	char fileName[100];
	struct _iobuf  *fp;
	int stat;

	while (parent = ((VObj*)((obj)[3])) ) obj = parent;

	strcpy(fileName, ((char*)((obj)[1])) );
	strcat(fileName, ".v");

	fp = fopen(fileName, "w");
	if (fp) {
		stat = saveSelfAndChildren(obj, fp);
		fclose(fp);
		if (stat) {
			result->type = PKT_STR;
			result->info.s = saveString(fileName);
			return 1;
		}
	}
	clearPacket(result);
	return 0;
}

 







int meth_cosmic_saveAs(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	VObj *parent, *obj = self;
	char *cp, fileName[100];
	struct _iobuf  *fp;
	int stat;

	if (argc != 1) return 0;

	while (parent = ((VObj*)((obj)[3])) ) obj = parent;

	cp = PkInfo2Str(&argv[0]);
	if (!cp) return 0;

	strcpy(fileName, cp);

	fp = fopen(cp, "w");
	if (fp) {
		stat = saveSelfAndChildren(obj, fp);
		fclose(fp);
		if (stat) {
			result->type = PKT_STR;
			result->info.s = saveString(fileName);
			return 1;
		}
	}
	clearPacket(result);
	return stat;
}

 







int meth_cosmic_send(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	VObj *obj;
	char *cp;

	obj = PkInfo2Obj(&argv[0]);
	if (!obj) {
		
	}
	if (obj) {
		if (sendMessagePackets(obj, &argv[1], argc - 1)) {
			extern Packet reg1;  
			result->info = reg1.info;
			result->type = reg1.type;
			return 1;
		}
	}
	clearPacket(result);
	return 0;
}

int meth_cosmic_test1(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
 


	Attr *attrp;
	Packet *packet0 = makePacket();
	Packet *packet1 = makePacket();

	packet0->info.i = 4;
	packet0->type = PKT_INT;
	packet1->info.i = 7;
	packet1->type = PKT_INT;

	result->type = PKT_ATR;
	result->info.a = attrp = makeAttr(0, packet0);
	attrp->next = makeAttr(1, packet1);
	return 1;
}

int meth_cosmic_test2(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	result->type = PKT_INT;
	result->info.i = 200;
}

int meth_cosmic_test3(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	result->type = PKT_INT;
	result->info.i = 300;
}

int meth_cosmic_test4(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	result->type = PKT_INT;
	result->info.i = 400;
}

 








int meth_cosmic_tweak(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	VObj *obj;
	int i;
 




	obj = PkInfo2Obj(&argv[0]);
	if (obj) {
		extern Packet reg1;  
		for (i = 1; i < argc; i++) {
			char *cp = saveString(PkInfo2Str(&argv[i]));
			execScript(obj, result, cp);
			free(cp);
		}
		result->info = reg1.info;
		result->type = reg1.type;
		return 1;
	}
	clearPacket(result);
	return 0;
}

 







int meth_cosmic_usual(self, result, argc, argv)
	VObj *self;
	Packet *result;
	int argc;
	Packet argv[];
{
	extern int stackExecIdx;
	extern int stackBaseIdx;
	int save_stackExecIdx;
	int save_stackBaseIdx;

	save_stackExecIdx = stackExecIdx;
	save_stackBaseIdx = stackBaseIdx;

	stackBaseIdx = stackExecIdx;
	execObjClassScript(self, result);

	stackExecIdx = save_stackExecIdx;
	stackBaseIdx = save_stackBaseIdx;

	return 1;
}

