export let Indigo = function()

in indigo.js [1780:2195]


export let Indigo = function(basepath) {
    if (!basepath)
        basepath = join(__dirname, 'lib');

    let osMap = {
        'linux': 'Linux',
        'darwin': 'Mac',
        'win32': 'Win'
    };
    if (!osMap[process.platform] || ['x86', 'x64'].indexOf(process.arch) == -1)
        throw IndigoException("Unknown platform " + process.platform +
            " (" + process.arch + ")");

    this.dllpath = join(basepath, osMap[process.platform], process.arch);
    let libpath = join(this.dllpath,
        process.platform != 'win32' ? 'libindigo' : 'indigo');

    if (process.platform == 'linux') {
        // Indigo must be loaded with `RTLD_GLOBAL` flag
        // to make plugins work. See https://git.io/voPPW
        let mode = ffi.DynamicLibrary.FLAGS.RTLD_GLOBAL | ffi.DynamicLibrary.FLAGS.RTLD_LAZY;
        new ffi.DynamicLibrary(libpath + ffi.LIB_EXT, mode);
    }

    let xyz = refStruct({
        x: 'float',
        y: 'float',
        z: 'float'
    });
    this._lib = Library(libpath, {
        "indigoSetOption": ["int", ["string", "string"]],
        "indigoSetOptionInt": ["int", ["string", "int"]],
        "indigoSetOptionBool": ["int", ["string", "int"]],
        "indigoSetOptionFloat": ["int", ["string", "float"]],
        "indigoSetOptionColor": ["int", ["string", "float", "float", "float"]],
        "indigoSetOptionXY": ["int", ["string", "int", "int"]],
        "indigoDbgBreakpoint": ["void", []],
        "indigoVersion": ["string", []],
        "indigoAllocSessionId": ['uint64', []],
        "indigoSetSessionId": ["void", ['uint64']],
        "indigoReleaseSessionId": ["void", ['uint64']],
        "indigoGetLastError": ["string", []],
        "indigoFree": ["int", ["int"]],
        "indigoCountReferences": ["int", []],
        "indigoFreeAllObjects": ["int", []],
        "indigoWriteBuffer": ["int", []],
        "indigoCreateMolecule": ["int", []],
        "indigoCreateQueryMolecule": ["int", []],
        "indigoNext": ["int", ["int"]],
        "indigoHasNext": ["int", ["int"]],
        "indigoClone": ["int", ["int"]],
        "indigoClose": ["int", ["int"]],
        "indigoIndex": ["int", ["int"]],
        "indigoRemove": ["int", ["int"]],
        "indigoSaveMolfileToFile": ["int", ["string"]],
        "indigoMolfile": ["string", ["int"]],
        "indigoSaveCmlToFile": ["int", ["string"]],
        "indigoCml": ["string", ["int"]],
        "indigoSaveMDLCT": ["int", ["int", "int"]],
        "indigoAddReactant": ["int", ["int", "int"]],
        "indigoAddProduct": ["int", ["int", "int"]],
        "indigoAddCatalyst": ["int", ["int", "int"]],
        "indigoCountReactants": ["int", ["int"]],
        "indigoCountProducts": ["int", ["int"]],
        "indigoCountCatalysts": ["int", ["int"]],
        "indigoCountMolecules": ["int", ["int"]],
        "indigoGetMolecule": ["int", ["int", "int"]],
        "indigoIterateReactants": ["int", ["int"]],
        "indigoIterateProducts": ["int", ["int"]],
        "indigoIterateCatalysts": ["int", ["int"]],
        "indigoIterateMolecules": ["int", ["int"]],
        "indigoSaveRxnfileToFile": ["int", ["int", "string"]],
        "indigoRxnfile": ["string", ["int"]],
        "indigoOptimize": ["int", ["int", "string"]],
        "indigoNormalize": ["int", ["int", "string"]],
        "indigoStandardize": ["int", ["int"]],
        "indigoAutomap": ["int", ["int", "string"]],
        "indigoGetAtomMappingNumber": ["int", ["int", "int"]],
        "indigoSetAtomMappingNumber": ["int", ["int", "int", "int"]],
        "indigoGetReactingCenter": ["int", ["int", "int", refType('int')]],
        "indigoSetReactingCenter": ["int", ["int", "int", "int"]],
        "indigoClearAAM": ["int", ["int"]],
        "indigoCorrectReactingCenters": ["int", ["int"]],
        "indigoIterateAtoms": ["int", ["int"]],
        "indigoIteratePseudoatoms": ["int", ["int"]],
        "indigoIterateRSites": ["int", ["int"]],
        "indigoIterateStereocenters": ["int", ["int"]],
        "indigoIterateAlleneCenters": ["int", ["int"]],
        "indigoIterateRGroups": ["int", ["int"]],
        "indigoIsPseudoatom": ["int", ["int"]],
        "indigoIsRSite": ["int", ["int"]],
        "indigoStereocenterType": ["int", ["int"]],
        "indigoStereocenterGroup": ["int", ["int"]],
        "indigoSetStereocenterGroup": ["int", ["int", "int"]],
        "indigoChangeStereocenterType": ["int", ["int", "int"]],
        "indigoValidateChirality": ["int", ["int"]],
        "indigoSingleAllowedRGroup": ["int", ["int"]],
        "indigoAddStereocenter": ["int", ["int", "int", "int", "int", "int", "int"]],
        "indigoIterateRGroupFragments": ["int", ["int"]],
        "indigoCountAttachmentPoints": ["int", ["int"]],
        "indigoIterateAttachmentPoints": ["int", ["int", "int"]],
        "indigoSymbol": ["string", ["int"]],
        "indigoDegree": ["int", ["int"]],
        "indigoGetCharge": ["int", ["int", refType('int')]],
        "indigoGetExplicitValence": ["int", ["int", refType('int')]],
        "indigoSetExplicitValence": ["int", ["int", "int"]],
        "indigoGetRadicalElectrons": ["int", ["int", refType('int')]],
        "indigoGetRadical": ["int", ["int", refType('int')]],
        "indigoSetRadical": ["int", ["int", "int"]],
        "indigoAtomicNumber": ["int", ["int"]],
        "indigoIsotope": ["int", ["int"]],
        "indigoValence": ["int", ["int"]],
        "indigoCountHydrogens": ["int", ["int", refType('int')]],
        "indigoCountImplicitHydrogens": ["int", ["int"]],
        "indigoXYZ": [refType(xyz), ["int"]],
        "indigoSetXYZ": ["int", ["int", "float", "float", "float"]],
        "indigoCountSuperatoms": ["int", ["int"]],
        "indigoCountDataSGroups": ["int", ["int"]],
        "indigoCountRepeatingUnits": ["int", ["int"]],
        "indigoCountMultipleGroups": ["int", ["int"]],
        "indigoCountGenericSGroups": ["int", ["int"]],
        "indigoIterateDataSGroups": ["int", ["int"]],
        "indigoIterateSuperatoms": ["int", ["int"]],
        "indigoIterateGenericSGroups": ["int", ["int"]],
        "indigoIterateRepeatingUnits": ["int", ["int"]],
        "indigoIterateMultipleGroups": ["int", ["int"]],
        "indigoGetSuperatom": ["int", ["int", "int"]],
        "indigoGetDataSGroup": ["int", ["int", "int"]],
        "indigoGetGenericSGroup": ["int", ["int", "int"]],
        "indigoGetMultipleGroup": ["int", ["int", "int"]],
        "indigoGetRepeatingUnit": ["int", ["int", "int"]],
        "indigoDescription": ["string", ["int"]],
        "indigoData": ["string", ["int"]],
        "indigoAddDataSGroup": ["int", ["int", "int", refArray('int'), "int", refArray('int'), "string", "string"]],
        "indigoAddSuperatom": ["int", ["int", "int", refArray('int'), "string"]],
        "indigoSetDataSGroupXY": ["int", ["int", "float", "float", "string"]],
        "indigoSetSGroupData": ["int", ["int", "string"]],
        "indigoSetSGroupCoords": ["int", ["int", "float", "float"]],
        "indigoSetSGroupDescription": ["int", ["int", "string"]],
        "indigoSetSGroupFieldName": ["int", ["int", "string"]],
        "indigoSetSGroupQueryCode": ["int", ["int", "string"]],
        "indigoSetSGroupQueryOper": ["int", ["int", "string"]],
        "indigoSetSGroupDisplay": ["int", ["int", "string"]],
        "indigoSetSGroupLocation": ["int", ["int", "string"]],
        "indigoSetSGroupTag": ["int", ["int", "string"]],
        "indigoSetSGroupTagAlign": ["int", ["int", "string"]],
        "indigoSetSGroupDataType": ["int", ["int", "string"]],
        "indigoSetSGroupXCoord": ["int", ["int", "float"]],
        "indigoSetSGroupYCoord": ["int", ["int", "float"]],
        "indigoCreateSGroup": ["int", ["string", "int", "string"]],
        "indigoSetSGroupClass": ["int", ["int", "string"]],
        "indigoSetSGroupName": ["int", ["int", "string"]],
        "indigoGetSGroupClass": ["string", ["int"]],
        "indigoGetSGroupName": ["string", ["int"]],
        "indigoGetSGroupNumCrossBonds": ["int", ["int"]],
        "indigoAddSGroupAttachmentPoint": ["int", ["int", "int", "int", "string"]],
        "indigoDeleteSGroupAttachmentPoint": ["int", ["int", "int"]],
        "indigoGetSGroupDisplayOption": ["int", ["int"]],
        "indigoSetSGroupDisplayOption": ["int", ["int", "int"]],
        "indigoGetSGroupMultiplier": ["int", ["int"]],
        "indigoSetSGroupMultiplier": ["int", ["int", "int"]],
        "indigoSetSGroupBrackets": ["int", ["int", "int", "float", "float", "float", "float", "float", "float", "float", "float"]],
        "indigoFindSGroups": ["int", ["int", "string", "string"]],
        "indigoGetSGroupType": ["int", ["int"]],
        "indigoGetSGroupIndex": ["int", ["int"]],
        "indigoTransformSCSRtoCTAB": ["int", ["int"]],
        "indigoTransformCTABtoSCSR": ["int", ["int", "int"]],
        "indigoResetCharge": ["int", ["int"]],
        "indigoResetExplicitValence": ["int", ["int"]],
        "indigoResetRadical": ["int", ["int"]],
        "indigoResetIsotope": ["int", ["int"]],
        "indigoSetAttachmentPoint": ["int", ["int", "int"]],
        "indigoClearAttachmentPoints": ["int", ["int"]],
        "indigoRemoveConstraints": ["int", ["int", "string"]],
        "indigoAddConstraint": ["int", ["int", "string", "string"]],
        "indigoAddConstraintNot": ["int", ["int", "string", "string"]],
        "indigoAddConstraintOr": ["int", ["int", "string", "string"]],
        "indigoResetStereo": ["int", ["int"]],
        "indigoInvertStereo": ["int", ["int"]],
        "indigoCountAtoms": ["int", ["int"]],
        "indigoCountBonds": ["int", ["int"]],
        "indigoCountPseudoatoms": ["int", ["int"]],
        "indigoCountRSites": ["int", ["int"]],
        "indigoIterateBonds": ["int", ["int"]],
        "indigoBondOrder": ["int", ["int"]],
        "indigoBondStereo": ["int", ["int"]],
        "indigoTopology": ["int", ["int"]],
        "indigoIterateNeighbors": ["int", ["int"]],
        "indigoBond": ["int", ["int"]],
        "indigoGetAtom": ["int", ["int", "int"]],
        "indigoGetBond": ["int", ["int", "int"]],
        "indigoSource": ["int", ["int"]],
        "indigoDestination": ["int", ["int"]],
        "indigoClearCisTrans": ["int", ["int"]],
        "indigoClearStereocenters": ["int", ["int"]],
        "indigoCountStereocenters": ["int", ["int"]],
        "indigoClearAlleneCenters": ["int", ["int"]],
        "indigoCountAlleneCenters": ["int", ["int"]],
        "indigoResetSymmetricCisTrans": ["int", ["int"]],
        "indigoResetSymmetricStereocenters": ["int", ["int"]],
        "indigoMarkEitherCisTrans": ["int", ["int"]],
        "indigoMarkStereobonds": ["int", ["int"]],
        "indigoAddAtom": ["int", ["int", "string"]],
        "indigoResetAtom": ["int", ["int", "string"]],
        "indigoAddRSite": ["int", ["int", "string"]],
        "indigoSetRSite": ["int", ["int", "string"]],
        "indigoSetCharge": ["int", ["int", "int"]],
        "indigoSetIsotope": ["int", ["int", "int"]],
        "indigoSetImplicitHCount": ["int", ["int", "int"]],
        "indigoAddBond": ["int", ["int", "int", "int"]],
        "indigoSetBondOrder": ["int", ["int", "int"]],
        "indigoMerge": ["int", ["int", "int"]],
        "indigoHighlight": ["int", ["int"]],
        "indigoUnhighlight": ["int", ["int"]],
        "indigoIsHighlighted": ["int", ["int"]],
        "indigoCountComponents": ["int", ["int"]],
        "indigoComponentIndex": ["int", ["int"]],
        "indigoIterateComponents": ["int", ["int"]],
        "indigoComponent": ["int", ["int", "int"]],
        "indigoCountSSSR": ["int", ["int"]],
        "indigoIterateSSSR": ["int", ["int"]],
        "indigoIterateSubtrees": ["int", ["int", "int", "int"]],
        "indigoIterateRings": ["int", ["int", "int", "int"]],
        "indigoIterateEdgeSubmolecules": ["int", ["int", "int", "int"]],
        "indigoCountHeavyAtoms": ["int", ["int"]],
        "indigoGrossFormula": ["int", ["int"]],
        "indigoMolecularWeight": ["double", ["int"]],
        "indigoMostAbundantMass": ["double", ["int"]],
        "indigoMonoisotopicMass": ["double", ["int"]],
        "indigoCanonicalSmiles": ["string", ["int"]],
        "indigoLayeredCode": ["string", ["int"]],
        "indigoSymmetryClasses": [refType('int'), ["int", refType('int')]],
        "indigoHasCoord": ["int", ["int"]],
        "indigoHasZCoord": ["int", ["int"]],
        "indigoIsChiral": ["int", ["int"]],
        "indigoCreateSubmolecule": ["int", ["int", "int", refArray('int')]],
        "indigoCreateEdgeSubmolecule": ["int", ["int", "int", refArray('int'), "int", refArray('int')]],
        "indigoGetSubmolecule": ["int", ["int", "int", refArray('int')]],
        "indigoRemoveAtoms": ["int", ["int", "int", refArray('int')]],
        "indigoRemoveBonds": ["int", ["int", "int", refArray('int')]],
        "indigoAlignAtoms": ["float", ["int", "int", refArray('int'), refArray('float')]],
        "indigoAromatize": ["int", ["int"]],
        "indigoDearomatize": ["int", ["int"]],
        "indigoFoldHydrogens": ["int", ["int"]],
        "indigoUnfoldHydrogens": ["int", ["int"]],
        "indigoLayout": ["int", ["int"]],
        "indigoSmiles": ["string", ["int"]],
        "indigoName": ["string", ["int"]],
        "indigoSetName": ["int", ["int", "string"]],
        "indigoSerialize": ["int", ["int", refType(refType('byte')), refType('int')]],
        "indigoHasProperty": ["int", ["int", "string"]],
        "indigoGetProperty": ["string", ["int", "string"]],
        "indigoSetProperty": ["int", ["int", "string", "string"]],
        "indigoRemoveProperty": ["int", ["int", "string"]],
        "indigoIterateProperties": ["int", ["int"]],
        "indigoClearProperties": ["int", ["int"]],
        "indigoCheckBadValence": ["string", ["int"]],
        "indigoCheckAmbiguousH": ["string", ["int"]],
        "indigoFingerprint": ["int", ["int", "string"]],
        "indigoCountBits": ["int", ["int"]],
        "indigoRawData": ["string", ["int"]],
        "indigoTell": ["int", ["int"]],
        "indigoSdfAppend": ["int", ["int", "int"]],
        "indigoSmilesAppend": ["int", ["int", "int"]],
        "indigoRdfHeader": ["int", ["int"]],
        "indigoRdfAppend": ["int", ["int", "int"]],
        "indigoCmlHeader": ["int", ["int"]],
        "indigoCmlAppend": ["int", ["int", "int"]],
        "indigoCmlFooter": ["int", ["int"]],
        "indigoAppend": ["int", ["int", "int"]],
        "indigoArrayAdd": ["int", ["int", "int"]],
        "indigoAt": ["int", ["int", "int"]],
        "indigoCount": ["int", ["int"]],
        "indigoClear": ["int", ["int"]],
        "indigoIterateArray": ["int", ["int"]],
        "indigoIgnoreAtom": ["int", ["int", "int"]],
        "indigoUnignoreAtom": ["int", ["int", "int"]],
        "indigoUnignoreAllAtoms": ["int", ["int"]],
        "indigoMatch": ["int", ["int", "int"]],
        "indigoCountMatches": ["int", ["int", "int"]],
        "indigoCountMatchesWithLimit": ["int", ["int", "int", "int"]],
        "indigoIterateMatches": ["int", ["int", "int"]],
        "indigoHighlightedTarget": ["int", ["int"]],
        "indigoMapAtom": ["int", ["int", "int"]],
        "indigoMapBond": ["int", ["int", "int"]],
        "indigoMapMolecule": ["int", ["int", "int"]],
        "indigoAllScaffolds": ["int", ["int"]],
        "indigoDecomposedMoleculeScaffold": ["int", ["int"]],
        "indigoIterateDecomposedMolecules": ["int", ["int"]],
        "indigoDecomposedMoleculeHighlighted": ["int", ["int"]],
        "indigoDecomposedMoleculeWithRGroups": ["int", ["int"]],
        "indigoDecomposeMolecule": ["int", ["int", "int"]],
        "indigoIterateDecompositions": ["int", ["int"]],
        "indigoAddDecomposition": ["int", ["int", "int"]],
        "indigoToString": ["string", ["int"]],
        "indigoToBuffer": ["int", ["int", refType(refType('byte')), refType('int')]],
        "indigoStereocenterPyramid": [refType('int'), ["int"]],
        "indigoExpandAbbreviations": ["int", ["int"]],
        "indigoDbgInternalType": ["string", ["int"]],
        "indigoOneBitsList": ["string", ["int"]],
        "indigoLoadMoleculeFromString": ["int", ["string"]],
        "indigoLoadMoleculeFromFile": ["int", ["string"]],
        "indigoLoadQueryMoleculeFromString": ["int", ["string"]],
        "indigoLoadQueryMoleculeFromFile": ["int", ["string"]],
        "indigoLoadSmartsFromString": ["int", ["string"]],
        "indigoLoadSmartsFromFile": ["int", ["string"]],
        "indigoLoadReactionFromString": ["int", ["string"]],
        "indigoLoadReactionFromFile": ["int", ["string"]],
        "indigoLoadQueryReactionFromString": ["int", ["string"]],
        "indigoLoadQueryReactionFromFile": ["int", ["string"]],
        "indigoLoadReactionSmartsFromString": ["int", ["string"]],
        "indigoLoadReactionSmartsFromFile": ["int", ["string"]],
        "indigoCreateReaction": ["int", []],
        "indigoCreateQueryReaction": ["int", []],
        "indigoExactMatch": ["int", ["int", "int", "string"]],
        "indigoSetTautomerRule": ["int", ["int", "string", "string"]],
        "indigoRemoveTautomerRule": ["int", ["int"]],
        "indigoClearTautomerRules": ["int", []],
        "indigoUnserialize": ["int", [refType('byte'), "int"]],
        "indigoCommonBits": ["int", ["int", "int"]],
        "indigoSimilarity": ["float", ["int", "int", "string"]],
        "indigoIterateSDFile": ["int", ["string"]],
        "indigoIterateRDFile": ["int", ["string"]],
        "indigoIterateSmilesFile": ["int", ["string"]],
        "indigoIterateCMLFile": ["int", ["string"]],
        "indigoIterateCDXFile": ["int", ["string"]],
        "indigoCreateFileSaver": ["int", ["string", "string"]],
        "indigoCreateSaver": ["int", ["int", "string"]],
        "indigoCreateArray": ["int", []],
        "indigoSubstructureMatcher": ["int", ["int", "string"]],
        "indigoExtractCommonScaffold": ["int", ["int", "string"]],
        "indigoDecomposeMolecules": ["int", ["int", "int"]],
        "indigoCreateDecomposer": ["int", ["int"]],
        "indigoReactionProductEnumerate": ["int", ["int", "int"]],
        "indigoTransform": ["int", ["int", "int"]],
        "indigoLoadBuffer": ["int", [refArray('byte'), "int"]],
        "indigoLoadString": ["int", ["string"]],
        "indigoIterateSDF": ["int", ["int"]],
        "indigoIterateSmiles": ["int", ["int"]],
        "indigoIterateCML": ["int", ["int"]],
        "indigoIterateCDX": ["int", ["int"]],
        "indigoIterateRDF": ["int", ["int"]],
        "indigoWriteFile": ["int", ["string"]],
        "indigoIterateTautomers": ["int", ["int", "string"]],
        "indigoCheckValence": ["int", ["int"]],
        "indigoCheckQuery": ["int", ["int"]],
        "indigoCheckRGroups": ["int", ["int"]],
        "indigoCheck": ["string", ["int", "string"]],
        "indigoCheckStructure": ["string", ["string", "string"]],
        "indigoIterateSGroups": ["int", ["int"]],
        "indigoGetSGroupSeqId": ["int", ["int"]],
        "indigoGetSGroupCoords": [refType("float"), ["int"]],
        "indigoGetRepeatingUnitSubscript": ["string", ["int"]],
        "indigoGetRepeatingUnitConnectivity": ["int", ["int"]],
        "indigoGetSGroupOriginalId": ["int", ["int"]],
        "indigoSetSGroupOriginalId": ["int", ["int", "int"]],
        "indigoGetSGroupParentId": ["int", ["int"]],
        "indigoGetSGroupParentId": ["int", ["int", "int"]],
        "indigoAddTemplate": ["int", ["int", "int", "string"]],
        "indigoRemoveTemplate": ["int", ["int", "string"]],
        "indigoFindTemplate": ["int", ["int", "string"]],
        "indigoGetSGroupClass": ["string", ["int"]],
        "indigoGetSGroupName": ["string", ["int"]],
        "indigoTransformSCSRtoCTAB": ["int", ["int"]],
        "indigoTransformCTABtoSCSR": ["int", ["int", "int"]],
        "indigoGetTemplateAtomClass": ["string", ["int"]],
        "indigoSetTemplateAtomClass": ["int", ["int", "string"]],
        "indigoMassComposition": ["string", ["int"]],
        "indigoCheckChirality": ["int", ["int"]],
        "indigoCheck3DStereo": ["int", ["int"]],
        "indigoCheckStereo": ["int", ["int"]],
        "indigoIsPossibleFischerProjection": ["int", ["int", "string"]],
        "indigoClean2d": ["int", ["int"]],
        "indigoSmarts": ["string", ["int"]],
        "indigoCanonicalSmarts": ["string", ["int"]],
        "indigoGetFragmentedMolecule": ["string", ["int", "string"]],
        "indigoRGroupComposition": ["string", ["int", "string"]],
        "indigoTransformHELMtoSCSR": ["int", ["int"]],
        "indigoIonize": ["int", ["int", "float", "float"]],
        "indigoBuildPkaModel": ["int", ["int", "float", "string"]],
        "indigoGetAcidPkaValue": [refType("float"), ["int", "int", "int"]],
        "indigoGetBasicPkaValue": [refType("float"), ["int", "int", "int"]],
        "indigoSaveCdxml": ["int", ["int", "int"]],
        "indigoSaveCdxmlToFile": ["int", ["int", "string"]],
        "indigoCdxml": ["string", ["int"]],
        "indigoJson": ["string", ["int"]],
        "indigoCountRGroups": ["int", ["int"]],
        "indigoNameToStructure": ["int", ["string", "string"]],
        "indigoIsTemplateAtom": ["int", ["int"]]
    });

    // Allocate a new session. Each session has its own
    // set of objects created and options set up.
    this._sid = this._lib.indigoAllocSessionId();
    this.NOT_CENTER = -1;
    this.UNMARKED = 0;
    this.CENTER = 1;
    this.UNCHANGED = 2;
    this.MADE_OR_BROKEN = 4;
    this.ORDER_CHANGED = 8;
    this.ABS = 1;
    this.OR = 2;
    this.AND = 3;
    this.EITHER = 4;
    this.UP = 5;
    this.DOWN = 6;
    this.CIS = 7;
    this.TRANS = 8;
    this.CHAIN = 9;
    this.RING = 10;
    this.ALLENE = 11;

    this.SINGLET = 101;
    this.DOUBLET = 102;
    this.TRIPLET = 103;
};