Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
52e90c55
Commit
52e90c55
authored
Oct 21, 1998
by
Mark Mitchell
Committed by
Mark Mitchell
Oct 21, 1998
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* splay-tree.h: New file.
From-SVN: r23211
parent
ed87f9c8
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
120 additions
and
0 deletions
+120
-0
include/ChangeLog
+4
-0
include/splay-tree.h
+116
-0
No files found.
include/ChangeLog
View file @
52e90c55
1998-10-21 Mark Mitchell <mark@markmitchell.com>
* splay-tree.h: New file.
Fri Oct 9 00:02:03 1998 Jeffrey A Law (law@cygnus.com)
* Merge devo and egcs include directories.
...
...
include/splay-tree.h
0 → 100644
View file @
52e90c55
/* A splay-tree datatype.
Copyright (C) 1998 Free Software Foundation, Inc.
Contributed by Mark Mitchell (mark@markmitchell.com).
This file is part of GNU CC.
GNU CC is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU CC is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to the Free
Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
For an easily readable description of splay-trees, see:
Lewis, Harry R. and Denenberg, Larry. Data Structures and Their
Algorithms. Harper-Collins, Inc. 1991.
The major feature of splay trees is that all basic tree operations
are amortized O(log n) time for a tree with n nodes. */
#ifndef _SPLAY_TREE_H
#define _SPLAY_TREE_H
#ifdef __cplusplus
extern
"C"
{
#endif
/* __cplusplus */
#ifdef IN_GCC
#include "gansidecl.h"
#define PARAMS(ARGS) PROTO(ARGS)
#else
/* ! IN_GCC */
#include <ansidecl.h>
#endif
/* IN_GCC */
/* Use typedefs for the key and data types to facilitate changing
these types, if necessary. These types should be sufficiently wide
that any pointer or scalar can be cast to these types, and then
cast back, without loss of precision. */
typedef
unsigned
long
int
splay_tree_key
;
typedef
unsigned
long
int
splay_tree_value
;
/* Forward declaration for a node in the tree. */
typedef
struct
splay_tree_node
*
splay_tree_node
;
/* The type of a function which compares two splay-tree keys. The
function should return values as for qsort. */
typedef
int
(
*
splay_tree_compare_fn
)(
splay_tree_key
,
splay_tree_key
);
/* The type of a function used to deallocate any resources associated
with the key. */
typedef
void
(
*
splay_tree_delete_key_fn
)(
splay_tree_key
);
/* The type of a function used to deallocate any resources associated
with the value. */
typedef
void
(
*
splay_tree_delete_value_fn
)(
splay_tree_value
);
/* The type of a function used to iterate over the tree. */
typedef
int
(
*
splay_tree_foreach_fn
)(
splay_tree_node
,
void
*
);
/* The nodes in the splay tree. */
struct
splay_tree_node
{
/* The key. */
splay_tree_key
key
;
/* The value. */
splay_tree_value
value
;
/* The left and right children, respectively. */
splay_tree_node
left
;
splay_tree_node
right
;
};
/* The splay tree itself. */
typedef
struct
splay_tree
{
/* The root of the tree. */
splay_tree_node
root
;
/* The comparision function. */
splay_tree_compare_fn
comp
;
/* The deallocate-key function. NULL if no cleanup is necessary. */
splay_tree_delete_key_fn
delete_key
;
/* The deallocate-value function. NULL if no cleanup is necessary. */
splay_tree_delete_value_fn
delete_value
;
}
*
splay_tree
;
extern
splay_tree
splay_tree_new
PARAMS
((
splay_tree_compare_fn
,
splay_tree_delete_key_fn
,
splay_tree_delete_value_fn
));
extern
void
splay_tree_delete
PARAMS
((
splay_tree
));
extern
void
splay_tree_insert
PARAMS
((
splay_tree
,
splay_tree_key
,
splay_tree_value
));
extern
splay_tree_node
splay_tree_lookup
PARAMS
((
splay_tree
,
splay_tree_key
));
extern
int
splay_tree_foreach
PARAMS
((
splay_tree
,
splay_tree_foreach_fn
,
void
*
));
#ifdef __cplusplus
}
#endif
/* __cplusplus */
#endif
/* _SPLAY_TREE_H */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment