Skip to content
Snippets Groups Projects
Commit 2fcc422b authored by Alexander Rose's avatar Alexander Rose
Browse files

Merge branch 'master' into bond-repr

parents cb213038 38031818
No related branches found
No related tags found
No related merge requests found
/**
* Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info.
* Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
......@@ -8,5 +8,6 @@ import Element from './structure/element'
import Structure from './structure/structure'
import Unit from './structure/unit'
import StructureSymmetry from './structure/symmetry'
import { Bond } from './structure/unit/bonds'
export { Element, Structure, Unit, StructureSymmetry }
\ No newline at end of file
export { Element, Bond, Structure, Unit, StructureSymmetry }
\ No newline at end of file
......@@ -24,7 +24,7 @@ namespace Element {
/** All the information required to access element properties */
export interface Location { unit: Unit, element: number }
export function Location(): Location { return { unit: {} as any, element: 0 }; }
export function Location(unit?: Unit, element?: number): Location { return { unit: unit as any, element: element || 0 }; }
export interface Property<T> { (location: Location): T }
export interface Predicate extends Property<boolean> { }
......@@ -37,7 +37,18 @@ namespace Element {
export function property<T>(p: Property<T>) { return p; }
/** Represents multiple element locations */
export type Loci = ReadonlyArray<{ unit: Unit, elements: SortedArray }>
export interface Loci {
readonly kind: 'element-loci',
readonly elements: ReadonlyArray<{ unit: Unit, elements: SortedArray }>
}
export function Loci(elements: ArrayLike<{ unit: Unit, elements: SortedArray }>): Loci {
return { kind: 'element-loci', elements: elements as Loci['elements'] };
}
export function isLoci(x: any): x is Loci {
return !!x && x.kind === 'element-loci';
}
}
export default Element
\ No newline at end of file
......@@ -4,5 +4,29 @@
* @author David Sehnal <david.sehnal@gmail.com>
*/
import { Element } from '../../structure'
export * from './bonds/intra-data'
export * from './bonds/intra-compute'
\ No newline at end of file
export * from './bonds/intra-compute'
interface Bond {
readonly a: Readonly<Element.Location>,
readonly b: Readonly<Element.Location>
}
namespace Bond {
export interface Loci {
readonly kind: 'bond-loci',
readonly bonds: ReadonlyArray<Bond>
}
export function Loci(bonds: ArrayLike<Bond>): Loci {
return { kind: 'bond-loci', bonds: bonds as Loci['bonds'] };
}
export function isLoci(x: any): x is Loci {
return !!x && x.kind === 'bond-loci';
}
}
export { Bond }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment