示例#1
0
int opcode_next(int program_counter, char *buf)
{
	int pcounter = 0;
	int local_var = 0;
	int loop_status = 0;

	/* Add End Of Loop */
	add_end(program_counter);

	/* Find For Entry */
	loop_status = find_entry(program_counter);

	/* loop_status != INVALID_LOOP means Legal Loop */
	if (loop_status != INVALID_LOOP) {
		/* Update Variable */
		local_var = find_variable(buf) + 1;
		update_variable(buf, local_var);
	
		/* Change Program Flow */
		pcounter = loop_status - 1;
	} else {
		pcounter = program_counter + 1;
	}
	
	return pcounter;	
}
示例#2
0
文件: env.cpp 项目: mariuz/haiku
int
setenv(const char *name, const char *value, int overwrite)
{
	status_t status;

	if (name == NULL || name[0] == '\0' || strchr(name, '=') != NULL) {
		errno = B_BAD_VALUE;
		return -1;
	}

	lock_variables();
	status = update_variable(name, strlen(name), value, overwrite);
	unlock_variables();

	RETURN_AND_SET_ERRNO(status);
}
示例#3
0
void madara::knowledge::containers::FlexMap::set_quality(
    uint32_t quality, const KnowledgeReferenceSettings& settings)
{
  if (context_)
  {
    ContextGuard context_guard(*context_);
    MADARA_GUARD_TYPE guard(mutex_);

    if (!variable_.is_valid())
    {
      update_variable();
    }

    context_->set_quality(name_, quality, true, settings);
  }
}
示例#4
0
文件: env.cpp 项目: mariuz/haiku
int
putenv(const char *string)
{
	char *value = strchr(string, '=');
	status_t status;

	if (value == NULL) {
		errno = B_BAD_VALUE;
		return -1;
	}

	lock_variables();
	status = update_variable(string, value - string, value + 1, true);
	unlock_variables();

	RETURN_AND_SET_ERRNO(status);
}
示例#5
0
/* Let Function */
int opcode_let(char *buf)
{
	int status = 0;
	int res = 0;
	char *name;
	char *value;
	
	if(strstr(buf, "=") != NULL) {
		name = strtok (buf, "=");
		value = strtok (NULL, " ");
		str_addnewline(value);
		res = eval_exp(value);
		update_variable(name, res);
	} else
		status = 1;
	
	return status;
}
示例#6
0
int madara::knowledge::containers::FlexMap::set(double value)
{
  int result = -1;

  if (context_ && name_ != "")
  {
    ContextGuard context_guard(*context_);
    MADARA_GUARD_TYPE guard(mutex_);

    if (!variable_.is_valid())
    {
      update_variable();
    }

    result = context_->set(variable_, value, settings_);
  }

  return result;
}
示例#7
0
int madara::knowledge::containers::FlexMap::read_file(
    const std::string& filename)
{
  int result = -1;

  if (context_ && name_ != "")
  {
    ContextGuard context_guard(*context_);
    MADARA_GUARD_TYPE guard(mutex_);

    if (!variable_.is_valid())
    {
      update_variable();
    }

    result = context_->read_file(variable_, filename, settings_);
  }
  return result;
}
示例#8
0
int madara::knowledge::containers::FlexMap::set_index(
    size_t index, double value, const KnowledgeUpdateSettings& settings)
{
  int result = -1;

  if (context_ && name_ != "")
  {
    ContextGuard context_guard(*context_);
    MADARA_GUARD_TYPE guard(mutex_);

    if (!variable_.is_valid())
    {
      update_variable();
    }

    result = context_->set_index(variable_, index, value, settings);
  }

  return result;
}
示例#9
0
int madara::knowledge::containers::FlexMap::set(
    const std::vector<KnowledgeRecord::Integer>& value,
    const KnowledgeUpdateSettings& settings)
{
  int result = -1;

  if (context_ && name_ != "")
  {
    ContextGuard context_guard(*context_);
    MADARA_GUARD_TYPE guard(mutex_);

    if (!variable_.is_valid())
    {
      update_variable();
    }

    result = context_->set(variable_, value, settings);
  }

  return result;
}
示例#10
0
void madara::knowledge::containers::FlexMap::set_name(
    const std::string& var_name, Variables& knowledge)
{
  if (context_ != knowledge.get_context() || name_ != var_name)
  {
    context_ = knowledge.get_context();

    ContextGuard context_guard(*context_);
    MADARA_GUARD_TYPE guard(mutex_);

    name_ = var_name;

    if (context_->exists(var_name, settings_))
    {
      update_variable();
    }
    else
    {
      // reset variable reference
      variable_ = VariableReference();
    }
  }
}