1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
/*
FALCON - The Falcon Programming Language
FILE: vmmaps.cpp
Map items used in VM and related stuff.
-------------------------------------------------------------------
Author: Giancarlo Niccolai
Begin: sab nov 4 2006
-------------------------------------------------------------------
(C) Copyright 2004: the FALCON developers (see list in AUTHORS file)
See LICENSE file for licensing details.
*/
/** \file
Map items used in VM and related stuff.
*/
#include <falcon/vmmaps.h>
#include <falcon/livemodule.h>
#include <string.h>
namespace Falcon {
uint32 SymModuleTraits::memSize() const
{
return sizeof( SymModule );
}
void SymModuleTraits::init( void *itemZone ) const
{
// nothing
}
void SymModuleTraits::copy( void *targetZone, const void *sourceZone ) const
{
SymModule *target = (SymModule *) targetZone;
SymModule *source = (SymModule *) sourceZone;
memcpy( target, source, sizeof( SymModule ) );
}
int SymModuleTraits::compare( const void *firstz, const void *secondz ) const
{
// Never used as key
return 0;
}
void SymModuleTraits::destroy( void *item ) const
{
// do nothing
}
bool SymModuleTraits::owning() const
{
return false;
}
namespace traits
{
SymModuleTraits &t_symmodule() { static SymModuleTraits dt; return dt; }
}
SymModuleMap::SymModuleMap():
Map( &traits::t_stringptr(), &traits::t_symmodule() )
{}
SymModule::SymModule( LiveModule *mod, const Symbol *sym ):
m_item( &mod->globals()[ sym->itemId() ] ),
m_symbol( sym ),
m_lmod( mod ),
m_wkiid( -1 )
{}
//==================================================================
// Live module map
//
namespace traits
{
LiveModulePtrTraits &t_livemoduleptr() { static LiveModulePtrTraits dt; return dt; }
}
LiveModuleMap::LiveModuleMap():
Map( &traits::t_string(), &traits::t_livemoduleptr() )
{}
}
/* end of vmmaps.cpp */
|