/* { dg-options "-fgnu-runtime" } */
/* { dg-do run } */
/* APPLE LOCAL ARM not available on arm-darwin targets */
/* { dg-skip-if "" { arm*-*-darwin* } { "*" } { "" } } */
#include <objc/typedstream.h>
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
  FILE *f; TypedStream *ts;
  struct T { int a, b; } x = { 1, 2 };
  f = fopen ("foo", "w"); ts = objc_open_typed_stream (f, OBJC_WRITEONLY);
  objc_write_type (ts, @encode(struct T), &x);
  objc_close_typed_stream (ts); fclose (f);
  f = fopen ("foo", "r"); ts = objc_open_typed_stream (f, OBJC_READONLY);
  struct T y;
  objc_read_type (ts, @encode(struct T), &y);
  if (y.a != 1)
   abort ();
  if (y.b != 2)
   abort ();
  objc_close_typed_stream (ts); fclose (f);
  remove ("foo");
  return 0;
}

