xml/cxmllibrary/src/tinytree/src/TreeVector.c
author hgs
Wed, 23 Jun 2010 20:27:15 +0530
changeset 24 74f0b3eb154c
permissions -rw-r--r--
201024
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2000 - 2001 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include "cxml_internal.h"
hgs
parents:
diff changeset
    20
#include <xml/cxml/nw_tinytree_treevector.h>
hgs
parents:
diff changeset
    21
#include <xml/cxml/nw_tinytree.h>
hgs
parents:
diff changeset
    22
/* ------------------------------------------------------------------------- */
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
NW_TinyTree_TreeVector_t*
hgs
parents:
diff changeset
    25
NW_TinyTree_TreeVector_Construct (CXML_Vector_Metric_t elementSize,
hgs
parents:
diff changeset
    26
																	CXML_Vector_Metric_t segmentSize,
hgs
parents:
diff changeset
    27
																	NW_TinyTree_t *tree)
hgs
parents:
diff changeset
    28
{
hgs
parents:
diff changeset
    29
  NW_TinyTree_TreeVector_t* thisObj;
hgs
parents:
diff changeset
    30
  
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
  /* for convenience */
hgs
parents:
diff changeset
    33
  thisObj = (NW_TinyTree_TreeVector_t*) NW_Mem_Malloc (sizeof(NW_TinyTree_TreeVector_t));
hgs
parents:
diff changeset
    34
  if(thisObj == NULL)
hgs
parents:
diff changeset
    35
	{
hgs
parents:
diff changeset
    36
		return NULL;
hgs
parents:
diff changeset
    37
	}
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
	thisObj->vector = CXML_Vector_Construct(elementSize, segmentSize);
hgs
parents:
diff changeset
    40
  if (thisObj->vector == NULL)
hgs
parents:
diff changeset
    41
  {
hgs
parents:
diff changeset
    42
    NW_Mem_Free (thisObj);
hgs
parents:
diff changeset
    43
    return NULL;
hgs
parents:
diff changeset
    44
  }
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
  /* initialize the object */
hgs
parents:
diff changeset
    47
  thisObj->tree = tree;
hgs
parents:
diff changeset
    48
  thisObj->lastValid = -1;
hgs
parents:
diff changeset
    49
  /* successful completion */
hgs
parents:
diff changeset
    50
  return thisObj;
hgs
parents:
diff changeset
    51
}
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
/* Override the base class to account for the sentinel at the beginning of each
hgs
parents:
diff changeset
    54
 * segment
hgs
parents:
diff changeset
    55
 */
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
void
hgs
parents:
diff changeset
    58
NW_TinyTree_TreeVector_Destruct (NW_TinyTree_TreeVector_t* thisObj)
hgs
parents:
diff changeset
    59
{
hgs
parents:
diff changeset
    60
	if(thisObj->vector)
hgs
parents:
diff changeset
    61
	{
hgs
parents:
diff changeset
    62
		/* Adjest the sentinel in the vector */
hgs
parents:
diff changeset
    63
		CXML_Vector_AdjustSegment(thisObj->vector);
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
		/* Destroy the vector */
hgs
parents:
diff changeset
    66
		CXML_Vector_Destruct(thisObj->vector);
hgs
parents:
diff changeset
    67
	}
hgs
parents:
diff changeset
    68
  NW_Mem_Free (thisObj);
hgs
parents:
diff changeset
    69
}
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71