The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

SPVM::Builder::API - SPVM Builder Public APIs

SYNOPSYS

  # Builder API
  my $api = SPVM::Builder::API->new(
    build_dir => '.spvm_build',
  );
  
  # Compile SPVM
  my $success = $api->compile_spvm('MyLib');
  unless ($success) {
    # Error message
    my $error_messages = $self->get_error_messages;
    for my $error_message (@$error_messages) {
      printf STDERR "[CompileError]$error_message\n";
    }
    exit 255;
  }
  
  # Class names
  my $class_names = $api->get_class_names;
  
  for my $class_name (@$class_names) {
    # Method names
    my $method_names = $api->get_method_names($class_name);
    
    for my $method_name (@$method_names) {
      # Method signature
      my $method_signature = $api->get_method_signature($class_name, $method_name);
      
      print "$class_name->$method_name: $method_signature\n";
    }
  }
  

DESCRIPTION

SPVM::Builder::API is the public APIs of SPVM Builder.

SPVM::Builder is a private modules of SPVM.

The names and arguments of the methods are changed without warnings in the future release.

However, the methods is useful to get the information of SPVM modules.

SPVM::Builder::API provides the public APIs to call the methods. These APIs is public and stable.

METHODS

new

  # Builder API
  my $api = SPVM::Builder::API->new;

Create SPVM::Builder::API object.

Options:

  • build_dir

    Build directory.

compile_spvm

  # Compile SPVM
  my $success = $api->compile_spvm('MyLib');

Compile SPVM module. If succeeded, return true value, otherwise false value.

get_error_messages

  # Error message
  my $error_messages = $self->get_error_messages;

Get error messages of the compililation as array reference.

get_class_names

  # Class names
  my $class_names = $api->get_class_names;

Get class names as array reference.

get_method_names

  # Method names
  my $method_names = $api->get_method_names($class_name);

Get method names as array reference.

get_method_signature

  # Method signature
  my $method_signature = $api->get_method_signature($class_name, $method_name);

Get the method signature. The first argument is a class name. The second argument is a method name.

About method signatures, see SPVM::Document::LanguageSpecification.

build_dynamic_lib_dist_precompile

  $api->build_dynamic_lib_dist_precompile($class_name)

Build a precompile dymamic library and copy it to blib/lib.

build_dynamic_lib_dist_native

  $api->build_dynamic_lib_dist_native($class_name)

Build a native dynamic library and copy it into blib/lib.

build_shared_lib_dist_precompile

  $api->build_shared_lib_dist_precompile($class_name)

Same as "build_dynamic_lib_dist_precompile". Remained for backwards compatibility.

build_shared_lib_dist_native

  $api->build_shared_lib_dist_native($class_name)

Same as "build_dynamic_lib_dist_native". Remained for backwards compatibility.