package water.rapids;
import water.rapids.ast.AstPrimitive;
import java.util.*;
/**
* PrimService manages access to non-core Rapid primitives.
* This includes algorithm specific rapids & 3rd party rapids.
*/
class PrimsService {
static PrimsService INSTANCE = new PrimsService();
private final ServiceLoader<AstPrimitive> _loader;
private PrimsService() {
_loader = ServiceLoader.load(AstPrimitive.class);
}
/**
* Locates all available non-core primitives of the Rapid language.
* @return list of Rapid primitives
*/
synchronized List<AstPrimitive> getAllPrims() {
List<AstPrimitive> prims = new ArrayList<>();
for (AstPrimitive prim : _loader) {
prims.add(prim);
}
return prims;
}
}