File ‹partial_open_nested.c›

/*
 * Copyright (c) 2023 Apple Inc. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

struct x {
    unsigned long y;
};

struct A {
    int f1;
    int f2;
    struct x f3;
};

struct B {
    struct A a;
    int f4;
    int f5;
    int f6;
    unsigned f7;
};

int process_f(int *f) {
    return (*f) + 2;
}

int process_g(unsigned *f) {
    return (int) ((*f) + 2);
}

int process_A(struct A *a) {
    return a->f1 + a->f2;
}

int process_B(struct B *b) {
    return process_A(&(b->a)) + process_f(&(b->f4)) + process_f(&(b->f6)) + process_g(&(b->f7));
}