# Copyright (C) 2009-2010 IBM Corporation and Others. All Rights Reserved.
# 
# This is a sample ICU Plugins control file for Windows.
# It's also an example control file for any platform.
#
# This file can be copied to, for example, C:\SOMEDIRECTORY\icuplugins##.txt
#  where ## is the major and minor ICU versions (i.e.  just 96 for version 9.6.3) 
#  and C:\SOMEDIRECTORY is any directory.
# 
# Then, set the variable ICU_PLUGINS to C:\SOMEDIRECTORY
#
# Then, ICU will load the test plugin from either the debug or non-debug	
# plugin DLL (depending on whether ICU is in debug or non-debug state).
#
# To see the results, run the command  "icuinfo -v -L"
#
# The format of this file is pretty simple.
# These lines are comments. 
#
# Non-comment lines have two or three elements in them, and look like this:
#    
#  LIBRARYNAME     ENTRYPOINT     [ CONFIGURATION .. ]
#
# Tabs or spaces separate the three items. 
#
# LIBRARYNAME is the name of a shared library, either a short name if it is on the PATH,
#  or a full pathname.
# 
# ENTRYPOINT is the short (undecorated) symbol name of the plugin's entrypoint.
#  see unicode/icuplug.h for information.
#
# CONFIGURATION is the entire rest of the line. It's passed as-is to the plugin.
#
#
# This sample file tries to load 'myPlugin'. 
# It is in the testplug project. (You will need to rebuild either the debug or release version of this DLL.)
# The configuration string isn't used, but is just an example

## A high level test plugin that does nothing.
testplug.dll	myPlugin	hello=world

## A "bad" plugin that is low level but performs a malloc.
##  Sometimes this is desired, but, note that it may cause
##  later plugins to fail to load.
#testplug.dll	myPluginBad	hello=world

## A "high-level" plugin that does nothing. 
##  It will be loaded after the low level plugins.
#testplug.dll	myPluginHigh

## A "low-level" plugin that does nothing.
##  It will be loaded before the high level plugins.
#testplug.dll	myPluginLow

## A low level plugin that just prints a message when uprv_malloc  and related functions are called
##  Note, it cannot be unloaded. 
#testplug.dll	debugMemoryPlugin
