=head1 Name

SPVM::Document::NativeAPI::StringBuffer - String Buffer Native APIs

=head1 Description

The string buffer native APIs in L<SPVM> are the APIs for string buffers

=head1 Usage

  SPVM_API_STRING_BUFFER* string_buffer_api = env->api->string_buffer;
  
  SPVM_API_ALLOCATOR* api_allocator = env->api->allocator;
  
  void* allocator = api_allocator->new_instance();
  
  int32_t capacity = 100;
  
  void* string_buffer = string_buffer_api->new_instance(allocator, capacity);
  
  string_buffer_api->free_instance(string_buffer);
  
  api_allocator->free_instance(allocator);

=head1 Native APIs

=head2 new_instance

C<void* (*new_instance)(L<void* allocator|SPVM::Document::NativeAPI::Allocator>, int32_t capacity);>

Creates a new L<string buffer|SPVM::Document::NativeAPI::StringBuffer> given its capacity I<capacity>, and returns it.

=head2 free_instance

C<void (*free_instance)(L<void* string_buffer|SPVM::Document::NativeAPI::StringBuffer>);>

Frees the string buffer I<string_buffer>.

=head2 get_string

C<const char* (*get_string)(L<void* string_buffer|SPVM::Document::NativeAPI::StringBuffer>);>

Returns the string stored in the string buffer I<string_buffer>.

=head2 get_length

C<int32_t (*get_length)(L<void* string_buffer|SPVM::Document::NativeAPI::StringBuffer>);>

Returns the length of the string stored in the string buffer I<string_buffer>.

=head1 Native API IDs

  0 new_instance
  1 free_instance
  2 get_string
  3 get_length

=head1 See Also

=over 2

=item * L<SPVM::Document::NativeAPI>

=item * L<SPVM::Document::NativeAPI::Allocator>

=item * L<SPVM::Document::NativeClass>

=item * L<SPVM::Document>

=back

=head1 Copyright & License

Copyright (c) 2023 Yuki Kimoto

MIT License