stack.h
1 /* 2 * Bean Java VM 3 * Copyright (C) 2005-2015 Christian Lins <christian@lins.me> 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 #ifndef _STACK_H_ 19 #define _STACK_H_ 20 21 #include <stdint.h> 22 #include <types.h> 23 24 #include <method.h> 25 26 typedef struct StackElement 27 { 28 void* data; /* data structure */ 29 struct StackElement* next; /* ptr to next element */ 30 } StackElement; 31 32 typedef struct Stack 33 { 34 unsigned int limit; /* maximum number of elements */ 35 unsigned int size; /* current number of elements */ 36 StackElement* top; 37 } Stack; 38 39 40 Stack* Stack_new(unsigned int limit); 41 void Stack_destroy(Stack* stack); 42 int Stack_pop(Stack* stack, void** data); 43 int Stack_push(Stack* stack, void* data); 44 45 #endif