Changeset 12a919e in tol


Ignore:
Timestamp:
Mar 16, 2011, 3:02:15 PM (16 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
9247be0
Parents:
d337602
Message:

Fixes #1111
Fixes #1121
New virtual method GetSizeOf due to sizeof(*address_) is not working fine

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@3304 be4846ae-f051-483a-831f-b64e7d08527f

Location:
tol/bbasic
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • tol/bbasic/cor.cpp

    rd337602 r12a919e  
    5656    return(nCore_);
    5757}
     58
     59
     60BCore::MemAssignInfo::MemAssignInfo(BCore* address)
     61{
     62  SetAddress(address);
     63}
     64
     65void BCore::MemAssignInfo::SetAddress(BCore* address)
     66{
     67  address_ = address; 
     68  if(address)
     69  {
     70    size_    = address_->GetSizeOf();
     71    pageNum_ = address_->GetPageNum();
     72    assert(size_);
     73  }
     74  else
     75  {
     76    size_    = 0;
     77    pageNum_ = 0;
     78  }
     79}
     80
     81short BCore::MemAssignInfo::IsAssigned()
     82{
     83  if(!address_) { return(0); }
     84  else if(!size_) { return(0); }
     85  {
     86    BFixedSizeMemoryBase* hnd = BFixedSizeMemoryBase::Instance(size_);
     87    if(!hnd) { return(-1); }
     88    else     { return(hnd->IsAssigned(address_,pageNum_)); }
     89  }
     90}
     91
     92void BCore::MemAssignInfo::SafeDestroy()
     93{
     94  if(IsAssigned()>0)
     95  {
     96    address_->Destroy();
     97    address_ = NULL;
     98  }
     99}
  • tol/bbasic/tol_bcore.h

    rd337602 r12a919e  
    6262    virtual BFixedSizeMemoryBase* GetMemHandler() const { return(NULL); }
    6363    virtual unsigned short  GetPageNum   () const { return(0); }
     64    virtual size_t GetSizeOf() const { return(0); }
    6465    struct TOL_API MemAssignInfo
    6566    {
    6667      BCore*                address_;
     68      size_t                size_;
    6769      unsigned short        pageNum_;
    6870
    69       MemAssignInfo(BCore* address)
    70       {
    71         SetAddress(address);
    72       }
    73 
    74       void SetAddress(BCore* address)
    75       {
    76         address_ = address; 
    77         if(address)
    78         {
    79           pageNum_    = address_->GetPageNum();
    80         }
    81         else
    82         {
    83           pageNum_    = 0;
    84         }
    85       }
    86 
    87       short IsAssigned()
    88       {
    89         if(!address_) { return(0); }
    90         else
    91         {
    92           BFixedSizeMemoryBase* hnd = BFSMSingleton<sizeof(*address_)>::Handler();
    93           if(!hnd) { return(-1); }
    94           else     { return(hnd->IsAssigned(address_,pageNum_)); }
    95         }
    96       }
    97 
    98       void SafeDestroy()
    99       {
    100         if(IsAssigned()>0)
    101         {
    102           address_->Destroy();
    103           address_ = NULL;
    104         }
    105       }
     71      MemAssignInfo(BCore* address);
     72      void SetAddress(BCore* address);
     73      short IsAssigned();
     74      void SafeDestroy();
    10675    };
    10776#else
  • tol/bbasic/tol_bfsmem.h

    rd337602 r12a919e  
    6363    return(BFSMSingleton<sizeof(ANY_)>::Handler()); \
    6464  } \
     65  size_t GetSizeOf() const \
     66  { \
     67    return(sizeof(ANY_)); \
     68  } \
    6569  unsigned short GetPageNum() const \
    6670  { \
Note: See TracChangeset for help on using the changeset viewer.