public void registerDenseFeatures(ArrayList<FeatureFunction> featureFunctions){
  for (  FeatureFunction feature : featureFunctions) {
    ArrayList<String> names=feature.reportDenseFeatures(denseFeatures.size());
    for (    String name : names) {
      DENSE_FEATURE_NAMES.add(name);
      denseFeatures.add(getSparse(name));
      sparseFeatures.remove(name);
    }
  }
}

public void registerDenseFeatures ( ArrayList < FeatureFunction > featureFunctions ) { for ( FeatureFunction feature : featureFunctions ) { ArrayList < String > names = feature . reportDenseFeatures ( denseFeatures . size ( ) ) ; for ( String name : names ) { DENSE_FEATURE_NAMES . add ( name ) ; denseFeatures . add ( getSparse ( name ) ) ; sparseFeatures . remove ( name ) ; } } }
register one or more dense features with the global weight vector . this assumes them global ids , and then returns the index of the first feature ( from which the calling feature function can infer them all ) . this * must * be called by every feature function wishing to register dense features !
