/*virtual*/ void
morkBuilder::OnMetaEnd(morkEnv* ev, const morkSpan& inSpan)
// mp:Meta      ::= OnNewMeta mp:MetaItem* OnMetaEnd
{
  MORK_USED_2(ev,inSpan);
  // mParser_InMeta = morkBool_kFalse;
}
void
morkBuilder::LogGlitch(morkEnv* ev, const morkGlitch& inGlitch, 
  const char* inKind)
{
  MORK_USED_2(inGlitch,inKind);
  ev->NewWarning("parsing glitch");
}
/*virtual*/ void
morkBuilder::OnGroupCommitEnd(morkEnv* ev, const morkSpan& inSpan)  
{
  MORK_USED_2(ev,inSpan);
  // mParser_InGroup = morkBool_kFalse;
  // ev->StubMethodOnlyError();
}
/*virtual*/ void morkBuilder::OnPortEnd(morkEnv* ev, const morkSpan& inSpan)
// mp:Start     ::= OnNewPort mp:PortItem* OnPortEnd
{
  MORK_USED_2(ev, inSpan);
  // ev->StubMethodOnlyError();
  // nothing to do?
  // mParser_InPort = morkBool_kFalse;
}
/*virtual*/ void morkBuilder::OnCellEnd(morkEnv* ev, const morkSpan& inSpan)
// mp:Cell      ::= OnMinusCell? OnNewCell mp:CellItem? OnCellEnd
{
  MORK_USED_2(ev, inSpan);
  // mParser_InCell = morkBool_kFalse;

  mBuilder_MetaTokenSlot = 0;
  mBuilder_CellAtomScope = mBuilder_RowAtomScope;
}
/*virtual*/ void morkBuilder::OnDictEnd(morkEnv* ev, const morkSpan& inSpan)
// mp:Dict      ::= OnNewDict mp:DictItem* OnDictEnd
{
  MORK_USED_2(ev, inSpan);
  // mParser_InDict = morkBool_kFalse;

  mBuilder_DictForm = 0;
  mBuilder_DictAtomScope = 0;
}
/*virtual*/ void morkBuilder::OnNewDict(morkEnv* ev, const morkPlace& inPlace)
// mp:Dict      ::= OnNewDict mp:DictItem* OnDictEnd
// mp:DictItem  ::= OnAlias | OnAliasGlitch | mp:Meta | OnDictGlitch
{
  MORK_USED_2(ev, inPlace);
  // mParser_InDict = morkBool_kTrue;

  mBuilder_CellForm = mBuilder_DictForm = mBuilder_PortForm;
  mBuilder_CellAtomScope = mBuilder_DictAtomScope = mBuilder_PortAtomScope;
}
/*virtual*/ void morkBuilder::OnNewMeta(morkEnv* ev, const morkPlace& inPlace)
// mp:Meta      ::= OnNewMeta mp:MetaItem* OnMetaEnd
// mp:MetaItem  ::= mp:Cell | OnMetaGlitch
// mp:Cell      ::= OnMinusCell? OnNewCell mp:CellItem? OnCellEnd
// mp:CellItem  ::= mp:Slot | OnCellForm | OnCellGlitch
// mp:Slot      ::= OnValue | OnValueMid | OnRowMid | OnTableMid
{
  MORK_USED_2(ev, inPlace);
  // mParser_InMeta = morkBool_kTrue;
}
/*virtual*/ void morkBuilder::OnNewPort(morkEnv* ev, const morkPlace& inPlace)
// mp:Start     ::= OnNewPort mp:PortItem* OnPortEnd
// mp:PortItem  ::= mp:Content | mp:Group | OnPortGlitch
// mp:Content   ::= mp:PortRow | mp:Dict | mp:Table | mp:Row
{
  MORK_USED_2(ev, inPlace);
  // mParser_InPort = morkBool_kTrue;
  mBuilder_PortForm = 0;
  mBuilder_PortRowScope = (mork_scope)'r';
  mBuilder_PortAtomScope = (mork_scope)'v';
}
Esempio n. 10
0
mork_num
morkRowSpace::CutAllRows(morkEnv* ev, morkPool* ioPool)
{
  if ( this->IsRowSpaceClean() )
    this->MaybeDirtyStoreAndSpace();
  
  mork_num outSlots = mRowSpace_Rows.MapFill();

#ifdef MORK_ENABLE_ZONE_ARENAS
  MORK_USED_2(ev, ioPool);
  return 0;
#else /*MORK_ENABLE_ZONE_ARENAS*/
  morkZone* zone = &mSpace_Store->mStore_Zone;
  morkRow* r = 0; // old key row in the map
  mork_change* c = 0;

#ifdef MORK_ENABLE_PROBE_MAPS
  morkRowProbeMapIter i(ev, &mRowSpace_Rows);
#else /*MORK_ENABLE_PROBE_MAPS*/
  morkRowMapIter i(ev, &mRowSpace_Rows);
#endif /*MORK_ENABLE_PROBE_MAPS*/
  
  for ( c = i.FirstRow(ev, &r); c && ev->Good();
        c = i.NextRow(ev, &r) )
  {
    if ( r )
    {
      if ( r->IsRow() )
      {
        if ( r->mRow_Object )
        {
          morkRowObject::SlotWeakRowObject((morkRowObject*) 0, ev,
            &r->mRow_Object);
        }
        ioPool->ZapRow(ev, r, zone);
      }
      else
        r->NonRowTypeWarning(ev);
    }
    else
      ev->NilPointerError();
    
#ifdef MORK_ENABLE_PROBE_MAPS
    // cut nothing from the map
#else /*MORK_ENABLE_PROBE_MAPS*/
    i.CutHereRow(ev, /*key*/ (morkRow**) 0);
#endif /*MORK_ENABLE_PROBE_MAPS*/
  }
#endif /*MORK_ENABLE_ZONE_ARENAS*/
  
  
  return outSlots;
}