bbdeclinfo.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "bbdeclinfo_r.h"
  2. // ***** bbDeclInfo ****
  3. bbString bbDeclInfo::toString(){
  4. return kind+" "+name+":"+(type ? type->name : "?????");
  5. }
  6. bbVariant bbDeclInfo::get( bbVariant instance ){
  7. bbRuntimeError( "Decl is not gettable" );
  8. return {};
  9. }
  10. void bbDeclInfo::set( bbVariant instance,bbVariant value ){
  11. bbRuntimeError( "Decl is not settable" );
  12. }
  13. bbVariant bbDeclInfo::invoke( bbVariant instance,bbArray<bbVariant> params ){
  14. bbRuntimeError( "Decl is not invokable" );
  15. return {};
  16. }
  17. bbArray<bbString> bbDeclInfo::getMetaKeys(){
  18. if( !meta.length() ) return {};
  19. bbString eol="~\n";
  20. int n=1,i0=0;
  21. while( i0<meta.length() ){
  22. int i1=meta.find( eol,i0 );
  23. if( i1==-1 ) break;
  24. i0=i1+2;
  25. n+=1;
  26. }
  27. bbArray<bbString> keys( n );
  28. i0=0;
  29. for( int i=0;i<n;++i ){
  30. int i1=meta.find( "=",i0 );
  31. keys[i]=meta.slice( i0,i1 );
  32. i0=meta.find( eol,i1+1 )+2;
  33. }
  34. return keys;
  35. }
  36. bbString bbDeclInfo::getMetaValue( bbString key ){
  37. if( !meta.length() ) return {};
  38. bbString eol="~\n";
  39. key+="=";
  40. int i0=0;
  41. if( !meta.startsWith( key ) ){
  42. i0=meta.find( eol+key )+2;
  43. if( i0==1 ) return {};
  44. }
  45. i0+=key.length();
  46. int i1=meta.find( eol,i0 );
  47. if( i1==-1 ) return meta.slice( i0 );
  48. return meta.slice( i0,i1 );
  49. }