added project
This commit is contained in:
95
dvm/fdvm/trunk/Sage/lib/include/attributes.h
Normal file
95
dvm/fdvm/trunk/Sage/lib/include/attributes.h
Normal file
@@ -0,0 +1,95 @@
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Defines the data structure for attributes in sage
|
||||
// attributes can be used to store any information for any statement, expression, symbol or types nodes
|
||||
// F. Bodin Indiana July 94.
|
||||
//
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class SgAttribute{
|
||||
private:
|
||||
// the attribute data;
|
||||
int type; // a label;
|
||||
void *data; // the data;
|
||||
int dataSize; // the size of the data in bytes to allow data to be copied;
|
||||
SgAttribute *next; // to the next attribute of a statements (do that way or not??);
|
||||
// link to sage node, allow to go from an attribute to sage stuffs;
|
||||
typenode typeNode; // indicates if SgStatement, SgExpression, ... ptToSage is pointed to;
|
||||
void *ptToSage; // pointer to SgStatement, SgExpression, ... ;
|
||||
int fileNumber; // the file methods;
|
||||
// the methods to access the structure of an attributes;
|
||||
public:
|
||||
SgAttribute(int t, void *pt, int size, SgStatement &st, int filenum);
|
||||
SgAttribute(int t, void *pt, int size, SgSymbol &st, int filenum);
|
||||
SgAttribute(int t, void *pt, int size, SgExpression &st, int filenum);
|
||||
SgAttribute(int t, void *pt, int size, SgType &st, int filenum);
|
||||
SgAttribute(int t, void *pt, int size, SgLabel &st, int filenum); //Kataev 21.03.2013
|
||||
SgAttribute(int t, void *pt, int size, SgFile &st, int filenum); //Kataev 15.07.2013
|
||||
SgAttribute(const SgAttribute& copy)
|
||||
{
|
||||
type = copy.type;
|
||||
data = copy.data;
|
||||
dataSize = copy.dataSize;
|
||||
next = NULL;
|
||||
typeNode = copy.typeNode;
|
||||
ptToSage = copy.ptToSage;
|
||||
fileNumber = copy.fileNumber;
|
||||
}
|
||||
|
||||
~SgAttribute();
|
||||
int getAttributeType();
|
||||
void setAttributeType(int t);
|
||||
void *getAttributeData();
|
||||
void *setAttributeData(void *d);
|
||||
int getAttributeSize();
|
||||
void setAttributeSize(int s);
|
||||
typenode getTypeNode();
|
||||
void *getPtToSage();
|
||||
void setPtToSage(void *sa);
|
||||
void resetPtToSage();
|
||||
void setPtToSage(SgStatement &st);
|
||||
void setPtToSage(SgSymbol &st);
|
||||
void setPtToSage(SgExpression &st);
|
||||
void setPtToSage(SgType &st);
|
||||
void setPtToSage(SgLabel &st); //Kataev 21.03.2013
|
||||
void setPtToSage(SgFile &st); //Kataev 15.07.2013
|
||||
SgStatement *getStatement();
|
||||
SgExpression *getExpression();
|
||||
SgSymbol *getSgSymbol();
|
||||
SgType *getType();
|
||||
SgLabel *getLabel(); //Kataev 21.03.2013
|
||||
SgFile *getFile(); //Kataev 15.07.2013
|
||||
int getfileNumber();
|
||||
SgAttribute *copy();
|
||||
SgAttribute *getNext();
|
||||
void setNext(SgAttribute *s);
|
||||
int listLenght();
|
||||
SgAttribute *getInlist(int num);
|
||||
void save(FILE *file);
|
||||
void save(FILE *file, void (*savefunction)(void *dat,FILE *f));
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
// The ATTRIBUTE TYPE ALREADY USED
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define DEPENDENCE_ATTRIBUTE -1001
|
||||
#define INDUCTION_ATTRIBUTE -1002
|
||||
#define ACCESS_ATTRIBUTE -1003
|
||||
#define DEPGRAPH_ATTRIBUTE -1004
|
||||
#define USEDLIST_ATTRIBUTE -1005
|
||||
#define DEFINEDLIST_ATTRIBUTE -1006
|
||||
|
||||
#define NOGARBAGE_ATTRIBUTE -1007
|
||||
#define GARBAGE_ATTRIBUTE -1008
|
||||
|
||||
// store the annotation expression; it is then visible from the
|
||||
// garbage collection
|
||||
#define ANNOTATION_EXPR_ATTRIBUTE -1009
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user