/**
         * <summary>
         *   Retrieves a clock for a given identifier.
         * <para>
         *   The identifier can be specified using several formats:
         * </para>
         * <para>
         * </para>
         * <para>
         *   - FunctionLogicalName
         * </para>
         * <para>
         *   - ModuleSerialNumber.FunctionIdentifier
         * </para>
         * <para>
         *   - ModuleSerialNumber.FunctionLogicalName
         * </para>
         * <para>
         *   - ModuleLogicalName.FunctionIdentifier
         * </para>
         * <para>
         *   - ModuleLogicalName.FunctionLogicalName
         * </para>
         * <para>
         * </para>
         * <para>
         *   This function does not require that the clock is online at the time
         *   it is invoked. The returned object is nevertheless valid.
         *   Use the method <c>YRealTimeClock.isOnline()</c> to test if the clock is
         *   indeed online at a given time. In case of ambiguity when looking for
         *   a clock by logical name, no error is notified: the first instance
         *   found is returned. The search is performed first by hardware name,
         *   then by logical name.
         * </para>
         * </summary>
         * <param name="func">
         *   a string that uniquely characterizes the clock
         * </param>
         * <returns>
         *   a <c>YRealTimeClock</c> object allowing you to drive the clock.
         * </returns>
         */
        public static YRealTimeClock FindRealTimeClock(string func)
        {
            YRealTimeClock obj;

            obj = (YRealTimeClock)YFunction._FindFromCache("RealTimeClock", func);
            if (obj == null)
            {
                obj = new YRealTimeClock(func);
                YFunction._AddToCache("RealTimeClock", func, obj);
            }
            return(obj);
        }
 /**
  * <summary>
  *   Retrieves a clock for a given identifier.
  * <para>
  *   The identifier can be specified using several formats:
  * </para>
  * <para>
  * </para>
  * <para>
  *   - FunctionLogicalName
  * </para>
  * <para>
  *   - ModuleSerialNumber.FunctionIdentifier
  * </para>
  * <para>
  *   - ModuleSerialNumber.FunctionLogicalName
  * </para>
  * <para>
  *   - ModuleLogicalName.FunctionIdentifier
  * </para>
  * <para>
  *   - ModuleLogicalName.FunctionLogicalName
  * </para>
  * <para>
  * </para>
  * <para>
  *   This function does not require that the clock is online at the time
  *   it is invoked. The returned object is nevertheless valid.
  *   Use the method <c>YRealTimeClock.isOnline()</c> to test if the clock is
  *   indeed online at a given time. In case of ambiguity when looking for
  *   a clock by logical name, no error is notified: the first instance
  *   found is returned. The search is performed first by hardware name,
  *   then by logical name.
  * </para>
  * </summary>
  * <param name="func">
  *   a string that uniquely characterizes the clock
  * </param>
  * <returns>
  *   a <c>YRealTimeClock</c> object allowing you to drive the clock.
  * </returns>
  */
 public static YRealTimeClock FindRealTimeClock(string func)
 {
   YRealTimeClock obj;
   obj = (YRealTimeClock)YFunction._FindFromCache("RealTimeClock", func);
   if (obj == null)
   {
     obj = new YRealTimeClock(func);
     YFunction._AddToCache("RealTimeClock", func, obj);
   }
   return obj;
 }