示例#1
0
static void FreeScope (TRI_aql_scope_t* const scope) {
  size_t i, n;

  // free variables lookup hash
  n = scope->_variables._nrAlloc;
  for (i = 0; i < n; ++i) {
    TRI_aql_variable_t* variable = scope->_variables._table[i];

    if (variable) {
      TRI_FreeVariableAql(variable);
    }
  }

  TRI_DestroyAssociativePointer(&scope->_variables);

  if (scope->_ranges) {
    // free ranges if set
    TRI_FreeAccessesAql(scope->_ranges);
  }

  for (i = 0; i < scope->_sorts._length; ++i) {
    char* criterion = (char*) TRI_AtVectorPointer(&scope->_sorts, i);

    TRI_Free(TRI_UNKNOWN_MEM_ZONE, criterion);
  }

  TRI_DestroyVectorPointer(&scope->_sorts);

  TRI_Free(TRI_UNKNOWN_MEM_ZONE, scope);
}
示例#2
0
static void FreeScope (TRI_aql_scope_t* const scope) {
  size_t i, n;

  // free variables lookup hash
  n = scope->_variables._nrAlloc;
  for (i = 0; i < n; ++i) {
    TRI_aql_variable_t* variable = scope->_variables._table[i];

    if (variable) {
      TRI_FreeVariableAql(variable);
    }
  }
  
  TRI_DestroyAssociativePointer(&scope->_variables);
  
  if (scope->_ranges) {
    // free ranges if set
    TRI_FreeAccessesAql(scope->_ranges);
  }

  TRI_Free(TRI_UNKNOWN_MEM_ZONE, scope);
}
示例#3
0
TRI_aql_variable_t* TRI_CreateVariableAql (const char* const name,
                                           TRI_aql_node_t* const definingNode) { 
  TRI_aql_variable_t* variable;

  variable = (TRI_aql_variable_t*) TRI_Allocate(TRI_UNKNOWN_MEM_ZONE, sizeof(TRI_aql_variable_t), false);

  if (variable == NULL) {
    return NULL;
  }

  variable->_name = TRI_DuplicateString(name);

  if (variable->_name == NULL) {
    TRI_FreeVariableAql(variable);
    return NULL;
  }

  variable->_definingNode = definingNode;

  assert(definingNode);

  return variable;
}
示例#4
0
TRI_aql_variable_t* TRI_CreateVariableAql (char const* name,
                                           TRI_aql_node_t* definingNode) {
  TRI_aql_variable_t* variable;

  variable = (TRI_aql_variable_t*) TRI_Allocate(TRI_UNKNOWN_MEM_ZONE, sizeof(TRI_aql_variable_t), false);

  if (variable == nullptr) {
    return nullptr;
  }

  variable->_name = TRI_DuplicateStringZ(TRI_UNKNOWN_MEM_ZONE, name);

  if (variable->_name == nullptr) {
    TRI_FreeVariableAql(variable);
    return nullptr;
  }

  variable->_definingNode = definingNode;
  variable->_isUpdated = false;

  TRI_ASSERT(definingNode);

  return variable;
}