diff --git a/pom.xml b/pom.xml
index bb62478e..f0204a4a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -461,6 +461,7 @@ Import-Package: \
-Dplatform.compiler=${javacpp.platform.compiler}
org.bytedeco.javacpp.Pointer
org.bytedeco.javacpp.presets.javacpp
+ org.bytedeco.javacpp.chrono.*
-mod
${project.build.directory}/generated-sources/java9/module-info.java
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/HighResolutionClock.java b/src/main/java/org/bytedeco/javacpp/chrono/HighResolutionClock.java
new file mode 100644
index 00000000..4e8c021c
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/HighResolutionClock.java
@@ -0,0 +1,13 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.ByVal;
+import org.bytedeco.javacpp.annotation.MemberGetter;
+import org.bytedeco.javacpp.annotation.Name;
+import org.bytedeco.javacpp.annotation.Properties;
+
+@Name("std::chrono::high_resolution_clock") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class HighResolutionClock extends Pointer {
+ static public native @ByVal SystemTime now();
+ static public native @MemberGetter boolean is_steady();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/HighResolutionDuration.java b/src/main/java/org/bytedeco/javacpp/chrono/HighResolutionDuration.java
new file mode 100644
index 00000000..d880dbd9
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/HighResolutionDuration.java
@@ -0,0 +1,27 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::high_resolution_clock::duration") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class HighResolutionDuration extends Pointer {
+ public HighResolutionDuration() { allocate(); }
+ private native void allocate();
+ public HighResolutionDuration(long r) { allocate(r); }
+ private native void allocate(long r);
+
+ public native @Name("operator=") @ByRef HighResolutionDuration put(@Const @ByRef HighResolutionDuration other);
+ public native @Name("operator-") @ByVal HighResolutionDuration negate();
+ public native @Name("operator++") @ByRef HighResolutionDuration increment();
+ public native @Name("operator--") @ByRef HighResolutionDuration decrement();
+ public native @Name("operator+=") @ByRef HighResolutionDuration addPut(@Const @ByRef HighResolutionDuration d);
+ public native @Name("operator-=") @ByRef HighResolutionDuration subtractPut(@Const @ByRef HighResolutionDuration d);
+ public native @Name("operator*=") @ByRef HighResolutionDuration multiplyPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef HighResolutionDuration modPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef HighResolutionDuration modPut(@Const @ByRef HighResolutionDuration rhs);
+
+ public native long count();
+ static public native @ByVal @Name("zero") HighResolutionDuration zero_();
+ static public native @ByVal HighResolutionDuration min();
+ static public native @ByVal HighResolutionDuration max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/HighResolutionTime.java b/src/main/java/org/bytedeco/javacpp/chrono/HighResolutionTime.java
new file mode 100644
index 00000000..9dcdc79a
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/HighResolutionTime.java
@@ -0,0 +1,20 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::time_point") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class HighResolutionTime extends Pointer {
+ public HighResolutionTime() { allocate(); }
+ private native void allocate();
+
+ public HighResolutionTime(SystemDuration d) { allocate(d); }
+ private native void allocate(@Const @ByRef SystemDuration d);
+
+ public native @ByVal HighResolutionTime time_since_epoch();
+
+ public native @Name("operator +=") @ByRef HighResolutionTime addPut(@Const @ByRef HighResolutionDuration d);
+ public native @Name("operator -=") @ByRef HighResolutionTime subtractPut(@Const @ByRef HighResolutionDuration d);
+ static public native @ByVal HighResolutionTime min();
+ static public native @ByVal HighResolutionTime max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/Hours.java b/src/main/java/org/bytedeco/javacpp/chrono/Hours.java
new file mode 100644
index 00000000..f8b35bda
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/Hours.java
@@ -0,0 +1,27 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::hours") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class Hours extends Pointer {
+ public Hours() { allocate(); }
+ private native void allocate();
+ public Hours(long r) { allocate(r); }
+ private native void allocate(long r);
+
+ public native @Name("operator=") @ByRef Hours put(@Const @ByRef Hours other);
+ public native @Name("operator-") @ByVal Hours negate();
+ public native @Name("operator++") @ByRef Hours increment();
+ public native @Name("operator--") @ByRef Hours decrement();
+ public native @Name("operator+=") @ByRef Hours addPut(@Const @ByRef Hours d);
+ public native @Name("operator-=") @ByRef Hours subtractPut(@Const @ByRef Hours d);
+ public native @Name("operator*=") @ByRef Hours multiplyPut(@Const @ByRef int rhs);
+ public native @Name("operator%=") @ByRef Hours modPut(@Const @ByRef int rhs);
+ public native @Name("operator%=") @ByRef Hours modPut(@Const @ByRef Hours rhs);
+
+ public native int count();
+ static public native @ByVal @Name("zero") Hours zero_();
+ static public native @ByVal Hours min();
+ static public native @ByVal Hours max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/Microseconds.java b/src/main/java/org/bytedeco/javacpp/chrono/Microseconds.java
new file mode 100644
index 00000000..7cf3bb2e
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/Microseconds.java
@@ -0,0 +1,36 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::microseconds") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class Microseconds extends Pointer {
+ public Microseconds() { allocate(); }
+ private native void allocate();
+ public Microseconds(long r) { allocate(r); }
+ private native void allocate(long r);
+
+ public Microseconds(Milliseconds d) { allocate(d); }
+ private native void allocate(@Const @ByRef Milliseconds d);
+ public Microseconds(Seconds d) { allocate(d); }
+ private native void allocate(@Const @ByRef Seconds d);
+ public Microseconds(Minutes d) { allocate(d); }
+ private native void allocate(@Const @ByRef Minutes d);
+ public Microseconds(Hours d) { allocate(d); }
+ private native void allocate(@Const @ByRef Hours d);
+
+ public native @Name("operator=") @ByRef Microseconds put(@Const @ByRef Microseconds other);
+ public native @Name("operator-") @ByVal Microseconds negate();
+ public native @Name("operator++") @ByRef Microseconds increment();
+ public native @Name("operator--") @ByRef Microseconds decrement();
+ public native @Name("operator+=") @ByRef Microseconds addPut(@Const @ByRef Microseconds d);
+ public native @Name("operator-=") @ByRef Microseconds subtractPut(@Const @ByRef Microseconds d);
+ public native @Name("operator*=") @ByRef Microseconds multiplyPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef Microseconds modPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef Microseconds modPut(@Const @ByRef Microseconds rhs);
+
+ public native long count();
+ static public native @ByVal @Name("zero") Microseconds zero_();
+ static public native @ByVal Microseconds min();
+ static public native @ByVal Microseconds max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/Milliseconds.java b/src/main/java/org/bytedeco/javacpp/chrono/Milliseconds.java
new file mode 100644
index 00000000..31ddc372
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/Milliseconds.java
@@ -0,0 +1,33 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::milliseconds") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class Milliseconds extends Pointer {
+ public Milliseconds() { allocate(); }
+ private native void allocate();
+ public Milliseconds(long r) { allocate(r); }
+ private native void allocate(long r);
+ public Milliseconds(Seconds d) { allocate(d); }
+ private native void allocate(@Const @ByRef Seconds d);
+ public Milliseconds(Minutes d) { allocate(d); }
+ private native void allocate(@Const @ByRef Minutes d);
+ public Milliseconds(Hours d) { allocate(d); }
+ private native void allocate(@Const @ByRef Hours d);
+
+ public native @Name("operator=") @ByRef Milliseconds put(@Const @ByRef Milliseconds other);
+ public native @Name("operator-") @ByVal Milliseconds negate();
+ public native @Name("operator++") @ByRef Milliseconds increment();
+ public native @Name("operator--") @ByRef Milliseconds decrement();
+ public native @Name("operator+=") @ByRef Milliseconds addPut(@Const @ByRef Milliseconds d);
+ public native @Name("operator-=") @ByRef Milliseconds subtractPut(@Const @ByRef Milliseconds d);
+ public native @Name("operator*=") @ByRef Milliseconds multiplyPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef Milliseconds modPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef Milliseconds modPut(@Const @ByRef Milliseconds rhs);
+
+ public native long count();
+ static public native @ByVal @Name("zero") Milliseconds zero_();
+ static public native @ByVal Milliseconds min();
+ static public native @ByVal Milliseconds max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/Minutes.java b/src/main/java/org/bytedeco/javacpp/chrono/Minutes.java
new file mode 100644
index 00000000..3ec9caba
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/Minutes.java
@@ -0,0 +1,29 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::minutes") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class Minutes extends Pointer {
+ public Minutes() { allocate(); }
+ private native void allocate();
+ public Minutes(long r) { allocate(r); }
+ private native void allocate(long r);
+ public Minutes(Hours d) { allocate(d); }
+ private native void allocate(@Const @ByRef Hours d);
+
+ public native @Name("operator=") @ByRef Minutes put(@Const @ByRef Minutes other);
+ public native @Name("operator-") @ByVal Minutes negate();
+ public native @Name("operator++") @ByRef Minutes increment();
+ public native @Name("operator--") @ByRef Minutes decrement();
+ public native @Name("operator+=") @ByRef Minutes addPut(@Const @ByRef Minutes d);
+ public native @Name("operator-=") @ByRef Minutes subtractPut(@Const @ByRef Minutes d);
+ public native @Name("operator*=") @ByRef Minutes multiplyPut(@Const @ByRef int rhs);
+ public native @Name("operator%=") @ByRef Minutes modPut(@Const @ByRef int rhs);
+ public native @Name("operator%=") @ByRef Minutes modPut(@Const @ByRef Minutes rhs);
+
+ public native int count();
+ static public native @ByVal @Name("zero") Minutes zero_();
+ static public native @ByVal Minutes min();
+ static public native @ByVal Minutes max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/Nanoseconds.java b/src/main/java/org/bytedeco/javacpp/chrono/Nanoseconds.java
new file mode 100644
index 00000000..534cbd0e
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/Nanoseconds.java
@@ -0,0 +1,37 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::nanoseconds") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class Nanoseconds extends Pointer {
+ public Nanoseconds() { allocate(); }
+ private native void allocate();
+ public Nanoseconds(long r) { allocate(r); }
+ private native void allocate(long r);
+ public Nanoseconds(Microseconds d) { allocate(d); }
+ private native void allocate(@Const @ByRef Microseconds d);
+ public Nanoseconds(Milliseconds d) { allocate(d); }
+ private native void allocate(@Const @ByRef Milliseconds d);
+ public Nanoseconds(Seconds d) { allocate(d); }
+ private native void allocate(@Const @ByRef Seconds d);
+ public Nanoseconds(Minutes d) { allocate(d); }
+ private native void allocate(@Const @ByRef Minutes d);
+ public Nanoseconds(Hours d) { allocate(d); }
+ private native void allocate(@Const @ByRef Hours d);
+
+ public native @Name("operator=") @ByRef Nanoseconds put(@Const @ByRef Nanoseconds other);
+ public native @Name("operator-") @ByVal Nanoseconds negate();
+ public native @Name("operator++") @ByRef Nanoseconds increment();
+ public native @Name("operator--") @ByRef Nanoseconds decrement();
+ public native @Name("operator+=") @ByRef Nanoseconds addPut(@Const @ByRef Nanoseconds d);
+ public native @Name("operator-=") @ByRef Nanoseconds subtractPut(@Const @ByRef Nanoseconds d);
+ public native @Name("operator*=") @ByRef Nanoseconds multiplyPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef Nanoseconds modPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef Nanoseconds modPut(@Const @ByRef Nanoseconds rhs);
+
+ public native long count();
+ static public native @ByVal @Name("zero") Nanoseconds zero_();
+ static public native @ByVal Nanoseconds min();
+ static public native @ByVal Nanoseconds max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/Seconds.java b/src/main/java/org/bytedeco/javacpp/chrono/Seconds.java
new file mode 100644
index 00000000..8c5666cd
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/Seconds.java
@@ -0,0 +1,31 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::seconds") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class Seconds extends Pointer {
+ public Seconds() { allocate(); }
+ private native void allocate();
+ public Seconds(long r) { allocate(r); }
+ private native void allocate(long r);
+ public Seconds(Minutes d) { allocate(d); }
+ private native void allocate(@Const @ByRef Minutes d);
+ public Seconds(Hours d) { allocate(d); }
+ private native void allocate(@Const @ByRef Hours d);
+
+ public native @Name("operator=") @ByRef Seconds put(@Const @ByRef Seconds other);
+ public native @Name("operator-") @ByVal Seconds negate();
+ public native @Name("operator++") @ByRef Seconds increment();
+ public native @Name("operator--") @ByRef Seconds decrement();
+ public native @Name("operator+=") @ByRef Seconds addPut(@Const @ByRef Seconds d);
+ public native @Name("operator-=") @ByRef Seconds subtractPut(@Const @ByRef Seconds d);
+ public native @Name("operator*=") @ByRef Seconds multiplyPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef Seconds modPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef Seconds modPut(@Const @ByRef Seconds rhs);
+
+ public native long count();
+ static public native @ByVal @Name("zero") Seconds zero_();
+ static public native @ByVal Seconds min();
+ static public native @ByVal Seconds max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/SecondsDouble.java b/src/main/java/org/bytedeco/javacpp/chrono/SecondsDouble.java
new file mode 100644
index 00000000..912d2575
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/SecondsDouble.java
@@ -0,0 +1,29 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::duration") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class SecondsDouble extends Pointer {
+ public SecondsDouble() { allocate(); }
+ private native void allocate();
+ public SecondsDouble(double r) { allocate(r); }
+ private native void allocate(double r);
+ public SecondsDouble(Nanoseconds d) { allocate(d); }
+ private native void allocate(@Const @ByRef Nanoseconds d);
+ public SecondsDouble(Seconds d) { allocate(d); }
+ private native void allocate(@Const @ByRef Seconds d);
+
+ public native @Name("operator=") @ByRef SecondsDouble put(@Const @ByRef SecondsDouble other);
+ public native @Name("operator-") @ByVal SecondsDouble negate();
+ public native @Name("operator++") @ByRef SecondsDouble increment();
+ public native @Name("operator--") @ByRef SecondsDouble decrement();
+ public native @Name("operator+=") @ByRef SecondsDouble addPut(@Const @ByRef SecondsDouble d);
+ public native @Name("operator-=") @ByRef SecondsDouble subtractPut(@Const @ByRef SecondsDouble d);
+ public native @Name("operator*=") @ByRef SecondsDouble multiplyPut(@Const @ByRef double rhs);
+
+ public native double count();
+ static public native @ByVal @Name("zero") SecondsDouble zero_();
+ static public native @ByVal SecondsDouble min();
+ static public native @ByVal SecondsDouble max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/SecondsFloat.java b/src/main/java/org/bytedeco/javacpp/chrono/SecondsFloat.java
new file mode 100644
index 00000000..bdf19178
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/SecondsFloat.java
@@ -0,0 +1,29 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::duration") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class SecondsFloat extends Pointer {
+ public SecondsFloat() { allocate(); }
+ private native void allocate();
+ public SecondsFloat(float r) { allocate(r); }
+ private native void allocate(float r);
+ public SecondsFloat(Nanoseconds d) { allocate(d); }
+ private native void allocate(@Const @ByRef Nanoseconds d);
+ public SecondsFloat(Seconds d) { allocate(d); }
+ private native void allocate(@Const @ByRef Seconds d);
+
+ public native @Name("operator=") @ByRef SecondsFloat put(@Const @ByRef SecondsFloat other);
+ public native @Name("operator-") @ByVal SecondsFloat negate();
+ public native @Name("operator++") @ByRef SecondsFloat increment();
+ public native @Name("operator--") @ByRef SecondsFloat decrement();
+ public native @Name("operator+=") @ByRef SecondsFloat addPut(@Const @ByRef SecondsFloat d);
+ public native @Name("operator-=") @ByRef SecondsFloat subtractPut(@Const @ByRef SecondsFloat d);
+ public native @Name("operator*=") @ByRef SecondsFloat multiplyPut(@Const @ByRef float rhs);
+
+ public native float count();
+ static public native @ByVal @Name("zero") SecondsFloat zero_();
+ static public native @ByVal SecondsFloat min();
+ static public native @ByVal SecondsFloat max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/SteadyClock.java b/src/main/java/org/bytedeco/javacpp/chrono/SteadyClock.java
new file mode 100644
index 00000000..e2a8502c
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/SteadyClock.java
@@ -0,0 +1,11 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.ByVal;
+import org.bytedeco.javacpp.annotation.Name;
+import org.bytedeco.javacpp.annotation.Properties;
+
+@Name("std::chrono::steady_clock") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class SteadyClock extends Pointer {
+ static public native @ByVal SteadyTime now();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/SteadyDuration.java b/src/main/java/org/bytedeco/javacpp/chrono/SteadyDuration.java
new file mode 100644
index 00000000..a95abe15
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/SteadyDuration.java
@@ -0,0 +1,26 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::steady_clock::duration") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class SteadyDuration extends Pointer {
+ public SteadyDuration() { allocate(); }
+ private native void allocate();
+ public SteadyDuration(long r) { allocate(r); }
+ private native void allocate(long r);
+
+ public native @Name("operator=") @ByRef SteadyDuration put(@Const @ByRef SteadyDuration other);
+ public native @Name("operator-") @ByVal SteadyDuration negate();
+ public native @Name("operator++") @ByRef SteadyDuration increment();
+ public native @Name("operator--") @ByRef SteadyDuration decrement();
+ public native @Name("operator+=") @ByRef SteadyDuration addPut(@Const @ByRef SteadyDuration d);
+ public native @Name("operator-=") @ByRef SteadyDuration subtractPut(@Const @ByRef SteadyDuration d);
+ public native @Name("operator*=") @ByRef SteadyDuration multiplyPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef SteadyDuration modPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef SteadyDuration modPut(@Const @ByRef SteadyDuration rhs);
+
+ public native long count();
+ static public native @ByVal @Name("zero") SteadyDuration zero_();
+ static public native @ByVal SteadyDuration min();
+ static public native @ByVal SteadyDuration max();}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/SteadyTime.java b/src/main/java/org/bytedeco/javacpp/chrono/SteadyTime.java
new file mode 100644
index 00000000..b2ec2c24
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/SteadyTime.java
@@ -0,0 +1,21 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::time_point") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class SteadyTime extends Pointer {
+ public SteadyTime() { allocate(); }
+ private native void allocate();
+
+ public SteadyTime(SteadyDuration d) { allocate(d); }
+ private native void allocate(@Const @ByRef SteadyDuration d);
+
+ public native @ByVal SteadyDuration time_since_epoch();
+
+ public native @Name("operator +=") @ByRef SteadyTime addPut(@Const @ByRef SteadyDuration d);
+ public native @Name("operator -=") @ByRef SteadyTime subtractPut(@Const @ByRef SteadyDuration d);
+ static public native @ByVal SteadyTime min();
+ static public native @ByVal SteadyTime max();
+
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/SystemClock.java b/src/main/java/org/bytedeco/javacpp/chrono/SystemClock.java
new file mode 100644
index 00000000..63c0a3ac
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/SystemClock.java
@@ -0,0 +1,11 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::system_clock") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class SystemClock extends Pointer {
+ static public native @ByVal SystemTime now();
+ static public native @Cast("time_t") long to_time_t(@Const @ByRef SystemTime t);
+ static public native @ByVal SystemTime from_time_t(@Cast("time_t") long t);
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/SystemDuration.java b/src/main/java/org/bytedeco/javacpp/chrono/SystemDuration.java
new file mode 100644
index 00000000..e3b1508e
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/SystemDuration.java
@@ -0,0 +1,27 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::system_clock::duration") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class SystemDuration extends Pointer {
+ public SystemDuration() { allocate(); }
+ private native void allocate();
+ public SystemDuration(long r) { allocate(r); }
+ private native void allocate(long r);
+
+ public native @Name("operator=") @ByRef SystemDuration put(@Const @ByRef SystemDuration other);
+ public native @Name("operator-") @ByVal SystemDuration negate();
+ public native @Name("operator++") @ByRef SystemDuration increment();
+ public native @Name("operator--") @ByRef SystemDuration decrement();
+ public native @Name("operator+=") @ByRef SystemDuration addPut(@Const @ByRef SystemDuration d);
+ public native @Name("operator-=") @ByRef SystemDuration subtractPut(@Const @ByRef SystemDuration d);
+ public native @Name("operator*=") @ByRef SystemDuration multiplyPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef SystemDuration modPut(@Const @ByRef long rhs);
+ public native @Name("operator%=") @ByRef SystemDuration modPut(@Const @ByRef SystemDuration rhs);
+
+ public native long count();
+ static public native @ByVal @Name("zero") SystemDuration zero_();
+ static public native @ByVal SystemDuration min();
+ static public native @ByVal SystemDuration max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/chrono/SystemTime.java b/src/main/java/org/bytedeco/javacpp/chrono/SystemTime.java
new file mode 100644
index 00000000..4b388da8
--- /dev/null
+++ b/src/main/java/org/bytedeco/javacpp/chrono/SystemTime.java
@@ -0,0 +1,20 @@
+package org.bytedeco.javacpp.chrono;
+
+import org.bytedeco.javacpp.Pointer;
+import org.bytedeco.javacpp.annotation.*;
+
+@Name("std::chrono::time_point") @Properties(inherit = org.bytedeco.javacpp.presets.javacpp.class)
+public class SystemTime extends Pointer {
+ public SystemTime() { allocate(); }
+ private native void allocate();
+
+ public SystemTime(SystemDuration d) { allocate(d); }
+ private native void allocate(@Const @ByRef SystemDuration d);
+
+ public native @ByVal SystemDuration time_since_epoch();
+
+ public native @Name("operator +=") @ByRef SystemTime addPut(@Const @ByRef SystemDuration d);
+ public native @Name("operator -=") @ByRef SystemTime subtractPut(@Const @ByRef SystemDuration d);
+ static public native @ByVal SystemTime min();
+ static public native @ByVal SystemTime max();
+}
diff --git a/src/main/java/org/bytedeco/javacpp/tools/Generator.java b/src/main/java/org/bytedeco/javacpp/tools/Generator.java
index 52b5ff3f..e703ca31 100644
--- a/src/main/java/org/bytedeco/javacpp/tools/Generator.java
+++ b/src/main/java/org/bytedeco/javacpp/tools/Generator.java
@@ -365,6 +365,7 @@ boolean classes(boolean handleExceptions, boolean defineAdapters, boolean conver
out.println("#include ");
out.println("#include ");
out.println("#include ");
+ out.println("#include ");
if (baseLoadSuffix == null || baseLoadSuffix.isEmpty()) {
out.println();
out.println("#if defined(NATIVE_ALLOCATOR) && defined(NATIVE_DEALLOCATOR)");