示例#1
0
文件: is_sequence.c 项目: mdugot/42sh
int			is_in(char *str, char *c, char *syntax)
{
	int		i;
	int		inside;
	char	begin;
	int		r;

	i = 0;
	inside = 0;
	begin = 0;
	while (str[i])
	{
		r = update_inside(&begin, str, &i, syntax);
		if (r)
			inside += r;
		else if (inside && ft_strchr(c, str[i]))
			return (1);
		i++;
	}
	return (0);
}
示例#2
0
bool 
AirspaceWarningManager::update(const AIRCRAFT_STATE& state,
                               const bool circling)
{
  bool changed = false;

  // save old state
  for (AirspaceWarningList::iterator it = m_warnings.begin();
       it != m_warnings.end(); ++it)
    it->save_state();

  // check from strongest to weakest alerts 
  update_inside(state);
  update_glide(state);
  if (circling)
    update_filter(state);
  update_task(state);

  // action changes
  for (AirspaceWarningList::iterator it = m_warnings.begin();
       it != m_warnings.end(); ) {
    if (it->warning_live(config.AcknowledgementTime)) {
      if (it->changed_state())
        changed = true;

      it++;
    } else {
      if (!it->trivial()) {
        //changed = true; // was downgraded to eliminate
      }
      it = m_warnings.erase(it);
    }
  }

  // sort by importance, most severe top
  m_warnings.sort();

  return changed;
}
示例#3
0
文件: is_sequence.c 项目: mdugot/42sh
int			is_closed(char *str, char *syntax)
{
	int		i;
	int		inside;
	char	begin;

	inside = 0;
	begin = 0;
	i = 0;
	if (str == NULL)
		return (1);
	while (str[i])
	{
		inside += update_inside(&begin, str, &i, syntax);
		i += 1;
	}
	if (i > 0 && str[i - 1] == '\\' && !is_escaped(str, &str[i - 1]))
	{
		str[i - 1] = 0;
		return (0);
	}
	return (inside ? 0 : 1);
}