Skip to content

Arrays of structs #5

@apla

Description

@apla

Hi!

I trying to build interface to the libclang.codeCompleteAt. So far so good, but I have an issue with ref-array when using array of structs.

When I pass struct as array type, then I get assertion failed at this line. Commenting out this line fixes issue for me. expectedLength must match pointer size for my case.

Struct description:

var CXCompletionResult = exports.CXCompletionResult = Struct({
    CursorKind: ref.types.uint32,
    CompletionString: CXCompletionString,
});
var CXCompletionResultPtr = exports.CXCompletionResultPtr = ref.refType(CXCompletionResult);
var CXCodeCompleteResults = exports.CXCodeCompleteResults = Struct({
    Results: CXCompletionResultPtr,
    NumResults: ref.types.uint32,
});

FFI call code:

    var codeCompletionOptions = lib.clang_defaultCodeCompleteOptions ();

    var completionResultsRef = lib.clang_codeCompleteAt (
        this._instance,
        fileName,
        lineNo,
        columnNo,
        null, 0, codeCompletionOptions
    );

    var completionResults = completionResultsRef.deref();
    console.log ('completion result count: ', completionResults.NumResults);

    var results = completionResults.Results;
    if (completionResults.NumResults > 0) {

        if (!('CompletionString' in results.type.fields)) {
            console.log ('wrong data, no CompletionString in type definition');
        }

        var CompletionArray = ArrayType (d.CXCompletionResult);
        var completions = new CompletionArray (completionResults.Results, completionResults.NumResults);
        ...
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions