Skip to content

Commit

Permalink
libmbdevice: Port to rapidjson and add schema validation
Browse files Browse the repository at this point in the history
Signed-off-by: Andrew Gunnerson <[email protected]>
  • Loading branch information
Andrew Gunnerson committed Jul 31, 2017
1 parent 53e3b4f commit 4493660
Show file tree
Hide file tree
Showing 15 changed files with 1,374 additions and 813 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

import com.github.chenxiaolong.dualbootpatcher.nativelib.LibMbDevice.CWrapper.CDevice;
import com.github.chenxiaolong.dualbootpatcher.nativelib.LibMbDevice.CWrapper.CJsonError;
import com.sun.jna.IntegerType;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.PointerType;
Expand Down Expand Up @@ -52,6 +53,16 @@ public CDevice(Pointer p) {

public static class CJsonError extends PointerType {}

public class SizeT extends IntegerType {
public SizeT() {
this(0);
}

public SizeT(long value) {
super(Native.SIZE_T_SIZE, value, true);
}
}

// BEGIN: device.h
static native CDevice mb_device_new();

Expand Down Expand Up @@ -159,11 +170,11 @@ public static class CJsonError extends PointerType {}
static native void mb_device_json_error_free(CJsonError error);

static native /* uint16_t */ short mb_device_json_error_type(CJsonError error);
static native int mb_device_json_error_line(CJsonError error);
static native int mb_device_json_error_column(CJsonError error);
static native /* char * */ Pointer mb_device_json_error_context(CJsonError error);
static native /* char * */ Pointer mb_device_json_error_expected_type(CJsonError error);
static native /* char * */ Pointer mb_device_json_error_actual_type(CJsonError error);
static native /* size_t */ SizeT mb_device_json_error_offset(CJsonError error);
static native /* char * */ Pointer mb_device_json_error_message(CJsonError error);
static native /* char * */ Pointer mb_device_json_error_schema_uri(CJsonError error);
static native /* char * */ Pointer mb_device_json_error_schema_keyword(CJsonError error);
static native /* char * */ Pointer mb_device_json_error_document_uri(CJsonError error);

static native CDevice mb_device_new_from_json(String json, CJsonError error);

Expand Down Expand Up @@ -236,32 +247,36 @@ public short type() {
return CWrapper.mb_device_json_error_type(mCJsonError);
}

public int line() {
return CWrapper.mb_device_json_error_line(mCJsonError);
public long offset() {
return CWrapper.mb_device_json_error_offset(mCJsonError).longValue();
}

public int column() {
return CWrapper.mb_device_json_error_column(mCJsonError);
public String message() {
Pointer p = CWrapper.mb_device_json_error_message(mCJsonError);
if (p == null) {
return null;
}
return LibC.getStringAndFree(p);
}

public String context() {
Pointer p = CWrapper.mb_device_json_error_context(mCJsonError);
public String schemaUri() {
Pointer p = CWrapper.mb_device_json_error_schema_uri(mCJsonError);
if (p == null) {
return null;
}
return LibC.getStringAndFree(p);
}

public String expectedType() {
Pointer p = CWrapper.mb_device_json_error_expected_type(mCJsonError);
public String schemaKeyword() {
Pointer p = CWrapper.mb_device_json_error_schema_keyword(mCJsonError);
if (p == null) {
return null;
}
return LibC.getStringAndFree(p);
}

public String actualType() {
Pointer p = CWrapper.mb_device_json_error_actual_type(mCJsonError);
public String documentUri() {
Pointer p = CWrapper.mb_device_json_error_document_uri(mCJsonError);
if (p == null) {
return null;
}
Expand Down
3 changes: 1 addition & 2 deletions devicesgen/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ if(${MBP_BUILD_TARGET} STREQUAL hosttools)
target_include_directories(
devicesgen
PRIVATE
${MBP_JANSSON_INCLUDES}
${MBP_YAML_CPP_INCLUDES}
)

Expand All @@ -26,8 +25,8 @@ if(${MBP_BUILD_TARGET} STREQUAL hosttools)
target_link_libraries(
devicesgen
mbdevice-shared
${MBP_JANSSON_LIBRARIES}
${MBP_YAML_CPP_LIBRARIES}
rapidjson
)

set_target_properties(
Expand Down
Loading

0 comments on commit 4493660

Please sign in to comment.