/*****************************************************************************
*   "Irit" - the 3d (not only polygonal) solid modeller.		     *
*									     *
* Written by:  Gershon Elber				Ver 0.2, Mar. 1990   *
******************************************************************************
*   General, visible to others, definitions of Objects module.		     *
*****************************************************************************/

/*****************************************************************************
*   Prototype for visible function in the Objects module.		     *
*****************************************************************************/

#ifndef	OBJECTS_H
#define	OBJECTS_H

void SetUpPredefObjects(void);
void SetObjectAttrib(IPObjectStruct *PObj, char *Name, IPObjectStruct *Data);
double ThisObjectIs(IPObjectStruct *PObj);
void IritObjectPrintfStdout(char *CtlStr, IPObjectStruct *PObjLst);
void IritObjectPrintf(FILE *File, char *CtlStr, IPObjectStruct *PObjLst);
double GetListSize(IPObjectStruct *ListObj);
IPObjectStruct *GetNilList();
IPObjectStruct *GetNthList(IPObjectStruct *ListObj, RealType *Rn);
IPObjectStruct *AppendLists(IPObjectStruct *ListObj1, IPObjectStruct *ListObj2);
void SnocList(IPObjectStruct *PObj, IPObjectStruct *ListObj);
IPObjectStruct *GetObject(char *ObjName);
IPObjectStruct *GetObjectCoord(IPObjectStruct *PObj, RealType *RIndex);
void FreeObject(IPObjectStruct *PObj);
void DeleteObject(IPObjectStruct *PObj, int Free);
void InsertObject(IPObjectStruct *PObj);
void PrintObject(IPObjectStruct *PObj);
void PrintObjectList(IPObjectStruct *PObj);
IPObjectStruct *CoerceObjectTo(IPObjectStruct *PObj, RealType *RNewType);
void SaveObjectInFile(char *FileName, IPObjectStruct *PObj);
IPObjectStruct *LoadObjectFromFile(char *FileName);
int LoadSaveObjectParseError(char **ErrorMsg);
IPObjectStruct *GenMatObjectGeneric(IPObjectStruct *LstObjList);

#endif	/* OBJECTS_H */

