if ( attrUpdater==null)
{
ClassUpdater u=(ClassUpdater)m_class_stack.get( m_class_stack.size()-1);
if ( u.m_updater==null)
{
u.m_updater=new DBMethod.MethodUpdater( m_db, u.m_class.getMethod(ATTRIBUTE_INITIALIZER, void_type, getSignatureKey( new Signature())));
}
attrUpdater=u.m_updater;
}
DBMethod called=getCurrentClass(custom.getContainingType()).getMethod(".ctor", DBType.get(m_db, custom.getSignature().getReturnType()), getSignatureKey( custom.getSignature()));
if ( called.updateArguments(m_db, custom.getSignature()))
ObjectDB.makeDirty( called);
attrUpdater.addCall( called, m_current_source_file, m_current_line);
for (String i : custom.getStringArguments())
{
attrUpdater.addStringReference( DBString.get( m_db, i), m_current_source_file, m_current_line);
}
for ( Iterator<CustomAttributeSetting.NamedArgument> i=custom.getNamedArguments().iterator(); i.hasNext();)
{
CustomAttributeSetting.NamedArgument named=i.next();
if ( named.isProperty())
{
Signature s=new Signature();
s.addArgument( new ReadArg(named.getType()));
s.setReturnType( void_read_type);
DBMethod propertySetter=getCurrentClass(custom.getContainingType()).getMethod("set_"+named.getName(), void_type, getSignatureKey( s));
if ( propertySetter.updateArguments(m_db, s))
ObjectDB.makeDirty( propertySetter);
attrUpdater.addCall(propertySetter, m_current_source_file, m_current_line);
}