/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
/* Generated from: google/protobuf/timestamp.proto */

#ifndef PROTOBUF_C_google_2fprotobuf_2ftimestamp_2eproto__INCLUDED
#define PROTOBUF_C_google_2fprotobuf_2ftimestamp_2eproto__INCLUDED

#include <protobuf-c/protobuf-c.h>

PROTOBUF_C__BEGIN_DECLS

#if PROTOBUF_C_VERSION_NUMBER < 1000000
# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
#elif 1002001 < PROTOBUF_C_MIN_COMPILER_VERSION
# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
#endif


typedef struct _Google__Protobuf__Timestamp Google__Protobuf__Timestamp;


/* --- enums --- */


/* --- messages --- */

/*
 * A Timestamp represents a point in time independent of any time zone
 * or calendar, represented as seconds and fractions of seconds at
 * nanosecond resolution in UTC Epoch time. It is encoded using the
 * Proleptic Gregorian Calendar which extends the Gregorian calendar
 * backwards to year one. It is encoded assuming all minutes are 60
 * seconds long, i.e. leap seconds are "smeared" so that no leap second
 * table is needed for interpretation. Range is from
 * 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.
 * By restricting to that range, we ensure that we can convert to
 * and from  RFC 3339 date strings.
 * See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
 * Example 1: Compute Timestamp from POSIX `time()`.
 *     Timestamp timestamp;
 *     timestamp.set_seconds(time(NULL));
 *     timestamp.set_nanos(0);
 * Example 2: Compute Timestamp from POSIX `gettimeofday()`.
 *     struct timeval tv;
 *     gettimeofday(&tv, NULL);
 *     Timestamp timestamp;
 *     timestamp.set_seconds(tv.tv_sec);
 *     timestamp.set_nanos(tv.tv_usec * 1000);
 * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
 *     FILETIME ft;
 *     GetSystemTimeAsFileTime(&ft);
 *     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
 *     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
 *     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
 *     Timestamp timestamp;
 *     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
 *     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
 * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
 *     long millis = System.currentTimeMillis();
 *     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
 *         .setNanos((int) ((millis % 1000) * 1000000)).build();
 * Example 5: Compute Timestamp from current time in Python.
 *     now = time.time()
 *     seconds = int(now)
 *     nanos = int((now - seconds) * 10**9)
 *     timestamp = Timestamp(seconds=seconds, nanos=nanos)
 */
struct  _Google__Protobuf__Timestamp
{
  ProtobufCMessage base;
  /*
   * Represents seconds of UTC time since Unix epoch
   * 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to
   * 9999-12-31T23:59:59Z inclusive.
   */
  protobuf_c_boolean has_seconds;
  int64_t seconds;
  /*
   * Non-negative fractions of a second at nanosecond resolution. Negative
   * second values with fractions must still have non-negative nanos values
   * that count forward in time. Must be from 0 to 999,999,999
   * inclusive.
   */
  protobuf_c_boolean has_nanos;
  int32_t nanos;
};
#define GOOGLE__PROTOBUF__TIMESTAMP__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&google__protobuf__timestamp__descriptor) \
    , 0,0, 0,0 }


/* Google__Protobuf__Timestamp methods */
void   google__protobuf__timestamp__init
                     (Google__Protobuf__Timestamp         *message);
size_t google__protobuf__timestamp__get_packed_size
                     (const Google__Protobuf__Timestamp   *message);
size_t google__protobuf__timestamp__pack
                     (const Google__Protobuf__Timestamp   *message,
                      uint8_t             *out);
size_t google__protobuf__timestamp__pack_to_buffer
                     (const Google__Protobuf__Timestamp   *message,
                      ProtobufCBuffer     *buffer);
Google__Protobuf__Timestamp *
       google__protobuf__timestamp__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   google__protobuf__timestamp__free_unpacked
                     (Google__Protobuf__Timestamp *message,
                      ProtobufCAllocator *allocator);
/* --- per-message closures --- */

typedef void (*Google__Protobuf__Timestamp_Closure)
                 (const Google__Protobuf__Timestamp *message,
                  void *closure_data);

/* --- services --- */


/* --- descriptors --- */

extern const ProtobufCMessageDescriptor google__protobuf__timestamp__descriptor;

PROTOBUF_C__END_DECLS


#endif  /* PROTOBUF_C_google_2fprotobuf_2ftimestamp_2eproto__INCLUDED */
