/* * Copyright 2014 Google Inc. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef FRUIT_FRUIT_FORWARD_DECLS_H #define FRUIT_FRUIT_FORWARD_DECLS_H // This header contains forward declarations of all types in the `fruit' namespace. // Avoid writing forward declarations yourself; use this header instead. namespace fruit { /** * This is used to group the requirements of Component. See Component for details. * Note: this type is declared but not defined; that's by design since instances of this type are not meaningful. */ template struct Required; /** * This is used to "annotate" T as a type that uses assisted injection. See PartialComponent for details. * Note: this type is declared but not defined; that's by design since instances of this type are not meaningful. */ template struct Assisted; /** * This is used to annotate T as a type that will be user-supplied instead of being injected. * See PartialComponent::registerFactory for details. */ template struct Annotated {}; template class Component; class EmptyPartialComponent; template class PartialComponent; template class NormalizedComponent; template class Provider; template class Injector; template class ComponentFunction; } // namespace fruit #endif // FRUIT_FRUIT_FORWARD_DECLS_H