#include <iostream>
#include "stack.hpp" void foo(Stack *ret) { Stack stack; Stack_construct_default(&stack); Stack_push(&stack, 11); Stack_push(&stack, 22); Stack_push(&stack, 33); Stack_construct_swap(ret, &stack); Stack_destruct(&stack); } int main() { Stack stack; Stack_construct_default(&stack); Stack_push(&stack, 1.1); Stack_push(&stack, 2.2); Stack_push(&stack, 3.3); Stack_print(&stack, "stack:"); Stack stack2; Stack_construct_copy(&stack2, &stack); Stack stack3; Stack_construct_default(&stack3); // stack3 = stack2 { Stack tmp; Stack_construct_copy(&tmp, &stack2); Stack_assign(&stack3, &tmp); Stack_destruct(&tmp); } std::cout << "pop from stack 2: " << Stack_pop(&stack2) << std::endl; Stack_print(&stack2, "stack2:"); Stack_print(&stack3, "stack3:"); // foo(); { Stack tmp; Stack_construct_default(&tmp); foo(&tmp); Stack_destruct(&tmp); } Stack stack4; Stack_construct_default(&stack4); // stack4 = foo(); { Stack tmp; Stack_construct_default(&tmp); foo(&tmp); Stack_assign(&stack4, &tmp); Stack_destruct(&tmp); } Stack_print(&stack4, "stack4:"); // Stack stack5 = foo(); Stack stack5; Stack_construct_default(&stack5); { foo(&stack5); } Stack_print(&stack5, "stack5:"); Stack_destruct(&stack4); Stack_destruct(&stack3); Stack_destruct(&stack2); Stack_destruct(&stack); } |