aboutsummaryrefslogblamecommitdiffstats
path: root/library/cpp/resource/registry.h
blob: a2143936f1d85ad09e143931abaa6fa653380b3a (plain) (tree)
1
2
3
4
5
6
7
8
9
10
            
                                



                                
                                              


                                                       
                                    


                  
                                                                            
                                                         
                                                                              
                                                  
                                                            
                                    



                          
                                                                
      

                                                                                  
 
#pragma once

#include <util/generic/string.h>
#include <util/generic/strbuf.h>

#include "resource.h"

namespace NResource {
    TString Compress(const TStringBuf data);
    TString Decompress(const TStringBuf data);

    class IMatch {
    public:
        virtual void OnMatch(const TResource& res) = 0;
        virtual ~IMatch() = default;
    };

    class IStore {
    public:
        virtual void Store(const TStringBuf key, const TStringBuf data) = 0;
        virtual bool Has(const TStringBuf key) const = 0;
        virtual bool FindExact(const TStringBuf key, TString* out) const = 0;
        virtual void FindMatch(const TStringBuf subkey, IMatch& cb) const = 0;
        virtual size_t Count() const noexcept = 0;
        virtual TStringBuf KeyByIndex(size_t idx) const = 0;
        virtual ~IStore() = default;
    };

    IStore* CommonStore();

    struct TRegHelper {
        TRegHelper(const TStringBuf key, const TStringBuf data);
    };

    int LightRegisterS(const char* key, const char* data, unsigned long data_len);
    int LightRegisterI(const char* key, const char* data, const char* data_end);
}