Esempio n. 1
0
static void
check_flag (MuFlags flag, FlagData *fdata)
{
	SCM flag_scm;

	if (!(fdata->flags & flag))
		return;

	switch (flag) {
	case MU_FLAG_NEW:        flag_scm = SYMB_FLAG_NEW; break;
	case MU_FLAG_PASSED:     flag_scm = SYMB_FLAG_PASSED; break;
	case MU_FLAG_REPLIED:    flag_scm = SYMB_FLAG_REPLIED; break;
	case MU_FLAG_SEEN:       flag_scm = SYMB_FLAG_SEEN; break;
	case MU_FLAG_TRASHED:    flag_scm = SYMB_FLAG_TRASHED; break;
	case MU_FLAG_SIGNED:     flag_scm = SYMB_FLAG_SIGNED; break;
	case MU_FLAG_DRAFT:      flag_scm = SYMB_FLAG_DRAFT; break;
	case MU_FLAG_FLAGGED:    flag_scm = SYMB_FLAG_FLAGGED; break;
	case MU_FLAG_ENCRYPTED:  flag_scm = SYMB_FLAG_ENCRYPTED; break;
	case MU_FLAG_HAS_ATTACH: flag_scm = SYMB_FLAG_HAS_ATTACH; break;
	case MU_FLAG_UNREAD:     flag_scm = SYMB_FLAG_UNREAD; break;
	default: flag_scm = SCM_UNDEFINED;
	}

	fdata->lst = scm_append_x
		(scm_list_2(fdata->lst,
			    scm_list_1 (flag_scm)));
}
Esempio n. 2
0
static int
pyscm_PySCM_setattr(pyscm_PySCMObject *self, char *name, PyObject *v)
{
  /* Set attribute 'name' to value 'v'. v==NULL means delete */
  if (pyguile_verbosity_test(PYGUILE_VERBOSE_PYSCM)) {
    scm_simple_format(scm_current_output_port(),scm_makfrom0str("# pyscm_PySCM_setattr: trying to set attribute=~S from pobj=~S to value ~S\n"),scm_list_3(scm_makfrom0str(name),verbosity_repr((PyObject *)self),verbosity_repr(v)));
  }
  SCM sobj_keyword;
  SCM sattr_vector = retrieve_sattr_vector(self,name,&sobj_keyword);
  if (SCM_UNBNDP(sattr_vector)) {
    // Attribute error exception was raised by retrieve_sattr_vector().
    return(-1);
  }

  SCM ssetattr_func = GET_H_SETATTR_FUNC(sattr_vector);
  if (SCM_EQ_P(SCM_EOL,ssetattr_func)) {
    PyErr_SetString(PyExc_AttributeError, name);
    return(-1);
  }

  if (NULL != v) {
    SCM sval = p2g_apply(v,
			 GET_H_P2G_SETATTR_TEMPLATE(sattr_vector));
    scm_append_x(scm_list_2(sobj_keyword,sval));
  }

  SCM sresult = scm_apply(ssetattr_func,sobj_keyword,SCM_EOL);
  return(SCM_EQ_P(SCM_BOOL_F,sresult) ? (-1) : 0);
}
Esempio n. 3
0
static SCM
msg_string_list_field (MuMsg *msg, MuMsgFieldId mfid)
{
	SCM scmlst;
	const GSList *lst;

	lst = mu_msg_get_field_string_list (msg, mfid);

	for (scmlst = SCM_EOL; lst;
	     lst = g_slist_next(lst)) {
		SCM item;
		item = scm_list_1
			(mu_guile_scm_from_str((const char*)lst->data));
		scmlst = scm_append_x (scm_list_2(scmlst, item));
	}

	return scmlst;
}