Handle more of the fundamental types.

This is all that I am planning to import for now.

PiperOrigin-RevId: 399920115
diff --git a/rs_bindings_from_cc/ast_visitor.cc b/rs_bindings_from_cc/ast_visitor.cc
index 0659bd8..69fb3d2 100644
--- a/rs_bindings_from_cc/ast_visitor.cc
+++ b/rs_bindings_from_cc/ast_visitor.cc
@@ -152,7 +152,13 @@
       default:
         if (builtin_type->isIntegerType()) {
           auto size = ctx.getTypeSize(builtin_type);
-          if (size == 8 || size == 16 || size == 32 || size == 64) {
+          if (size == 64 &&
+              (type_string == "size_t" || type_string == "intptr_t")) {
+            type = MappedType::Simple("isize", type_string);
+          } else if (size == 64 && (type_string == "ptrdiff_t" ||
+                                    type_string == "uintptr_t")) {
+            type = MappedType::Simple("usize", type_string);
+          } else if (size == 8 || size == 16 || size == 32 || size == 64) {
             type = MappedType::Simple(
                 absl::Substitute(
                     "$0$1", builtin_type->isSignedInteger() ? 'i' : 'u', size),
diff --git a/rs_bindings_from_cc/ast_visitor_test.cc b/rs_bindings_from_cc/ast_visitor_test.cc
index d8ce285..dcfdd6f 100644
--- a/rs_bindings_from_cc/ast_visitor_test.cc
+++ b/rs_bindings_from_cc/ast_visitor_test.cc
@@ -329,6 +329,8 @@
 
 TEST(AstVisitorTest, IntegerTypes) {
   auto ir = ImportCode({"#include <stdint.h>\n"
+                        "#include <stddef.h>\n"
+
                         "struct S { "
                         "  bool b;"
 
@@ -364,6 +366,11 @@
                         "  uint32_t u32;"
                         "  uint64_t u64;"
 
+                        "  size_t st;",
+                        "  ptrdiff_t pt;"
+                        "  intptr_t ip;"
+                        "  uintptr_t up;"
+
                         "  float f;"
                         "  double d;"
                         "};"},
@@ -408,6 +415,11 @@
           FieldType(IsSimpleType("u32", "uint32_t")),
           FieldType(IsSimpleType("u64", "uint64_t")),
 
+          FieldType(IsSimpleType("isize", "size_t")),
+          FieldType(IsSimpleType("usize", "ptrdiff_t")),
+          FieldType(IsSimpleType("isize", "intptr_t")),
+          FieldType(IsSimpleType("usize", "uintptr_t")),
+
           FieldType(IsSimpleType("float", "float")),
           FieldType(IsSimpleType("double", "double")))));
 }