decl.cpp 633 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include "std.h"
  2. #include "decl.h"
  3. #include "type.h"
  4. Decl::~Decl(){
  5. }
  6. DeclSeq::DeclSeq(){
  7. }
  8. void Decl::getName( char *buff ){
  9. int sz=name.size();
  10. memcpy( buff,name.data(),sz );
  11. buff[sz]=0;
  12. }
  13. DeclSeq::~DeclSeq(){
  14. for( ;decls.size();decls.pop_back() ) delete decls.back();
  15. }
  16. Decl *DeclSeq::findDecl( const string &s ){
  17. vector<Decl*>::iterator it;
  18. for( it=decls.begin();it!=decls.end();++it ){
  19. if( (*it)->name==s ) return *it;
  20. }
  21. return 0;
  22. }
  23. Decl *DeclSeq::insertDecl( const string &s,Type *t,int kind,ConstType *d ){
  24. if( findDecl( s ) ) return 0;
  25. decls.push_back( d_new Decl( s,t,kind,d ) );
  26. return decls.back();
  27. }