Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add mapping for std::chrono #766

Merged
merged 11 commits into from
Aug 4, 2024
8 changes: 4 additions & 4 deletions .github/workflows/javacpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ jobs:
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-ubuntu@actions
ios-arm64:
runs-on: macos-11
runs-on: macos-14
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-macosx@actions
ios-x86_64:
runs-on: macos-11
runs-on: macos-12
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-macosx@actions
# linux-armhf:
Expand All @@ -56,11 +56,11 @@ jobs:
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-ubuntu@actions
macosx-arm64:
runs-on: macos-11
runs-on: macos-14
steps:
- uses: bytedeco/javacpp-presets/.github/actions/deploy-macosx@actions
macosx-x86_64:
runs-on: macos-11
runs-on: macos-12
env:
CI_DEPLOY_OPTIONS: "" # to not skip tests
steps:
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@

* Add minimal mappings for `std::chrono` from C++11 ([pull #766](https://github.com/bytedeco/javacpp/pull/766))
* Let `Parser` annotate Java constructors with `@Deprecated` when appropriate ([pull #757](https://github.com/bytedeco/javacpp/pull/757))
* Add to `InfoMap.defaults` more names that are reserved in Java, but not in C++ ([pull #757](https://github.com/bytedeco/javacpp/pull/757))
* Bundle `libomp` from Visual Studio to fix presets using OpenMP on Windows ([pull #755](https://github.com/bytedeco/javacpp/pull/755))
Expand Down
1 change: 1 addition & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,7 @@ Import-Package: \
<argument>-Dplatform.compiler=${javacpp.platform.compiler}</argument>
<argument>org.bytedeco.javacpp.Pointer</argument>
<argument>org.bytedeco.javacpp.presets.javacpp</argument>
<argument>org.bytedeco.javacpp.chrono.*</argument>
saudet marked this conversation as resolved.
Show resolved Hide resolved
<argument>-mod</argument>
<argument>${project.build.directory}/generated-sources/java9/module-info.java</argument>
</arguments>
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/org/bytedeco/javacpp/chrono/HighResolutionClock.java
Original file line number Diff line number Diff line change
@@ -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.chrono.class)
public class HighResolutionClock extends Pointer {
static public native @ByVal HighResolutionTime now();
static public native @MemberGetter boolean is_steady();
}
Original file line number Diff line number Diff line change
@@ -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.chrono.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();
}
20 changes: 20 additions & 0 deletions src/main/java/org/bytedeco/javacpp/chrono/HighResolutionTime.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.bytedeco.javacpp.chrono;

import org.bytedeco.javacpp.Pointer;
import org.bytedeco.javacpp.annotation.*;

@Name("std::chrono::time_point<std::chrono::high_resolution_clock>") @Properties(inherit = org.bytedeco.javacpp.presets.chrono.class)
public class HighResolutionTime extends Pointer {
public HighResolutionTime() { allocate(); }
private native void allocate();

public HighResolutionTime(HighResolutionDuration d) { allocate(d); }
private native void allocate(@Const @ByRef HighResolutionDuration 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();
}
27 changes: 27 additions & 0 deletions src/main/java/org/bytedeco/javacpp/chrono/Hours.java
Original file line number Diff line number Diff line change
@@ -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.chrono.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();
}
36 changes: 36 additions & 0 deletions src/main/java/org/bytedeco/javacpp/chrono/Microseconds.java
Original file line number Diff line number Diff line change
@@ -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.chrono.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();
}
33 changes: 33 additions & 0 deletions src/main/java/org/bytedeco/javacpp/chrono/Milliseconds.java
Original file line number Diff line number Diff line change
@@ -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.chrono.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();
}
29 changes: 29 additions & 0 deletions src/main/java/org/bytedeco/javacpp/chrono/Minutes.java
Original file line number Diff line number Diff line change
@@ -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.chrono.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();
}
43 changes: 43 additions & 0 deletions src/main/java/org/bytedeco/javacpp/chrono/Nanoseconds.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
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.chrono.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 Nanoseconds(SystemDuration d) { super((Pointer)null); allocate(d); };
private native void allocate(@Const @ByRef SystemDuration d);
public Nanoseconds(HighResolutionDuration d) { super((Pointer)null); allocate(d); };
private native void allocate(@Const @ByRef HighResolutionDuration d);
public Nanoseconds(SteadyDuration d) { super((Pointer)null); allocate(d); };
private native void allocate(@Const @ByRef SteadyDuration 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();
}
31 changes: 31 additions & 0 deletions src/main/java/org/bytedeco/javacpp/chrono/Seconds.java
Original file line number Diff line number Diff line change
@@ -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.chrono.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();
}
29 changes: 29 additions & 0 deletions src/main/java/org/bytedeco/javacpp/chrono/SecondsDouble.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package org.bytedeco.javacpp.chrono;

import org.bytedeco.javacpp.Pointer;
import org.bytedeco.javacpp.annotation.*;

@Name("std::chrono::duration<double>") @Properties(inherit = org.bytedeco.javacpp.presets.chrono.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();
}
29 changes: 29 additions & 0 deletions src/main/java/org/bytedeco/javacpp/chrono/SecondsFloat.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package org.bytedeco.javacpp.chrono;

import org.bytedeco.javacpp.Pointer;
import org.bytedeco.javacpp.annotation.*;

@Name("std::chrono::duration<float>") @Properties(inherit = org.bytedeco.javacpp.presets.chrono.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();
}
11 changes: 11 additions & 0 deletions src/main/java/org/bytedeco/javacpp/chrono/SteadyClock.java
Original file line number Diff line number Diff line change
@@ -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.chrono.class)
public class SteadyClock extends Pointer {
static public native @ByVal SteadyTime now();
}
Loading
Loading